4 Hugues Ross Writes a Devlog: 10/01/2013 - 11/01/2013
Hugues Ross


Games I Play #10: Anodyne

I have very mixed feelings about Anodyne. It's been quite fun to play, but it's been equally frustrating in many parts. It plays a little like the original Legend of Zelda, from back in the days of the NES. Most of the gameplay is fun, but it's also littered with annoying segments, particularly in the form of jumping puzzles.

-The Good-

The environments are quite pretty, and diverse as well. I didn't think to take more screenshots while playing, unfortunately. Anyways, each area has a very nice and distinct feeling to it, and it often felt to me like they each had a story of their own to tell. The music adds well to the feel of the game. It tends to be fairly mellow, and never really takes over anything in particular. One big thing that I have to mention is that the game has a mostly-open world. Having played up to the final boss, I can definitely say that for most of the game you can choose the order in which you complete things. The game also has quite a bit of exploration, and there are plenty of screens that exist solely to show you something pretty. 

-The Bad-

Oh boy, where to begin... Starting off, it's one of the buggier indie games I've played. I've run into a number of little oddities. Once, I got teleported through a wall into a boss room(which saved me some time, but still...). Another time, my body appeared to be perpetually stuck in the air while my hitbox(and weapon) remained firmly planted on the ground. These bugs, and a number of other things make me wonder if perhaps the programmer was a bit inexperienced when they made this. For instance, the final upgrade that you receive allows you to swap tiles, but only seems to work in one screen in the entire game to swap a few blocks around. This, coupled with a few areas blocked off by pushable-looking objects makes me wonder if perhaps there was a pushing mechanic that was scrapped, either because of time constraints or programming issues. Another letdown was the jumping. When you get the ability to jump, it feels like many possibilities have opened. However, you can only jump over things, not on top of them. All of the tiny little ledges in the game are still completely insurmountable. You also can't attack while jumping(another missed opportunity), but you stop in place like you did! The hit detection when it comes to jumping feels pretty terrible. Oftentimes I'd fall into a pit when it felt like I'd made the jump. The eventual addition if speed boosting tiles just makes this problem worse, especially once they expect you to hit them at weird angles. When you get hit, instead of being knocked away from the source you seem to be knocked in the opposite direction that you're facing. This can make even simple obstacles a huge pain to deal with. Finally, most bosses can be defeated rather easily by just sticking to them and mashing the attack button. It feels like such a cheap tactic should've been noticed and removed, because it completely takes the skill out of the fight. It's not a big deal, but it's still a bit sad to see all of those interesting attack patterns go to waste thanks to a simple cheese tactic.

-Final Thoughts-

The game's not really as bad as I might've made it out to be. It was a big pain in the rear at times, but it also gave me hours of fun. I didn't quite manage to beat the final boss in time, but the fact that I played almost all the way through while making this certainly stands in its' favor. Lastly I feel like I should point out that the game is pretty much a giant fetch quest. To be fair, so were Ultima 1 and Bastion to some extent, and it's also a part of the general genre. Still, collection does end up being the main focus of the game, so just be aware of that. If you really enjoy these sorts of old-school, top-down, hack-and.....beat with a broom games, then you should probably check this out. Otherwise, you may want to wait for a sale or bundle to grab it.

You can buy the game here.


AMAZE - 10 - Some Gameplay Improvements

Well, I've made some good progress. After all of those engine updates, I spent a while making some more game-related updates.
Here, you can also see the graphical bits that I redid
First, I started implementing a basic equipment system, beginning with doors and keys. This change also allowed me to make solid objects in general, so I can now do some fun things like invisible walls. The box in the gui now shows whatever piece of equipment is being held, and the bar next to it represents either how much charge is left or how many of it you've got(depends on the item). Above it, I added a lives counter. To test it, I also added the ability for objects to kill you. If you die, the level will reset with one life missing, and you'll also keep the points you've gained during that level(I might change this). If you run out, the game resets. Next on the list, I'm going to work on proper animation support, and try to upgrade the player's graphics a bit. Following that, I'll make a couple of nicer-looking fonts and finish the top bar.

Also, the final project for my graphics programming class has been announced. I'll probably be finishing Space Douchebag for it, so you might not see too much AMAZE progress for a while.


Games I Play #9: Ultima I: The First Age of Darkness

I've played a number of games, both old and new, but this may be the oldest. Originally released in 1981, Ultima I was the first in what would be a 9-part series of computer RPGs. I own the first seven, and have been planning to play through them in order. Since I recently got Ultima I running via dosbox on Elementary, I decided to make it this week's game.

-The Good-
Astoundingly, there's quite a bit of
sci-fi in this game.
It's quite fun! I wasn't sure what to expect when playing a game from 1981, but the gameplay's not bad at all, if a bit simplistic. The general flow of the game is like this:
1. Find a castle, and get a quest from a king.
2. Go to a nearby town to stock up.
3. Either go find the landmark specified, or kill some specified monster deep in one of the game's many dungeons.
4. Return, pay the king for healing, get your reward, and depart.

Doing this, you get the items needed to use the time machine to return to the past and defeat the evil wizard Mondain. There's more to it than that, but that's the general idea. But what was that about a time machine? In reality, this game is an interesting blend of Sci-Fi and Fantasy. While most of the game is fantasy, with wizards and orcs and such, there are also aliens and spaceships. Heck, there's even a flying car you can buy! Back to gameplay, the game actually features a fairly large open world to explore, packed with castles, towns, dungeons, and mysterious landmarks. The dungeons themselves are not too large, but there are many and their layouts are unique.

-The Bad-
Speaking of the dungeons, you will get lost in them without making detailed notes of their layout. They feature many twists and blind corridors. When an enemy attacks you in one, you also have no idea which direction it's attacking from. You may get hit several extra times just trying to find them. Stat-wise, health is the only noticeable part of character growth. In fact, oftentimes I level up without even noticing at all!
There's something very silly
about that skeleton.
Unfortunately, Ultima I's graphics have not aged well, especially in dungeons. I realize that the limitations of the time required these more archaic graphics, but some of them look really awful. This shouldn't influence whether you play the game or not, but just be aware of this.

-Final Thoughts-
You should be aware that in its' age Ultima I is a very different RPG experience than what you're probably used to. With that in mind, this game can be a ton of fun with a pencil and a stack of graph paper. I recommend that you find a site with some general controls and explanations of how the game works before playing for the most enjoyable experience.
You can buy the first three Ultima games together here.


Blog Update: Theming?

You've probably noticed that the blog looks quite different right now. I've been running into a number of little technical issues with Blogger's nice dynamic themes, so I've reverted to the old style. It isn't ideal, but it'll have to do for now.

Sprites: AMAZE rework, part 1

As I mentioned a while back, I'll occasionally post new sprites I've been making in Sundays. I've got a few today from AMAZE.

After the recent jam ended, I decided to try and update some of AMAZE's graphics. So far, the game's graphics have been almost entirely composed of placeholders, and they look really terrible. Along with that, I've been meaning to try and improve my pixel art skills recently.

Here's what I've done so far:
First, I tried to make the generic looking 'diamonds' into some kind of cool blue crystal. It looks pretty, but I probably won't keep this. It doesn't really feel like what I was trying to go for.

The next sprite I went for was the awful giant coin. I tried to turn it into a few modest stacks of gold coins, and I think I succeeded very well here. This sprite is probably a keeper, although I may alter it a bit in the future.

Lastly, I started work on the tileset. Ignore the right half-it's just old stuff. So far, I've only redone the floor texture. It looks much better than before, but I'm still not too happy with it for some reason. For now, I'm gonna stick with it, though.

That's all I've got so far. I think I've made some decent progress in terms of art, but I still have quite a ways to go. Hopefully I'll iron out those pixel art skills with the next few projects. In the meantime, AMAZE is still progressing nicely and I should have plenty to write about on Friday.


Space Douchebag! - 4 - It Gets Shinier

Suddenly, the stars look slightly nicer
Well, the shaders are in. I've got some (not too great) bloom, as well as some new particle effects. Most notable of these are some nice trails that I've added to enemies. The screenshot to the left shows them off rather nicely, I think. Also pictured are the second enemies I've added, which I've dubbed 'mosquitos.' these light ships are slow and weak, but usually come in large groups. I also made the explosions look nicer along the way.
Currently, my goal is to add in the first planet within a week or two. The way I see the levels going is an initial space section, followed by the main level. Most of the levels will be actual planets, with various themes. The first will be a desert planet, which I've already begun work on. The fire effect shown in the screenshot will probably feature on some volcanic planet further down the line. The last thing that I want to get done this week is some kind of stacking powerup. Currently, surviving is rather hard but with ship upgrades I think it will be much less difficult, and the space section of level 1 will be in working order.

Games I Play #8: Beat Hazard

Well, I seem to have completely forgotten about this post somewhere along the way. Sorry about that!

Beat Hazard is a trippy arena shooter with mechanics based on your music library. As a song that you've selected progresses, the game's speed and your ship's power scale to the intensity of the music. Waves of enemies and bosses fly in from all angles, and bright, colored flashes dot the arena. It's certainly something to behold. As a quick note: In case you hadn't guessed, do not play this if you're prone to seizures! Still here? Great.

-The Good-

The song here is actually the Doomsday Darren Goes
Fishing boss theme. Short, but gave good visuals.
There's a lot to praise in this game. To start, the visuals are totally crazy. Some people may find the bright flashes of light and color annoying, but I love them. 
The perks that you can buy (mostly)reduce the difficulty significantly, so I feel like there's plenty of challenge for players if they want it. On top of this, the ability to turn just about any music file into a level is neat and will leave most players with more than enough content to work through. 

-The Bad-

Due to all of the action onscreen, sometimes the enemies will sneak up on you. Unfortunately, since colliding with an enemy kills you, sometimes you'll suddenly die with no warning. If you play cautiously, it shouldn't be too much of an issue but it can still be a real pain.
Boss fights are usually ok, but sometimes if they last too long enemies will start spawning before you're done. One final gripe is that navigating the song menu to find songs feels a bit annoying. Thankfully, it gives you the option to use your OS's default file dialog to find them.

-Final Thoughts-

Overall, this is a pretty good game. The crazy graphics and fast-paced gameplay make for great experience. Unfortunately, the small annoyances really detract from an otherwise great game for me. Still, if you like twin stick shooters you should definitely give this a try.

You can buy the game here.


Game Engine Jam, Days 7-10 Recap

As I write this, the jam's about to end. The past few days were a bit slow, but I've gotten a thing or two done. I've added a basic GUI(All it shows so far is the score), and text rendering works fine.

Speaking of text, I was originally going to use Allegro's built-in text drawing stuff, but it wouldn't work no matter how much I tried. In the end, I just added a new asset type for fonts, and a simple function to draw them. In the process, though, I broke a good bit of asset loading code, and had to do a bit of restructuring. It all works now, thankfully. Anyways, I promised screenshots last time so I'll post a few. The last picture I put up was from quite a while ago, so it's probably a good idea to show some stuff off now:
As you can see, the levels scroll pretty nicely. There's still a bit of work to do
on that, but it's coming well.
The gems on the left side of the level are a trap. Instead of
adding points, they take some away...
A bonus room. You reach it by nabbing the robot in the last screenshot,
rather than just going to the level exit. Also, he gives you 100,000 points
because he's just a good guy like that.
Most of the graphics are just quickly thrown together bits of placeholder art, but I think you can see a pretty big improvement in terms of content compared to the last screenshot I posted.

This jam went really well for me. I got way more done than I believed I could in such a short time. I think I might spend a while updating the graphics next, since right now this stuff looks really bad. After that, it's back to gameplay features.

Finally, I may or may not finish my Games I Play post in time for tonight. If not, expect it tomorrow.


Game Engine Jam, Day 6 Recap

Well, adding a view was a tad bit easier than I thought. It's not too well done, but it works for my purposes. At this point, I'm going to try not to refactor anything until the project is near completion so as not to spend forever constantly tweaking everything. If you're wondering where the screenshots are, I promise to start putting some up with the next update. I've also started working on the GUI graphics, but I'll leave that subject for later.

Anyway, since I've added quite a bit I'll make a quick list of what's been done during the jam:

  1. General tileset import/export improvements
  2. Fixed 'vertical line bug'
  3. Collision Detection
  4. Pickups (Various bonuses to be grabbed for points)
  5. Level exits and ingame map switching (I can now just build levels and easily link them up)
  6. Scrolling Viewport (Levels can now be any size, within reason)
That's a pretty nice list! I've got around one change per day so far, so I'd call this jam a massive success already. With these new changes, I feel like I'll soon be able to spend more time just building levels and adding polish. In reality, I still have a fair bit to program but the project still feels a bit more finite now.


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.


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.


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.


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.