Skip to content

Posts from the “Video Games” Category

Super Mario Cuckoo: Initial Framework

For a quick recap, you can read the introduction to this series here: Making a Game for My Kids

initialframework

Initial Framework

In all the projects that I have started before, I typically begin with a blank slate. This is likely due to my love of engine code and understanding the low level of how everything works and fits together. However, this does mean that I have to implement everything myself, and since I start pretty much each project with nothing, that means I spend a lot of time rewriting the same things. In addition, since each time I am generally trying some new technology or methodology, this means that I am often not able to reuse code that I have written before. Though since I am typically doing the project to learn and not necessarily to produce something, this usually isn’t too much of an issue. However, this time I actually aim to complete a game (or at least a full level or two). So I am finally looking at a couple of third party libraries to help with some of the development for the parts of this that I really don’t want to bother with anymore. I will detail these in addition to the selection of technologies that I am using, though they are more to facilitate development than actual learning tools. However, it is good experience to work with what other people have produced (and that are being used by several others) to get a good idea of other ways to design systems and APIs.

I plan on developing this for Windows, though my selection of technologies isn’t specific to this platform, so if things get far enough along I might port it elsewhere. After a recent computer upgrade, I have enough leftover parts to get another computer going, so creating something for Linux is a distinct possibility. Especially with the coming of SteamOS at some point, it might be a worthwhile exercise in the future. I will be using Microsoft Visual Studio 2013 Express since it is free and should be good enough for my needs (though they still don’t have a breakpoint window, which I find an odd omission). Since I am only planning on making simple 2D based games, I likely won’t need the tools for heavy threading work 🙂

For my general code architecture, I will be using a light object oriented approach. This is still early enough in development that I might switch it up and there is a good chance that I won’t really follow any one specific methodology other than KISS. Since I will be using a scripting language for heavy development for the first time, I am not quite sure the best way to approach things for gameplay, but that is part of the learning process.

I plan on keeping notes and details on my wiki here. Though I also plan on blogging about the development process along the way as well, so keep an eye on this space as well!

cpp11

C++11

I chose to go with C++ over C# (or another language) because of my familiarity with it and the relevance it has with my job. In addition, the recent C++11 spec adds a lot of new stuff to it that I want to try out in some capacity. While a lot of this deals with threading stuff that I would love to try out, unfortunately that falls outside the scope of my current project. So most of the C++11 stuff that I am using mainly consists of a few niceties like nullptr and static_assert, but I can use a few core changes like their new pointer types: shared_ptr and unique_ptr.

Overall these are a good addition to the language and should hopefully make programming in C++ a little easier for newcomers, though I admit that I am struggling a little bit to change my mindset over to using them. Determining the best way to use them took a little bit of experimentation, as I initially sought to replace all pointers in my code with them. This quickly devolved into madness for me however, as I just couldn’t bring myself to change everything over since I knew a lot of it was just wasted effort on the computer’s part keeping track of all the bookkeeping. While realistically this likely wouldn’t have any noticeable performance impact due to the simplicity of my game, as an optimization-centric programmer by trade, it just didn’t sit well with me. I wanted to be able to get the benefits of the tracking without unnecessary cost. Fortunately this was easily solved by just making owning pointers be a type of smart pointer, and anything that I was just passing in a function to be used could remain a normal, dumb pointer.

The C++11 spec is pretty extensive in the amount of changes, so I am still going through it and deciding what might be useful to learn about and use (such as the move semantics). I will add them and update code as I see fit throughout the process.

OpenGL4_610x344

OpenGL 4

I originally started with DirectX when I was learning graphics as a teenager (after failed attempts in DOS and while I got GDI working, it wasn’t exactly fast) and it is what I primarily use now. I used OpenGL primarily in college for my courses (universities love them some Unix), but haven’t really touched it much since. I messed around a little with WebGL when it was first coming on to the scene, but working with Javascript turned me off (that and the fact that IE wasn’t originally going to support it made me think it was unlikely to gain traction, though they have reversed their stance). So there is definitely a possibility that I might try to get the game on the web at some point, though it is just one of the many things I would love to do. First, though, I need to get something finished before I start considering what I would like to do next.

Back to the topic at hand, I decided to go with OpenGL since it has been making some strong strides as of late. With it having a strong grasp on mobile as well as a lot of smaller projects embracing it so they can more easily go multi-platform, OpenGL has been quickly becoming more relevant as a graphics platform. I must admit that I was actually a bit surprised given OpenGL’s sordid history. But with OpenGL 4 it seems they have gotten their stuff together on the PC front as well (and Valve saying that it is faster even on Windows never hurts). So I have decided to check out how things fair in their area nowadays.

Since OpenGL is only a graphics library, I need to get help in other areas to match some of the missing features in DirectX and XNA that I have gotten used to. This is part of where I really don’t want to reinvent the wheel and am opting for third party assistance. First I am starting with GLEW to handle the window initialization and all important extension loading to actually utilize the OpenGL 4 features. To actually load in my images for textures, I chose SOIL due to its simplicity and the fact that I was planning on using PNG files for the game. Finally, since I don’t want to have to write a math library, I selected glm to handle that part. As you may be able to tell, I am choosing simple libraries that only serve my specific need. I figure this will make them easier to use and integrate into my game. These also appear to be pretty stable and are recommended by the OpenGL wiki, so I assume they are good quality as well.

Lua-logo

Lua

I had always wanted to increase my repertoire my learning a scripting language. They are very useful and serve a good tool for quick iteration. My goal is to force it so that I need to code using script in order to complete the game. This should make learning easier as it will give me a project. I have a book on Lua that I have read before, but without actually programming anything to make use of that knowledge, it has been mostly forgotten.

The reason for choosing Lua is that it integrates easily with C/C++ and is a small, simple language. It is popular in game development for this purpose as well. It was being used in a project that I was working on at the time when I first wanted to learn it, but being in graphics I never really interacted with it much. It was used primarily for gameplay and those related systems. Designers would use this to be able to tweak behaviors and actions that were typically set up by programmers. This allowed them to change and update the game without always needing assistance. Of course, giving access to the game like this to designers also introduced bugs, and I did help fix a few of these later into development. But going into a script and fixing a few things is typically easier than learning a new language (especially since I had some guidance as to what to look for that might have been causing the issue).

However, this model where basic, and sometimes even advanced, gameplay logic is contained in scripts is a good idea overall (assuming you have designers that are somewhat competent when it comes to programming, though always expect bugs when programming is involved). I am planning on doing something similar so that I can hopefully introduce my children to programming. And since scripts are interpreted immediately, it gives the kids instantaneous feedback when they see the changes in the game right away. I hope that it will be much easier for their patience and attention level that way.

 

Next Steps

So that is the initial steps that I am planning on doing when I approach making this game. So far I have only rudimentary progress where I have a single 2D image up on the screen and can move the camera around to view it, but it is a start. I have the Lua library integrated, but do not quite have it doing anything yet. Hopefully with the upcoming holiday break, I can spend a little more time building out the next parts of the game. I need to get a basic game tile rendering system going, so that I can display the backgrounds. It would be good to get a character that can jump around in those levels too. And of course, I need to start writing some Lua scripts to control various things. All in all, I am excited about the project and hope that I have time and motivation to stick with it in the coming months.

Making a Game for My Kids

Parenting and Video Games

As a parent with children that are now of the age where video games are fun and something they enjoy doing, it is my responsibility to help guide them so that they play and experience appropriate stuff. As a lifelong fan of video games, I would like for my children to appreciate them as I do. If I let them play games that they didn’t find fun or weren’t suited to their age, I might turn them off from them. Naturally, I started with the basics with Super Mario Bros for the original Nintendo, but played on the Nintendo Wii (though I should have a working original copy with the system in a box in the basement). So naturally, they are big fans of Mario and Luigi now (and my son and I even went as Mario and Luigi for Halloween once). I even convinced my son to go see Wreck-It Ralph in theaters because Bowser was in it. Though during the movie he was constantly asking me where Bowser was when he wasn’t onscreen.

Kids are also very imaginative sorts. After playing games for a bit, when I make them turn it off they will often reenact what they were just doing when playing by themselves (same goes for movies and tv shows). While doing this they will often change stuff around a bit, though I am not sure whether this is due to poor memory, physical constraints, or they are just having fun with it (likely a combination). Anyway, for whatever reason, my son came up with an idea for a game. He calls it Super Mario Cuckoo and you play as Bowser instead of Mario.

 

Side Projects and New Technologies

As a game developer, there are always new technologies that are out there. I particularly enjoy working with graphics, but it is also good to brush up on other areas of game making as well. I have previously played around with C# and XNA, though with XNA being deprecated and no longer supported, I looked into alternatives like SharpDX. This was a good to work with, but I had wanted to mess around with the new C++11 standard stuff. I also have been paying attention to OpenGL coming back in a pretty big way with mobile (and soon to be the web), and while I wanted to stay with PC development, it would be good to familiarize myself with it a bit more. Finally, I know that I am sorely lacking in my knowledge and ability with scripting languages. While there are many to choose from, I went with Lua because it is heavily used in the game industry and one that I had previously tried to learn. By making it a required part of the game that I am developing, it forces me to use it and thus gain the knowledge that I have been trying unsuccessfully to do before. Also, I hope that eventually that I can introduce my son (and daughter eventually) to programming and I think the fact that scripts can be updating very quickly will allow him a fun and easy introduction.

 

Ongoing Development

I admit that I have started many projects along the way and that I haven’t fully completed any of them. This is for a variety of reasons, such as a lack of focus or other priorities getting in the way. I hope that by doing this for someone else instead of just myself, it will keep my likely to stick with it to the end. I’ll also bring my kids on board to help with the development in some capacity, so that hopefully it can turn into something that we build together. This will likely take some time to do, so it might even be something they grow up with. But I hope it keeps their interest (and mine) and is something we can have fun with (and learn!) together.

Next time I post about this I will get into some details about the actual development.

Game Review: Septerra Core

Note: Game reviews will contain spoilers.

A Decade in the Making

I don’t recall how I first purchased Septerra Core, as it was literally over a decade ago.  It was likely back in college, ordered off online before Amazon was ubiquitous, possibly from Ebay (though I believe I got it new).  It would have been before I got my now main email address at GMail, and definitely before I realized the importance of archiving all the old emails.  It definitely is amusing to think of all that has happened in the past ten years or more, but back to the relevance to my story.  Septerra Core is an old game, and while using DirectX, backwards compatibility wasn’t always the greatest in the earlier versions.  It is also a pretty long game (as they really could be back then, with lots of filler and backtracking and the like), so it took awhile to play through and probably got put to the side several times.  As a college student, I also was able to get new OS discs for cheap, and so would routinely jump to a new OS from Microsoft whenever I was able.  But at some point upon doing so, Septerra Core would no longer work, and so it was relegated to the “pile of shame,” referring to games you started but never finished.

It wasn’t for a lack of trying, as with upgrading to XP I would try compatibility settings in hopes that it would run and searched around for any new patches.  But with Valkryia Studios going bankrupt and closing their doors.  After a few years of trying, I eventually gave up.  Unbeknownst to me, a patch was eventually released in 2006 that would address these issues, but by then I had more or less given up, though I did still have the disc in my possession just in case.  Then one day several months ago, while looking through GOG, I happened to stumble upon the listing for Septerra Core.  I noticed in the compatibility that it only lists XP and Vista, but looking through comments I ascertained that it would also work with Windows 7 64-bit, which is what I have installed.  So, still unaware of the patch, I plunked down the $6 to purchase the game and blew the dust off my old saves (figuratively) and excitedly loaded up the game.  And behold, it all worked!  My last save file was dated October of 2002, meaning that almost ten years had passed since I had last been able to play this game, but due to the great people at GOG, I was able to finally finish it.

 

Western JRPG on PC

While coming from a western developer, this game has a much more feel of being inspired by Japanese style of RPGs, with strongly defined characters and a linear story.  Naturally, having not actively played the game in quite a long time, I was pretty rusty on the story and what I was supposed to be doing in the game.  Fortunately the internet is a great trove of information for this sort of thing, and after skimming through a few walkthroughs I was able to piece together most of the backstory.  So, with some sense of what happened and a few clues about what to do next, I was finally able to start playing again.

The way that you play the game is controlled entirely by the mouse.  You use it to lead your party around the maps and to give orders in battle.  Enemies are seen wandering around on the map and the battles also take place there, in difference to older Final Fantasy style games.  During battle, you have a gauge that fills up over time and has three levels that allow you to perform increasingly stronger attacks.  It appears that the strength increases linearly, so you get a little bit of strategy in figuring out if you want to save up for a stronger attack with the possibility that it could miss (I generally favored ‘mid’ level attacks).  You also have magic which is controlled by playing cards.  With three people in your party, you can play up to three cards together to achieve a variety of effects.  The main card determines the attack while the others act as modifiers, such as adding an elemental type or making it affect all.  The magic uses up a shared resource, so you don’t have to worry about managing the magic levels for each individual member.

Old School Problems

It is interesting to go back and replay older games, viewing them through the lens gained by experience with more modern games and their conveniences.  The pacing of this game definitely felt slow by today’s standards, with lots of waiting around for the ability to take turns during battle, followed by animations that seems sluggish and longer than needed.  Maps were also padded to be larger than need be, and there were many cases near the end where I had to get so many keys in order to unlock doors to get more keys, to finally get where I was going.  Plus after getting the treasure or killing the boss at the end, the wonderful walk of shame out of the dungeon (fortunately much faster in reverse, but with enemies re-spawning with each area change, still not pleasant).  It is a testament to the progress of games design that these stand out so much nowadays.

While I do appreciate the art and the confines of the screen from those days left not much to work with, it still felt cramped and wandering around the map wasn’t too enjoyable since you could only really see about ten feet in front of your character.  The particle effects were nice, but were pretty basic by today’s standards.  And the characters have a bit of a “plastic” look to them.  For the time it was really nice, but with all the advances in graphics we have these days it can be a little hard to watch at times.

 

Another Off the “Pile of Shame”

While the end was a bit of a letdown, I do have to say that I am glad I repurchased the game and was able to finally finish it.  It is a bit eye opening to think about how technology is progressing and how our medium of storytelling and experience is so very tightly coupled to it.  It is very likely that over time older games may become unplayable and it is a refreshing sight to see places such as Good Old Games working to preserve the history (and make a buck or two while they are at it).  I enjoyed having the experience of playing a game over such a long period, and giving me time to think about all that had progressed during that time.  Video games have come a long way, and I eagerly await to see where they will go from here on in the future.  Plus, that is one more game off my pile of shame.

Quick Impressions of Dead Space 3

I just recently wrote my review of completing Dead Space 2 and it was around the time that Dead Space 3 was being shown off at E3.  One of the big new features that they were touting was co-op.  I explained in my Dead Space 2 review my thoughts about the relationship between power and horror.  While many horror movies do employ a group and it works well in that context by having the character’s fears play off each other, I don’t think the same effect extends to games.  While games can be a very social environment and playing together is something I think games should allow more of, I think that with horror it runs into some major roadblocks.  Typically in games in order to keep people engaged when playing together there is a simple revive mechanic when one player goes down the other player can walk over and get them back on their feet.  I don’t know if this is the case for the newest installment, but I would imagine there would be something similar.  In horror movies, it is scary because once a character dies, they generally remain dead, and so the overall group has lost power.  In a video game setting, it would just be a temporary setback (though I suppose that thinking could also be extended to the notion of reloading a save game).  Not to mention that I find when playing with someone else it gets a lot harder to be truly immersed in the game, which makes it hard to convince yourself that what you are seeing is something to be afraid of.

In addition, Dead Space 3 also appears to also take place on a planet with some wide open areas and feature more in the way of gun play which is more typical of a mainstream action game.  I think this focus on action over horror will diminish the potential fear and terror that the game.  While I will wait and see and read several reviews before making up my mind as to whether to play this game, the impression that they are giving about the direction of the franchise is not giving me much confidence.

Game Review: Dead Space 2

Note: Game reviews will contain spoilers.

Platform Shift

I played the first Dead Space on 360 awhile ago, and enjoyed it, but not so much that I felt that I needed to play the sequel once it came out.  During a rush of Steam sales (a newfound weakness of mine) the sequel was discounted to just $5, so I figured I’d give it a shot.  I have to say, it was well worth the money.  I was a little worried at first about it being a console game first and playing that on the PC.  Typically, games ported over will feel like they were rushed and their control schemes won’t feel suited to a mouse and keyboard setup, but it seems like a good amount of care was put into this version as there were no serious issues and I didn’t feel hampered or wanting a gamepad instead.  There were a few default key bindings that felt a little awkward at times, but it didn’t bother my enough to change them.  It seems like PC is starting to become a well treated platform again, as the consoles are definitely showing their age so more people are opting to play on PC again so they can start seeing additional effects that some developers are using with PC DX11 versions of their games.  I also find that I am starting to prefer playing PC games due to the fact that it is away from the kids’ room near the TV (and I don’t have to compete for screen time as much if they are up).

 

The Setup

The basic gameplay twist that Dead Space has is that instead of the usual “shoot them in the head” strategy that most games employ, in this one the point is to shoot off the limbs of the enemies (shooting them in the head generally just makes them mad).  It is an interesting approach and I am glad to see games experiment with new approaches.  It helps that the enemies are hideously disfigured humans with splayed limbs to make your job a bit easier.  They were transformed this way by an alien virus that graphically configures human flesh into bizarre, twisted abominations that you get the joys of fighting through.

The plot also deals with religion, “markers”/artifacts, and government plots a little to give the plot some weight and context, though it isn’t entirely crucial to understand all of it.  A lot of this is revealed through text and audio logs found throughout the environment.  While I can appreciate that littering these throughout the environment helps put them in a context within the world and makes them optional for people that want to skip them, it does make everything hard to follow and a little hard to piece everything together as to what exactly is going on outside of what your next objective is.  But perhaps that is a weaker point of doing the story that way instead of a linear, cutscene-based approach (which has its own weaknesses).

 

The Horror

The Dead Space series is supposed to be all about horror, and I think they accomplish this to a pretty good degree.  I would definitely describe the game with words like suspenseful, intense, and scary.  Granted, as an adult who knows that all this is just polygons, textures, and lighting effects at its core, I wasn’t exactly kept up at night with nightmares.  But I did have to take a break after an hour or so to calm down my nerves.  Granted, as the game went on I suppose I got a bit more used to it as I was able to play for longer stretches without it bothering me.  Perhaps I slowly got desensitized to it.  Or I just acquired enough of an arsenal that I wasn’t too worried about what lurked around the corners.

That brings me to a point that I want to make when it comes to the idea of horror and how some games try to be scary but then undermine the atmosphere and enemy design with their gameplay balance.  The true enemy of horror is having too much power.  This power can come in a variety of forms, such as too much information about the enemy or too powerful of weapons, but regardless of the source it will lessen the terror that the player could feel.  In order for this to work, the player needs to have a feeling of helplessness and fear of the unknown.  Some of the most anxiety-inducing moments in games comes when you only have three bullets left, no health, and there is a big monster between you and the next safe room.  If you could just waltz in and blow everything away, then you don’t have much reason to be afraid.  If you know that enemy X will spawn at location Y every time then you don’t have much reason to be afraid (of course, if it takes almost everything in your inventory to get past it that could be pretty scary).

I am reminded of a time when I was playing the Resident Evil remake on GameCube when the game surprised me in a very scary way.  In old Resident Evil games, you have a variety of rooms that you go through.  An unstated rule of the game is that enemies don’t go between these rooms.  However, one time when exploring around near the end of the game there was a common but strong enemy (a hunter for those familiar) in a room that I decided to just avoid for some reason or another.  I went into the adjoining room and looked around for a moment until the enemy that I skipped broke through the door I had just used.  I remember being rather afraid at this moment since the game broke what I perceived to be an unbreakable rule.  While I was able to dispatch the enemy, the moment still stays with me.

That actually reminds me of another good horror technique that the Resident Evil remake introduced (sorry to drone on about it, but they made that game rather scary).  The regular zombies, once killed, stayed dead on the floor (no disappearing when you left the room), but then after an undetermined (by me anyway) amount of time, then could come back as a stronger, faster zombie.  You had a way to counter this by burning the downed zombies with oil and fire, but then you had to have additional stuff in your inventory (and a limited amount to boot).  I remember that there was even a zombie that was left outside a safe room that started dead, so you had to decide to if you wanted to use some of your limited resources on it.  I believe that I decided to leave it on one playthrough to see if it would ever get up (it didn’t), but that didn’t stop me from cautiously stepping around it whenever I wanted to go past it.

Which brings me back to Dead Space 2, and something I am glad they added in.  Near the end of the game, you are introduced to an immortal enemy (at least I could never figure out a way to kill it).  This actually helped offset the complacency that I was starting to feel with the game as I was to the point where I had a pretty strong offensive so I could blast through most of the enemies without too much of an issue.  They first introduce you to the enemy by itself, so naturally I sent a long time blasting it with everything I had before I realized that it just wasn’t going to die (you could incapacitate it for brief moments while it regrew all the limbs you blasted off).  This was then followed by a quick attempt at an exit (which was foiled by me be too slow and prompted a quick load to get my health and ammo back).  The enemy is then introduced again and again as it chases you to the end of the game, along with scads of other strong enemies that you have to deal with.  I didn’t even bother killing most of the normal fodder once the black invincible one showed up, and attempted to quickly exit any area that I was currently in.  This turned the endgame into a scramble towards the finish, blasting anything that got in my way and rarely affording me a chance to catch my breath.  So now even though I was brimming to the teeth with strong weapons, I was still unable to get comfortable since there were always too many enemies to deal with and then it would show up and I’d have no choice but to get moving if I wasn’t already.  So that introduced some of that horror back into the game at the point where you felt that you were finally safe.

 

The Signoff

Ending felt a little forced, not entirely sure what was going on, I’m not a horror-buff but had a good time, would recommend

Dead Space 2 ended fairly well as far as horror games do.  The rush to the end was met with a fairly unimpressive boss fight that led to a Isaac (your main character) pretty much sitting down and accepting his fate to die while the credits scroll by.  “Just kidding!” says the game as it bursts into the solemn moment with the other main character busting in and you are off on a quick, escape from the self-destructing facility end sequence before you manage to get away safely.  It was a little jarring at first, but the fact that it ends up with Isaac actually saving the girl (and in turn her saving him at the end there) actually ended the game fairly well.  Naturally, with all things horror, you find out that the facility and marker that were destroyed were only one of many, meaning that your job is far from done.  Good for sequels as well, of course.

I admit that I am not a huge horror buff, but I appreciate the interesting dynamics that they tend to employ from the usual “just blast everything in sight” that accompanies most action-based games.  Overall, I enjoyed Dead Space 2 a lot and would recommend it to other people.  I don’t believe it sold too well, but there was enough of an interest for a sequel (I have a few impressions about it that I will talk briefly about in a later post) and several other media spinoffs.  So here is to seeing if they can keep the horror genre fresh in the coming years.

Moving Away from Web Projects

Writing for the web is hard.  That’s likely coming from my lack of experience with web related technologies more than anything.  Perhaps I have been dealing with consoles and PCs too often, but that has definitely shaped the way that I think and the way that I approach things.  It could also be due to the fact that web related technologies (as least when it comes towards games) are still not entirely developed enough for someone like me to easily work with them.  I admit I am likely spoiled in this regard.  There are very powerful compilers and debuggers that I have a lot of experience with and am very comfortable using.  Granted, part of my goal with my personal projects is to try and do things that I am not doing at work so that I can expand my skillset, but I feel that I also should be enjoying myself while doing it.  And after several months of trying, I am finding that I am just not enjoying myself when it comes to attempting to write games for the web.

First I attempted to work with Google’s PlayN architecture.  This was an exercise in futility as the instructions were complicated and I was constantly getting lost in the myriad of tools that you had to deploy and configure in order to even get the simplest of builds working.  Likely not too big of a deal if you are used to being in that style of development (thinking of all the tools I work with on a daily basis in my normal job and I would imagine they are comparable), but very difficult to get used to when you are approaching it as a newbie like I was.  Over time it seemed like things got simplified a bit and I was able to work around several of the issues and get some basic stuff going.  But ultimately I was still a stranger in a strange land and just couldn’t handle juggling all the processes in order to work effectively.  Maybe things are better now, but I haven’t looked at it for months.

Next I decided to try to strip things down to a simpler toolset and just approach it using HTML5 and Javascript.  One of the reasons why I wanted to attempt using PlayN was to avoid the pitfalls of development in Javascript (ie it sucks from the best I can tell), but I figured that I would eventually learn the traps and get used to it.  I had decided to just go with a simple text-editor approach using NetBeans and downloaded a JSLint plugin to help me spot dumb errors.  I was using Firebug for Firebox in order to have some sort of a debugger, but even that proved to be not sufficient enough for my tastes.  I kept running into issues where the script would just abort, without any reason or direction given as to the cause of the termination.  It got to the point where I just wasn’t enjoying programming any more, which made working on my personal projects take a backseat to just playing games and having fun.

So I have decided to return to the world of compilers and pick up where I left off with my personal projects in C# and focus more on the tool development like I was originally.  This still allows me to branch out and try new things, just a few less so it is a bit more manageable while still balancing everything else that I am in my life.  In the spirit of ditching other tools, I am also planning on scrapping my work with WinForms and just building a new UI framework from scratch.  This will allow me the flexibility to be able to implement what I want, plus I really enjoy messing around with the guts of systems like this (and I doubt there is a huge demand for game programmers with WinForms experience).

Hopefully this old dog will still be able to learn a few new tricks, I just realize that I don’t have to take on everything new all at once as I just don’t have the time to jump in headfirst like that any more.  So I am going to stick with stuff that might not branch out quite as much, but that I would enjoy working on for the long haul.  If nothing else I’ll be able to experiment and try out things that I wouldn’t have the time or permission to do in a normal work environment.  For example, another project that I want to do is to mess around with writing a DX11 ray tracer and see if I can play around with compute shaders some (no idea if this would even be sensible yet, but it is something I’d like to look in to).  Plus I think it would be fun to optimize and see how fast I can make it.  Now I just need to somehow find the time…

Game Review: To The Moon

Note: Game reviews will contain spoilers.

Stories Without Pages

To the Moon is another piece that I would file under being an interactive story as opposed to a game (to recap, my definition of a game is something with rules that has win and loss conditions).  It is a very linear experience where you only really participate by searching the areas for objects of interest that allow you to progress to the next story point.  It also doesn’t appear to have any sort of branching story or a way to get different endings.  This does give it a strong and consistent narrative experience, but I feel that it does limit itself a bit by doing so.  I’d like to see interactive media of this type use the power of the medium a little bit more in order to expand the art, but overall I was satisfied with how the story was presented.

 

The Mind is Malleable

The basic premise of To the Moon is that technology has discovered a way to view and alter the memories of people.  Instead of using this for some nefarious purpose, the application of this technology that we see is to alter the memories of people to give them more happiness about their lives.  Apparently this memory alteration is permanent, and so to be kind to the patients, it is typically done while they are on their deathbed and are unconscious.  This particular story follows a man who wants to go to the moon and the two specialists who arrive to fulfill his wish.  You get to see them attempt to go about this by gradually stepping back through his memories and looking for his reasoning for going to the moon in the first place.

It unfolds at a fairly predictable pace, with a few twists thrown in that make the story compelling.  Perhaps it is the Chrono Trigger inspired graphics that hearken back to some fond memories of mine that kept me glued, but I could easily see others wishing rather to read a book instead.  It is obvious this was done with minimal production values, as the movement is very grid based and confining, plus the “find objects of significance before moving to the next area” gameplay element feels a bit contrived, but the look is consistent and the music lends itself well to the emotion that it is trying to convey.  The banter between the two specialists is amusing, but there wasn’t really anything that I found to be particularly noteworthy with the writing (not that many games really do).

 

An Inbetween Experience

I’m still not entirely sure where To the Moon occupies in my head.  It was an emotional story that was presented in an interactive entertainment environment, but there was nothing that really made us of the medium.  It could easily have worked in a TV/movie just as easily, but the creators decided to use an interactive method instead.  However, I enjoyed the story and effort was definitely put into the areas that mattered most to enforce that.  I found it to not be particularly accessible (I played it with a gamepad), but it was serviceable.  It feels like they added some “game”-type elements to it in order to have it there to gate the players progression, so any exploration that you get feels like it is forced as you hunt down what you need to advance the plot.  There is also a simple puzzle component that you need to do between each segment, but after a few I figured out the trick and it wasn’t very challenging or interesting after that.  So overall I would have to say that it was a good story that you felt like you were a bit more of a part of due to the slightly interactive nature, but beyond that it left me feeling like I wanted more from it.

Game Review: Journey

Note: Game reviews will contain spoilers.

It’s not a Game, It’s an Experience

First off, I would like to state that Journey isn’t a game so much as it is an experience.  I think this is an important distinction when it comes to entertainment media.  To me a game has a collection of rules that must be obeyed and a definite win and loss condition.  I have only played through Journey once (though I plan to again), and as far as I can tell, there isn’t a way to lose.   There are enemies in the game that when they hit you it causes you to lose some of your scarf (more on that later) but I didn’t really notice any way to actually die or fail (and searching the internet backs me up on this).

 

Short and Sweet

Journey is an odd but beautiful game.  You are a wanderer clad in a red cloak with a black mask, no apparent arms, and legs that end at a point.  You start off walking up a dune in a desert and upon reaching the top you notice a large mountain in the background with a bright light emanating from it.  This is your destination and the only hint the game gives you about what to do to proceed.  You can slide down steep hills (and there are several segments of the game solely devoted to sliding) and soon you find red pieces of fabric floating around as if they have a life of their own.  You learn that you can “talk” to these pieces of fabric and they will propel you upward.  There are also glowing pieces of fabric that you can collect that will give you a scarf and allow you to jump as long as you have the energy to do so (represented by a pattern on your scarf).  As you collect more of these your scarf will grow, representing your ability to be in the air more often.

The world of Journey is very beautiful.  The environments start out as sand swept dunes that are littered with ruins of an old civilization.  There are stone monuments that remind me of gravestones littered throughout.  In addition to the smaller pieces of red scarves, you eventually find larger ones that help guide you and occasionally give you a ride.  You also come across some stone monuments that come to life and float around, their one eye sending out a spotlight that illuminates any loose scarves before they are devoured.  It is these stone monsters that represent the only enemy type in the game.  Even without their ability to actually kill you, their presence evokes some fear and caution, as the music changes its tone and you feel small and helpless as they scour the area looking for you.  Eventually you move into snow, where your ability to jump is gradually drained by the cold, and finally the sky as you soar to your final destination.

Along the way, you can come across other people experiencing Journey.  You can only communicate in the most primitive of ways, using the same method of talking (which is just a single tone emitted with a button press) as you do with the other inhabitants (if you can call them that).  You can also recharge each others energies by standing close, as it appears the rule is that being close to any of the red pieces of cloth in the game will grant you this power.  It is a nice touch that you can do so with a fellow player, giving you incentive to stay near each other in order to help out.  I have to say that I enjoyed this form of simple multiplayer, with no chance of “griefing” as any person you encounter can only help and never hinder.

 

It’s not the Destination, It’s the Journey

Along the way you complete each section by activating several pillars next to a stone tablet.  These conveniently have spots at their base representing the pieces of scarf you can collect in the level, and illuminate for each one picked up.  After the pillars are activated, you kneel down in a sense of prayer and get a vision from a much larger figure dressed as you are but in white.  These visions represent the only thing that counts as an overarching story for the world and they seem to detail the past that lead to your summoning and eventually what you will have to face in the future, as if ordained by a prophecy that you are carrying out.  You also find additional pieces in the forms of wall carvings throughout.  I am not entirely sure what all transpired (there is no actual text at all, which I’m sure made localization a breeze), but it seems to suggest that a civilization harnessed some sort of power from the skies that eventually led to their downfall.  Obviously somewhat cryptic, but I think it gives it a bit of extra mystery to the strange, wonderful world you are traveling through.

Each segment has a particular game play style, though there isn’t anything drastically different between them.  The main thing you do reach the end by navigating through the environment, but there are segments that concentrate more on sliding or flying, and you have to avoid the flying stone monster in some areas which gives it some stealth type gameplay as well.  Ultimately, it keeps it different enough that you never really get tired and it is always a new experience.  And once you finally reach the end after your 2-3 hour journey, you get transported back to the beginning to experience it all over again (culminating with a list of the people you met along your way).  Due to its short length, I would highly recommend experiencing it in a single sitting.

I have to say that I greatly enjoyed my time playing Journey and will likely pick it up again at some point (which is rare for me to do).  If nothing else but to gaze at the environments some more or spend a little more time exploring them.  Definitely a good place for relaxation and contemplation and I think something that helps expand the realm a little bit of what constitutes electronic entertainment.

Creating Games Online

Introduction

The web is an exciting place as of late in terms of video games.  With exciting new technologies like HTML5 and WebGL coming online and joining cool stuff being done with browsers like Chrome and Firefox (IE always seems to be a few steps behind) with optimizing for Javascript and even running native code from your browser, games are really starting to push to the forefront online even more than before.  Previous technologies like Flash and Shockwave used to dominate the scene, but now are on the defensive or largely forgotten.  Though Flash is really trying to keep relevant, and with its latest release boasting 3D GPU acceleration support and Unreal and Unity porting their engines over gives that some serious mettle.  And recently Google just announced its PlayN library, which gives you a good grounding to build code once and have it work on lots of online platforms.

 

My Game Projects

Over a year ago I decided that I would make some games in my spare time.  I decided on a racing game in homage to Rock and Roll Racing, which is one of my favorite games.  I decided that I would use XNA and C# and went about creating some tools and the basics of a game.  I admit that I haven’t spent a lot of time on this project as I find that I rather spend the little free time I have either with my family, watching movies, or playing games (and after programming all day, I tend to get a little burned out).  Some of my lack of motivation likely also comes with the feeling that I am treading a lot of the same ground that I have before with my normal job and previous hobby projects.  Plus having to work in Windows Forms primarily for UI is a bit of a bummer (I didn’t spend much time researching other UI options, I admit).  So there hasn’t been a whole lot of progress since I started it.

 

Accessibility

Part of my thought process with going with XNA (outside of the fact that I get a good game engine to start with) is that it is a technology I have had experience with before and it is tailored towards games.  I also have the pipe-dream of finishing a game and possibly playing it on the Xbox360 (which XNA allows with the member subscription) and publishing it in some capacity for my friends (and other people) to play.  I am building my tools with the idea that I can release them and other people can build levels or cars or anything else that in the same way that I will for the game.  Granted, the chances of people actually doing that are slim, but I think it is good practice and a useful learning tool for myself.

But I find myself thinking that it would be neat if people could check out my work and give feedback (if they are so inclined) while it is in progress.  Doing so now would require them to download and install the program, which can be a bit of a pain especially if I need to worry about removing old versions or data.  It would be a lot easier if they could just go to a webpage and mess with things there.  And if I make the game and tools available online and through a webpage then pretty much anyone on the planet could check it out with ease.

 

Online Games

So as you can likely guess, I am going to explore the possibility of moving my personal game development online.  I think this will be doable since UI is what the web was made for.  And with the recent push for more game friendly technologies, I should be able to make simple 2D style games without too much hassle.  Here is an example of an XNA sample that I came across that is done in the web browser: XNA-Platformer.  This also gives me ample opportunity to try and learn new technologies, though I imagine that will make things take a little longer since I will be new to a lot of this.  But I am excited about this idea and I look forward to seeing what I can do to make this happen.

 

Further Info

Kick-ass Web Programming with Google Web Toolkit

PlayN Demos

Cancelling GameFly

My Dealer

I’ve had an “on again off again” relationship with Gamefly ever since I first started using them back in college where money was scarce and time more plentiful.  I had been playing video games since I was a child and often visited rental shops to get some semblance of variety on a schoolchild income.  It was a rare and joyous occasion when I was able to get the same rental copy of Final Fantasy II (IV now that I know better) and could continue where I left off.  So the idea of a rental store that delivered video games to my mailbox like Netflix (back when you could get three discs for $10/mo) was very appealing.  I was instantly a fan and signed up for the two games a month plan and split the cost with a roommate.

However, after college I got my first job and departed to Florida.  At the time, Gamefly had only one warehouse all the way on the west coast.  This led to an average of turnaround time of a week and a half.  So I was paying nearly $8 just to get a new game.  This was compounded by the fact that Netflix turnaround time was only a few days.  So generally I was able to send back a watched DVD (these are pre-BluRay days) and get a new one before Gamefly even got my game.  So with a heavy heart, I cancelled my subscription and got my game fix by getting games off Amazon and with my EA employee discount.

Back for a Fix

After moving to Chicago and Gamefly having opened a warehouse in Pittsburgh, I decided to try it again.  By this time I had a Wii and more importantly, a 360 with its achievement system.  While I wouldn’t classify myself as an achievement whore, I did take some satisfaction in having a higher score than my friends.  Having a Gamefly account again enabled me to get a wide selection of games easily and fairly cheaply too.  Plus I have always considered myself a bit of a video game connoisseur, always wanting to check out stuff that was different and novel that interested me, so renting is a convenient way to do that as well.

Overall, I would say that I was happy.  But as time wore on and free time became more scarce with the addition of two children to my household,  I noticed my game playing habits were starting to change.  Sure, there was the obvious fact that I had less time to play games, leading me to cut out many that I was hoping to play as I noticed that the age of games that I was playing was steadily getting older.  The more subtle one was that I tended to play my rental games primarily, and only really play the games I had actually purchased while I was waiting for the mail delivery to get me the next game.  A big part of this is due to the fact that Gamefly charges monthly.  So I am paying for the game if I am playing it or not.  Being the frugal gamer I am, this causes me to primarily play the rental games and to do it as quickly as possible, leaving games I liked enough to actually purchase primarily sit around gathering dust.

Another change that has occurred in video games is the emergence of downloadable games producing great game experiences.  With XBLA and PSN putting out increasingly better and more original games, I would like to play some more of these.  Since these aren’t exactly available to rent, they tend to fall in the same category as purchased games, meaning that I generally don’t play them.  As I am hearing about some true gems coming out from smaller developers, though, I would like to support their efforts and this new area of gaming.  But I realize that with a subscription always in the back of my mind, that isn’t likely going to happen.

Rehabilitation

Most recently, I had an issue where a game took over two weeks on its turnaround time.  I figured that it was lost in the mail and reported the shipping issue and Gamefly sent me another game (this time a more desired one as well, availability has been another sticking point).  Not too surprisingly, the original game finally arrived after a few days.  Since I was supposed to send it back as soon as I received it, I attempted to play through it as quickly as possibleMy reasoning being that it took so long for the game to arrive I had already paid for the rental time so it was okay if I had two games for a little bit.  However, upon tearing through and then returning it, I came to the realization that I wasn’t really enjoying games like I wanted to.  I would like to just be able to take things at my own pace, and with Gamefly routinely deducting from my bank account each month, I wouldn’t be able to set my own pace and be comfortable with it.

So I decided that I will cancel my account at the end of this billing period.  I decided to purchase the game that I was renting since it was fun (and I had a $5 off coupon) and remove all the games from my queue except two shorter ones (which I am still waiting on to ship to me).  I figure I can get games used through Glyde, which I have primarily used to sell off my old collection, or Amazon generally has decent prices if I want to get something new.  When I am done with a game, I can always sell it again.  I figure this will end up costing me about the same in money that I had with Gamefly overall with the added benefit of taking things at my own pace.  Plus it might even help soften the blow of the ever increasing prices at Netflix...