Aftermath of Zombie Mansion Alpha 1 Build

July 18, 2014 at 12:40 pm (Game Development, Games, Graphics, Java, JavaScript, Processing, Programming, Video games) (, , , , , , )

So at this point in time I’ve had multiple people play through my game demo. The results were actually better than I thought. I think only one person wasn’t able to run it (still not entire sure why, but that’s future Jake’s problem now). There were a couple major issues, but those were found and fixed as well. One of the bugs was that I didn’t include the assets for the 3D objects, so when the players entered the room with columns, the game crashed. There was also some scripting errors driven by not having necessary images wrapped up in the resources archive. Logging definitely helped out there.

The last major issue is unsolved, but lies with some code I threw together for the level selection screen. I think some of the click events aren’t going through, or it’s not loading the levels properly. I think this may have something to do with that particular tester running the game through a zip file though. I was shocked to find out that it worked period though.

I got some pretty decent feedback from one tester in particular though. He gave not only bug reports, etc, but opinions on controls, aesthetics, and game flow as well. Most of those things were explained away as “placeholder” stuff, but still; it was useful information to know what a tester/player is thinking when they see that stuff. When I show most people my game, I need comments like “looks neat and retro” or “I like the camera spin feature”, but not enough people pay attention to tiny details.

Anyway, that’s the update. I haven’t had free time to cut a second build or to work on new levels or anything.

Permalink 2 Comments

Zombie Mansion: Alpha Build 1!

June 23, 2014 at 2:54 pm (Computer Science, Game Development, Games, Java, JavaScript, Processing, Programming, Rant) (, , , , , , , )

So I’ve finally gotten a build of the game working! I can’t post it yet for a variety of reasons, but I’ve sent the build out to some people to try it. It’s mostly to verify that the game works as expected and is stable. It just features the level I showed in the previous videos and a couple of extra smaller areas.

Last Saturday night I had a few panic moments when the builds weren’t working as expected. I had an issue where the resource unpacker code I wrote wasn’t actually unpacking the images from the compressed assembly; it turns out it was still trying to load them from the local directory. The issue has since been fixed thanks to all of the logging architecture I recently put in. There’s still several areas that could use more logging, but there’s enough now to sort out common issues.

Another bug that logging helped uncover was with the asset manager system. I have code that manages any images and ensures you only load one copy into memory. This helps to keep a cap on the memory usage of the software as a whole. However, there was an issue where I had slashes in the reference indices that were going the wrong way! This is a pretty common issue with programming to be honest. Devs frequently write code for their own system and then find out that nothing works on other computers or operating systems. Thankfully, the logging system helped uncover the fact that it was double loading certain resources.

Now if I could just muster the effort to change the spelling mistake I made with naming the logging variables…

Permalink Leave a Comment

Stack-Ranked Lists and You

March 24, 2014 at 9:25 am (Computer Science, Game Development, Programming, Rant, Teaching) (, , , , , )

If you are a professional software developer, you may be familiar with development methodologies. You may have encountered such beasts as “Agile”, “Waterfall”, or if you own a time machine, “Extreme Programming”. These are all just different ways of organizing your work. They let you decide on what to build and give you an idea of when to build it. They’re handy things to utilize and if done right, they’ll make you look younger*.

      *May not actually make you look younger.

So why am I writing this? Well, it isn’t to evangelize the way you should change your life and use what I suggest. It’s more to talk about one specific technique that’s pretty low cost and can help your cluttered development life, even for small side projects. Furthermore, I’ve found that it can help with motivation issues and help you force yourself to finish what you start. You’ve always finished your side projects haven’t you??

What I use now for my projects is a stack-ranked list. This is a list of all of the individual features that I want to implement in my software put in order of importance. Again, if you are a professional developer, you will probably begin to smell the Agile backlog here, but this is just a small slice that can offer a lot of value. First I will talk about the list itself and what that should look like and then I will discuss the idea of importance.

The feature list should be kept fairly granular in order to be things that you can achieve in a relatively short period of work time. You definitely shouldn’t go into such details as “change while-loops to for-loops”, but you should also try to break up tasks as big as “write rendering engine from scratch”. The idea here is that you can track what you need to do in an orderly fashion, but also when you’ve completed them, you get to check them off your list! Don’t sneer at this concept. Having something tangible (I mean, other than working code) that says you’ve completed something is a big deal. It’s a way to trick your brain into thinking it’s being rewarded. I go as far as to not even delete the task from my list, but I mark it in a different colour.

Lets switch gears and talk about importance. It isn’t a difficult subject, but it is ambiguous enough that it should be defined a bit better for this situation. To clear things up, “importance” is whatever you want it to be. I mean it. I choose importance to be not just how important the feature is to my final project, but what order it should be done so that other tasks can be completed. If you give each tasks a proper importance value (or “stack-rank”), then you can even do such exciting things as picking milestones to release demos for.

Now, how do we do this all? What does it actually look like? I use a Google Docs spreadsheet for my feature list. It has auto-save and it is accessible on any computer. I typically use different computers, sometimes in different places, so it makes sense to me to have access and not have to worry that my version is the most up to date one. In my spreadsheet, I have the following columns: Stack Rank, Task Name, Task Status, and Additional Notes.

For the stack rank, I’ve made it be just a number. 1 Is the most urgent, and 50 is the least. The range doesn’t actually matter; it’s just a way to sequence your features. The task name is a short description of what the feature is. Easy. The task status is a column that I’ve written conditional formatting for. When a task is complete, I write in the text “Completed” and the cell turns green to show how awesome I am. If I want to keep track of what I’m currently working on, I write “In-Progress” and it turns orange. I sometimes use a “Bug” status that turns red if I’ve broken something and I want to specify that it’s a regression to previous code, but that’s getting a bit too in-depth. Lastly, I have an “Additional Notes” column for quick ideas on how to complete my task.

Here’s some examples. I’ve been working on a game as a side project. It’s a zombie shooter/puzzle/adventure/overly complicated concept game. Here are some of the tasks I have had in my list:

2, Shootable Urn,  Player can shoot them and they shatter
6, Title screen,  Landing page and player goes here when they die
14, water dripping effect,  Use particle system
25, Melee attack,  Necessary for the game but not to get other things done

These are my tasks. Notice that melee attack seems like a pretty importance feature, but it’s at the bottom. Sometimes my importance value is more based on how fast I can get a feature completed. The idea is to make a complete game, and some features can end up using an open-ended amount of time. The melee feature was an open-ended one in this case. I had to do new character art, I had to add in the game mechanic, I had to playtest it and make sure it made sense, I had to balance the damage, I had to find SFX for it, etc. Shooting an urn ended up being super easy. I subclassed a Billboard Game Object class I already had and whipped up some art for an urn and a broken urn.

To close this lengthy article, what we all want is to work on interesting things and see them in a completed state. It’s fun to make them and if your idea was good enough, it’s probably fun to play with it. Stack-ranked lists could be something that could help you. Keep in mind it’s an open concept, so make this technique yours. Customize it to work better with your workflow. Say you have a small team, perhaps you’d want a column to say what Type of task it is: “Art”, “Programming”, “Music”, etc. Maybe it’s better to just write a developer’s name next to the task for a group project. Whatever. If you struggle with getting things completed and staying motivated, at least give it a try.


Permalink Leave a Comment

Back in action

October 16, 2013 at 8:54 am (Computer Science, Games, Processing, Programming, Video games) (, , , , , )

After a surprisingly lengthy hiatus, I am back at the game. I’ll be making more posts in the near future about the game I’m working on in my spare time. I started using an app I bought on Steam called Artisy: Draft, which has been helping me get my designs together. For those who haven’t been following along, I wrote up a nifty game engine that handles 2D sprites in 3D game environments. It can do pretty much any type of game that would fit that description (it uses Box2D for physics, so it’s neat). I have had a few games in the pipes, but my stumbling block has been lack of direction with respect to the game design and flow. Mostly, I’ve needed to make levels for my games, and I’ve had no clue what to put in them to make them interesting.

So with my zombie shooter game, I have some new direction and I’ve plotted out some levels to at least help me get a demo up and running that I can try to polish off and make presentable. The screenshots on this blog are pretty out of date, so I’ll be working towards getting a better project description and more screenshots (including more animated ones!)

Permalink Leave a Comment

Tactical Game Engine Improvements!

August 2, 2012 at 3:38 pm (Computer Science, Games, Graphics, Processing, Programming) (, , , , , , , , , , , )

So in my spare time (I have a real-person job at a software company now), I’ve been working on that game I mentioned in a previous post. It’s a tactical/strategy game where you give orders to a team of units and do battle with AI-controlled enemies. The proof of concept demo was in working shape, but it was super ugly and only supported 2D stuff. So while I could test out levels and combat features, I wouldn’t be able to show it to people and expect good feedback.

So I set out to make a visually-appealing version of the software so that A) I’d have a platform to plug in new gameplay ideas and features and B) I could show it to people and have them think it was an actual game. My ultimate goal in the end is having a full game (including story, music, and art) that I can release to the general public and have them play. So after a bit of work on evenings and weekends, I now have it in the following status (also, I should note that this was all written in Java and Processing (p5):

-3D rendering. Similar to how some of my previous projects work; I’m doing 2D sprites rendered in 3D. This allows the user to rotate the camera around the map and have it work in the way they’d expect. I have to finish up the render pipeline details, but most of this is copy and paste from a previous project anyway.

-Working gameplay. Most of these components were copy and pasted from the previous iteration. However, I’ve made substantial upgrades to how the system works. Also, now the game events are handled in a way that allows the game to flow similar to a real game of the same type. For example, when the AI makes a move, it no longer moves everything at once and then starts the player’s next turn. Instead it shows the player each action it took (while allowing the player to skip ahead).

-Level Editor. I’ve added a built-in level editor and it not only has a whole whack of features, but also is designed in a way that allows new tools to be added easily.


Future features:

-Particle system. Allows explosions and powers to look nice.

-Camera cutscene paths. I have some code written for Catmull-Rom curves that would allow the camera to slide along a path created in the level editor.

-Player profile system. Allows a player to select a profile on their system so that multiple players can play the same game without overwriting saves.

-Character customization screens. I want to have an extensive menu system to allow character stat tweaking, etc. between battles. This is mostly game design/art stuff, but the GUI code might need more features.

-Game story! I have a fair bit written up for the story and characters, but I need to iron out plenty more of it. I also have to figure out if I’m going to go with episodes that are easier to write for and make (also in case nobody likes the game, I can save resources).

Permalink Leave a Comment

Working Tactical RPG Game

May 7, 2012 at 4:44 pm (Games, Graphics, Processing, Programming) (, , , , , )

So during my search for a job now that I have a Masters degree, I’ve been working on writing code for a tactical RPG game in the same style as Final Fantasy Tactics, Fire Emblem, Suikoden Tactics, etc. I now have a working game essentially with basic menu screens, etc. for facilitating the gameplay. There is a level editor built into the game so it can be used to create maps, etc for battles, and there is a fully functional combat system which includes abilities, buffs, victory/loss conditions, and everything else you’d expect from this type of game.

At this point in time, I need to make some minor improvements (upgrade menu system, etc.) and the addition of some more features (conversation windows for example), but the main thing that needs to be done is the level design, storyline, and game art. This is probably a good problem to have, since the programming aspect is generally time consuming. I already have ideas for the storyline, although the dialogue and other details might take up time. As for the game art, I have some old sprites I’ve prepared for this type of game, but having professionally made animations could be nice. The levels could be either interesting to make, or horribly time consuming. So we’ll see how that goes.

Permalink Leave a Comment

Interdisciplinary interests

April 22, 2012 at 1:06 pm (Computer Science, Graphics, Programming) (, , , , , )

So since I’ve defended my thesis (and it’s been archived successfully), I’ve been trying to think of new interdisciplinary areas of application for computer science, graphics, and visualization. A few of my interests (among many) lie within psychology and forensic sciences, but being locked in the computer science field, it is difficult to network with experts of those fields. So if anybody happens to notice this post and is interested in toying with some ideas then fire me an email/reply.

Permalink Leave a Comment