4 Hugues Ross - Blog
Hugues Ross

10/9/13

Game Engine Jam, Days 2-5 Recap

The jam's about halfway done, and I've been away for a while. Where's Games I Play? What's up with AMAZE? Hopefully I can answer those questions.

First off, I missed the last Games I Play post(and a day's worth of jam work) in order to dye my hair. The dye came out well, in my opinion. Under some light
I probably should've shaved for the photo,
but I was short on time.
conditions, it almost looks like it glows. Back to the topic at hand, this is also why I didn't get a chance to make a Games I Play post. I'll still write an update on Friday, though. I got quite a few interesting things done on Space Douchebag, so I should still have plenty to write about. 

Finally, progress. It took longer than I'd hoped, but you can now grab pickups for points, and the level exit will take you to the next level like it should. It took hours of struggling, and these features feel quite hackish unfortunately. Still, they'll do for a simple project like AMAZE.

My next goal is to add a scrolling view that follows the player around, and then maybe a GUI. Then, I might try and add different resolutions and fullscreen. I might also add a title screen and main menu. We'll see, but I think these changes will easily carry me to the end of the jam.

10/5/13

Game(Engine) Jam, Day 1 Recap

I spent the first hour or two today working on trying to implement my game idea into my partially-completed engine(The AMAZE one). That pretty much failed. The engine isn't ready for a game jam, and it definitely shows. I briefly considered just tossing something together from the ground up, as usual, but then I stopped myself. Wasn't the entire point of this engine avoiding just that??? So, here we are. I'm going to scrap that game idea, and switch focus for this jam. Instead of a game jam, I'm going to make this a game engine jam.

While working on AMAZE, I've had an ever-growing list of things to add to my engine that I've either deemed low priority, or have just been slacking off on. I've decided to see how many features and fixes I can give this engine in the span of ten days. If I'm lucky, it'll end up in a state where I can just about finish AMAZE with it and move on.
Now that I've explained that, here's what I got done today:
-I started off nice and easy. I'd been meaning to make my asset packager use tsx(tiled tileset files) to get tileset information, like tile size. That works now, and I even took a while to make the tileset packaging code more readable. If I ever need to go back to it later, it should be easier to work with.
-Later, I decided to fix a really annoying bug. If you read this post, you probably noticed the vertical lines in the tiles. I said they were nothing, but on closer inspection they actually were the result of a bug. Staring at those lines was making my eyes hurt, so I found the issue and fixed it. Turns out, when I was loading the color data I was skipping the first two bytes. This also explains why the color order seemed to be jumbled. Tomorrow, I want to finish collision detection(finally), and possibly work on view scrolling. Here's a screenshot showing the correctly working tiles:
Remember that most of this is just placeholder art
While I'm at it, here's something that I never got to post about: The player can no longer walk through walls. I got that working a while ago, but the retrospective(and the jam) got in the way of part 10.

10/4/13

Jam Begins - Change of Plans

The theme is "Music Video ... Game." The idea is to make a game based on a song. I now really want to make a game out of this.

EDIT: All right, it's been a while and I've begun work.

So far, It looks like I'm taking a wonderful old piece of american music and translating it into a sci-fi shmup where you battle the armies of Neo-Canada. Even I'm not entirely sure where this is going, but it will be interesting.

So far, the working player sprite looks like this:

Hmm. Maybe I overdid it with the patriotism. I was going for that kind of thing, but the stars just feel too over-the-top.

A Short Diversion

AMAZE is getting put on hold for another week, but there's a great reason: Tonight, a 10-day game jam is starting. I'm doing things a bit differently this time, though. Specifically, I'm not making a game. 

Let's start at the beginning. On Wednesday, after class, my graphics/engine development professor gave me a challenge for Space Douchebag! Since this week's assignment is to implement a particle system, he asked me to make a certain improvement to my particle system. Specifically, he asked me to make a particle effect designer, and setup my system so that the effects were externally loaded and could be changed on the fly. This sounds like a lot of fun.

The EDC, a game dev group at Champlain College, just recently announced an informal game jam, and pretty much said that you could make whatever, as long as whatever you were making wasn't a school project. To me, this seems like the perfect opportunity to develop a neat tool. 

I haven't decided what to do with my schedule during game jams yet. I'm thinking that It'll depend on the jam. I'm going to put off the second programming post this week, but I think I'll still make the usual posts during the jam's duration. When the tool is finished, It'll support both Windows and Linux. I haven't decided whether I'll be making a Mac version yet, but it seems unlikely.

10/2/13

Space Douchebag! - 3 - Shiny Things

Well, week 4 ended and week 5's just about done too. Let's talk updates.
Space Douchebag! is coming along rather well, overall. Last week, I added in enemies and got things set up so that they could spawn in the background. You still couldn't interact with them at all, but it was a step in the right direction. This week, I made Space Douchebag! into an actual game by letting you shoot them. Score has been added as well, and enemies begin spawning at greater speeds as time progresses. They can kill you too, though the collision detection on your ship is a bit spotty.

That's great, but there's one other piece of news that makes me very happy with myself: As a surprise for my professor, I wrote an entire particle engine from scratch ahead of time! Take a look:
I realize that this isn't the best picture, but taking
screenshots of explosions is hard.
The explosions look quite nice in motion, and have a nice cartoon vibe to them. I think I just managed to hit a sweet spot with the settings. In case you don't quite understand what a particle system is, allow me to explain. Particles are tiny, simple objects that don't generally interact with anything else, and die soon after being spawned. They usually are created in large groups, with some randomness, to make various effects. This could be fire, explosions, rain, halos around bright objects, sparkles, smoke, and many other things. Particle emitters are simply objects that generate these particles, usually from a set location. The way my explosions work is that they fire off a ton of particles for a split second, going out in random directions. the particles, initially orange, slow down and turn gray before finally disappearing. This makes a nice smoke ring, as shown above.

For this week, we were not only required to make a blog post about our work(which is why I'm posting now of all times), but we also needed to implement a design pattern. I'm not sure where exactly to start with these things. They're quite cool, but difficult to explain. I suppose you could equate them specific plays in chess. Someone smarter than you came up with some elegant strategy, and now it's accepted by most as a very good move. I couldn't really think of a good way to implement any of the design patterns that I knew, so instead I designed my particle system in a manner similar to(though not exactly the same as) the decorator pattern. Essentially, I made my particle emitters particles. They act like particles for most purposes, in fact. The only difference is that they can make particles themselves. This means that in order to make more complex spawning patterns, emitters can make more of themselves, and tell them to move in certain ways. Then, the new emitters can make particles however they want. Here's a simple illustration of how it works:

Normally, this would be a huge pain to get working properly. However, here it's as simple as any other particle system. So while I agree that this setup isn't exactly the same as the decorator pattern, I feel that it demonstrates the same general concept(making additional functionality for an object using related objects).

Finally, I was going to add shaders this week as well, but I ran out of time thanks to a few other school projects. Maybe I'll do that next week. As promised, there will be a dev update for AMAZE on Friday.