The last few months I’ve been extremely busy working on the new expansion at Smith & Tinker. Unfortunately as of last Friday I’m back on the job hunt for a game programming position. I was part of a group layoff and at this time, I’m going to keep the details undisclosed. Smith & Tinker is a company with great culture and people. It was an absolute joy being part of that team. But hopefully, I’m now off to new and better things. If any of you are in need of a game programmer, go ahead and take a gander at my resume here.
While job searching, I’ve decided to go ahead and start learning AS3. I think this could prove to be a smart choice for my career – allowing me to tap into new job opportunities. Getting a good handle on AS3 should come relatively quick. Then when I get to big boy status, I’ll be posting up some small examples on here to demonstrate the knowledge I’ve gathered up. I figure I could provide some insight and feedback on my feelings with AS3 on future blog posts.
I’ve never made a blog post about game music, so I decided to throw that subject on this one. I’m an advocate in collecting video game soundtracks and I continue to add more to my extensive library as the days go. I consider game music to be an amazing art form and nostalgic bliss. There is nothing better than having the Black Mages blaring while coding like a maniac. Or to have a soft non-intrusive melody slowly take you in as you tap into your problem solving juices. I’ve been listening to game music for a long time. I want to share some of my recent favorites with you guys and hopefully you like some of them!
This last month or so has been pretty hectic. For personal and professional reasons I decided to leave WishB and set out to Washington to join the Smith&Tinker team as a Unity Programmer! Washington is lush and gorgeous. I know I’ll be very happy here. I’ll be helping Smith&Tinker work on their Nanovor property. I’ve only been working here this week, but man this product is looking amazing! Definitely something for you people to look out for.
In other news: I recently had an interview on the Tech Republic Blogs! Go ahead and give it a read.
Still hard at work on my own iPhone game and engine (HowlJerk Project and the HJEngine). I’ll have to dedicate a new post later on for all the updates with that project. Also: I’m still in need of a talented pixel artist that’s interested in getting her/his work in an iPhone game.
At WishB, LLC I’m constantly immersed within the Unity3D IDE. I’ve only been working at WishB for 3 full months now. Before I started working here I knew nothing about the engine, so I’m still fairly new to it. There are definitely some things about this engine that I hold up on a pedestal of greatness. Then on the other hand, there are some things that make me want to do a barrel roll into a swamp full of alligators.
The first thing to note: this engine is very easy to use. The small amount of time it takes to get something moving around the screen is super impressive. The developers made the engine so that non-programmers can just dig in right away and start scripting in-game behaviors with no real programming knowledge needed (Eh, maybe some I guess). Of course, that kind of approach is definitely double edged which I’ll go over a little later. Second thing (sort of extending the first step): I love how the engine handles resources (textures, models, audio, etc). It’s practically just a file drag-and-release over the IDE and it takes care of all importing and stores the raw file within its project directory; that’s super bad ass. Last thing: The Unity API structure is like a C/C++ hybrid. It has solid encapsulation with very static access. It’s typically filled with static properties/methods that are contained within class x. OOP-aholics may look down upon this. I consider myself a definite OOP, but I really like how Unity constructed its API.
Now I’ll go over some of the things I don’t like about the Unity Engine. First: lack of lower level control. Now I mentioned earlier about how non-programmers can pick up this engine and start getting things to move around the screen in a short amount of time. People who don’t program probably haven’t touched any C/C++. If you wanted any kind of object creation,management, etc, in said languages; you had to do it all yourself. Doing all that teaches you a lot of the basic guidelines on how to create a real time application. Unity takes out a lot of that control and gives you a much easier time to get things accomplished. There are times where this has bitten me in the ass. I absolutely loathe not being able to have control over the initialization order of scripts. Maybe some people would ask why. Let me explain – when initializing data in your script you must override Awake() and/or Start(). You will run into problems if you are assuming an object exists within the hierarchy while you are attempting to grab a reference to it. You see, scripts initialize in random order. If you have any dependencies between modules, you can’t count on handling that during initialization time. That really sucks. It’s now standard practice for me to re-grab references during runtime if I couldn’t get them during initialization. I honestly could go all day on this, but I digress. Second: I’m not a fan of the lack of runtime Prefab creation. Unity was definitely made for everything to be created and set up within the editor. The only way you can create Prefabs during runtime is by using the Resource.Load() method. The big hitch on that is that the prefab has to be within the /Resources subdirectory within the project. Eh, I don’t like that. Now, the last thing: there is no search functionality within the hierarchy of objects in the current scene. You’re able to search for all different kinds of resources in the project directory, however (thank you!). But why can’t you be able to search for things within the given scene hierarchy? If you’re looking at a Unity scene that you haven’t seen before and you’re trying to find where a certain script exists – have fun amigo. Especially if the scene is super complex. I’ve had to search for things numerous times in many different scenes and it’s always been a pain in the ass. I don’t see why Unity can’t add this kind of functionality into the Editor. I wonder if Unity 3 does anything about this.
Work has been taking up a lot of time. Of course I enjoy it, because I get to code all day (in C# though, blargh)! The downside on having to dedicate long hours at work is neglecting my precious time on my own game! I’ve already made a couple posts about it, but I’m still working on “Project HowlJerk”. I normally work 1-2 hours every week night and if possible I spend all the time I can on weekends. My last couple updates on the game have been purely technical regarding the engine and level tool. I of course still have been doing many revisions to different parts of the engine when the game calls for it. If you want to test how solid your engine is – you need to make a game with it. Only then will you truly cover all the different things it needs to do. I’ve definitely been learning a lot and I’m having so much fun doing it. At the end of my time at Full Sail, my Final Project team and I had to make our engine from scratch to handle a 3D game. So, I’ve had some experience doing this before. Back during that time however, I was only responsible for a portion of it. With the HowlJerk engine, I’m responsible for everything. I’ve been writing lots of game code recently. I always find writing game logic the most fun. Gotta love it! While developing the game, I’m also having to make sure that the design of it remains true to what I’ve conceptualized at the beginning. Design changes do happen, and I’ve already had to do just that a few times. Game design will never perfect. I’m also on the look out for a pixel artist. Let me know if you’re interested! I’m going to go ahead and include a concept scene from my game to give you guys some clue on what’s happening with it. Yes things are moving a little slower than I want them to be – but they are moving nevertheless. Once again – let me know if any pixel artists are interested in helping!
I’ll try to keep blogs a little more frequent. Until next time…take it easy!
The last month has been extremely busy. Having to juggle a full time job and the development of my iPhone game has definitely been interesting. I personally feel that during these times a huge line gets drawn across and a simple question determines what side you’re on. Do you really want to make a game? I constantly hear people talking about their “new game they’re starting up” or their “side projects”. It almost turns out that I never hear anything else about those games or projects later on. I’d like to think that the passion I have for making games and programming is what separates me from other people. With all that said, I’ve been making steady progress on my game! I’ve implemented tons of game code and engine additions/fixes. I’m actually going to talk a little bit about what improvements I’ve made to the render engine. Maybe somebody will learn something like I did? Now onward…
Caching – it’s a term that’s used all the time. I can naturally assume that all the big dev companies have all kinds of caching within their systems. But for us small time guys that haven’t really gotten there, how often do we practice this? Game development is all about maintaining a balance – a constant monkey on the programmer’s back. Speed or memory? Ever since the beginning of the HowlJerk engine, I’ve been researching on where I should be utilizing these practices. This definitely had to come into play with my render engine and the texture handling associated with it. I have most of the systems within my engine scripted. This also goes for texture creation. I have a pretty nice way to handle texture management. Textures are all stored in a map. The way you access those texture is by an object handle that the texture is associated with. I have it set up so that you can specify as many textures as you want per object. Now, an issue that I wasn’t aware of at the beginning was possibly having to load the same texture for two different objects in the same scene (you’d think that I would notice that earlier). Even if the same texture was loaded in different scenes, there’s no reason for having to load the texture twice. I had to rework some things, but I ended up being able to get my engine to handle texture caching from script. That will speed things up . That all pertains to creating texture data, which is done in the initialization process (if you’re doing it anywhere else, you’re doing it wrong). My render engine is pure openGL ES, so the caching methods that I’ll be talking about will be referring to that specific API. Every frame I was doing a texture bind to every object that gets rendered, as well as, giving the object its color. If you have 5 objects for example, that’s 5 texture binds and 5 color calls in one frame. That’s definitely not good, if you can avoid it (meaning, they are the same objects with the same texture and/or object color). Your computer can definitely handle that with 5 objects, but it’s likely that your scene will grow. Scale that up to 50 objects and you’ll definitely be seeing a hit on your FPS. To alleviate this issue, I created color and texture bind cache maps. They just keep track of what the previous texture/color that was used last. With this approach, and if you have 5 objects with the same texture and color, 5 texture/color calls just went down to 1. This can definitely go a long way. In the future I’m wanting to implement this kind of approach for more things than just textures and color calls. To be more specific, anything that has to change the state of openGL every frame.
Last year I started working at Slipgate, and unfortunately within a short amount of time, was part of a massive layoff group that happened mid October. Working at Slipgate Ironworks was definitely a learning experience of how workflow and project direction can change drastically. With my first short lived job behind me, I knew I needed to make my own fortune happen. When I say “fortune”, I mean getting my passion to create games exposed. To create my own game. This is a definite sign that indie game development needed to go underway. This is how HowlJerk games was born. In addition to my indie game development, I’ve been on the job hunt for a game programming job. The last 4 1/2 months of juggling game development and job searching has definitely been a tough one. With all that said, I’m happy to say that I’ll be starting as a game developer for wishb, LLC starting March 1st. I’m very excited to be working on their original IP and within the Unity technology that they are utilizing.
In other news, game development at HowlJerk games is going great. HowlJerk games is currently comprised of four people; two programmers and two artists. I’ve added a pretty big revision to the HowlJerk GLE (Grid Level Editor), HJSoundEngine and CocoaFileSystem. Not only that, but us two programmers have begun coding “Project HowlJerk” with the HowlJerk engine. The artists are busy pumping out UI concepts, as well as, pixel art assets. We’re definitely trucking this stuff out, HowlJerk style! HAWOOOOOOOO!
I’ve updated the HowlJerk GLE screen shot, to include the revision changes I made. They include: object layer management, list population via scripting, user note graphic representations and having the tool compatible in all different resolution settings.
Project HowlJerk is moving along steadily, and that’s all we can ask for! We have found a very talented Pixel Artist that has gotten onboard and I’m very excited to be working with him. As the title applies, we are now needing a Sound Artist. I would preferably want somebody who specializes in sound effects. Of course music is needed, and if you’re solid in that respect as well, then all the better. I look forward to hearing from some sound artists.
Here are two songs that I want to serve as a guideline to those that are interested. I’m definitely by no means expecting compositions that are to match masters like Mr. Uematsu or Mr. Kondo. These two songs definitely fit the bill on the kind of atmosphere I want to bring to the game, in terms of audio.
My iPhone game is now at the point where the foundation is built. It has graphics, animation, sound, and a level design tool. I also have a pretty fresh design as well. I’m ready to start working on the actual game code now, and I really need a pixel artist for the game.
I know the world is full of excellent artists who are currently working at outsource companies for the likes of EA, Ubisoft, THQ, etc. There are also a lot of you out there who are going to art school, and would like a side project to work on.
I’m the guy you need to contact – let’s make a game! I need your awesome art talent to make this game amazing.
Edit: Pixel Artist was found. Thanks to all those that were interested!
I’ve been working on a multi-platform game engine since November 2009. The iPhone is the first platform and I’m building tools on OS X for my iPhone game. During the lifespan of Project HowlJerk, I’ve obtained decent experience with XCode, Interface Builder, Objective-C, etc. Instead of using Quartz to do the 2D drawing in the HowlJerk engine, I went with the lower level openGL|ES API. So, whenever 3D extensions are to be integrated into my engine, it will be an easy addition. Some of the features that my engine currently has: Multi-platform capability, openGL|ES rendering, 2D animations, openGL bitmapped fonts, custom math library, level creation via HowlJerk GLE, audio engine that is powered by openAL, and more. I’m trying to achieve an engine that contains a surplus of scripts to make game development as RAD (rapid active development) as possible. This engine supports scripts for resource files, textures, animations,
object prototypes, sounds and variables (great for debugging). The HowlJerk GLE (Grid Level Editor) is a nice and simple level creation tool that the engine will be using. The HowlJerk GLE is currently in BETA right now, so more extensions will be added when game development calls for it. The tool will be able to export .hjm (HowlJerk Map) files that will contain information for the background, object placement, and navigation data. The tool will be of major importance for level and menu creation. On a second note – my current iPhone game project has an interesting and original game design that I haven’t seen before. I’m very excited about it, and I’m starting to round up a few developers (mainly artists) to assist me.