This post has not been edited by the GamesBeat staff. Opinions by GamesBeat community writers do not necessarily reflect those of the staff.
Over the past two months, I was lucky enough to make two games for computer science and software engineering projects. This process was a dream come true — I could spend hours developing my own games and call it “work.” These projects did come with some restrictions. First, I had only six weeks to complete them. Also, these assignments focused on graphics, interactive systems and object-oriented software development rather than actual game design. As a result, I had to use all the tools and implement all the features the teacher asked me to.
The first project required me to adapt the light-cycle game from Tron into a two-player 3D game that took place on a randomly-generated fractal landscape. The second one involved the creation of a 2D vertically-scrolling space shoot-‘em-up, with some of the units and items possessing certain behaviors and attributes. I could expand on the games however I liked.
Inspiration.
I want to be a game designer one day, so I figured this would be a great opportunity to flesh out my portfolio some more. My mind raced off in all directions as I pondered the possibilities. I knew even before I had started that time would be a problem. I had six weeks to make two games without falling behind in my studies or neglecting my other commitments. I also had to do each one with a programming language I barely knew — OpenGL for the 3D light-cycle game and Java for the 2D shooter.
My hopes of creating a shooter in the same vein as Epic’s PC-only Tyrian — a title with a deep, well-told story and the ability to customize your ship — were never going to be met. I would need six weeks just to do the pre-production work on an ambitious idea like that. I had to scale back my vision to something more realistic, but I couldn’t stop thinking of cool things to put in the two games.
So I made a checklist. I would first focus on meeting the requirements of each project. Then I would work my way down the checklist and add as many features as I could before the deadline arrived. I would have no time for polishing and tweaking. I had to get things right on the first try.
This is what a game looks like. Really.
Four weeks in, I was still coding the engine for the 2D game, and I had just finished the core engine for the 3D game. That meant I had a little under two weeks to add the actual gameplay to the two-player 3D light-cycle title. I also still had to complete the engine, write the data script, and create the graphics, maps, menus, animations, and sounds for the 2D space shooter.
I looked at my checklist with a wistful gleam of sadness in my eyes. My 3D game would not have textures, animations, or music; I only had time to use primitive shapes and decidedly unglamorous lighting effects. The shooter would end up with only one level — even the super small and short secret level would be left out. Game development sucks.
This signalled the beginning of a unique crunch period which didn't allow me to walk away from my other commitments. I had to go to dance rehearsals. I had to show up for my compulsory classes. I could rarely work more than a few hours without disruption. The uneven schedule only added to the stress and challenge of a task which already required long spells of concentration and brought frequent demoralizing setbacks.
I had a major issue with the light-cycle game. The camera and the players kept going inside the terrain. I found the problem after several hours of debugging and rewriting code; I slapped my head when I realized how simple the fix was. After that, I discovered another bug that forced a total rewrite of the camera.
You know your game is broken when…
But that wasn’t the end of the frustration. OpenGL requires a very specific order of operations. If you make just one error, you can end up with a bizarrely different visual scene than what you expected. Getting the process right while still learning the features and syntax of the language — not to mention the mathematical theory at its core — is nothing short of agonizing. When I added player trails, they appeared anywhere (and on a few occasions, everywhere) except at the tail of each player. Sometimes, things went so badly that the game crashed.
Text rendered on the screen would randomly change color. The engine occasionally did not detect collisions. I began to feel like the game was against me — like it didn’t want to exist.
Somehow, I managed to get the light-cycle game finished two days before its deadline with almost no bugs and a rock-solid frame rate. I considered trying to add a few cool features to make the game more interesting, but I was well behind schedule with the 2D shooter. I shifted my focus to finishing Shadow Wing, which was due in just under a week.
One down.
At this point, the game was barely functional. I had a complete level map with no enemies, items, or checkpoints to populate it. I had not yet created the code to load this data into the game, the audio was unfinished, and the menu system was merely a rough sketch on paper.
Once again, I looked at my checklist. I had to say goodbye to high scores, the tutorial, and my turret-like enemy. I couldn’t finish my original artwork, either. The development process started to depress me. I had cut corners all over the place, and I still couldn’t even fulfill my scaled-back ambition.
The finished product.
I once heard a successful developer say, "A game is never finished; it's just shipped." I now understand what he meant. The problem with deadlines is that they will always cause you to leave something out or to ship the game before certain features are complete. Deadlines mean compromise. Compromise sucks. Sometimes, games do too.
To check out the version with Chris' edits and Jay's notes, please head over to page two.
Edited by Chris Hoadley.
Over the past two months1 I was lucky enough to make two games for computer science and software engineering projects. It was2 a dream come true — I could spend hours developing my own games and call it “work.” Except I had six weeks to complete them and I had to use all the tools and implement all the features the teacher wanted me to, since neither was actually about game development — one focused on graphics and interactive systems; the other looked at object-oriented software development.3
The first project required me to adapt the light cycle4 game from Tron into a two-player 3D game that took place on a randomly generated fractal landscape. The second one involved the creation of a 2D vertically-scrolling space shoot-‘em-up, with some of the units and items possessing certain behaviors and attributes. I could expand on the games however I liked.
I want to be a game designer one day, so I figured this would be a great opportunity to flesh out my portfolio some more. My mind raced off in all directions as I pondered the possibilities. But5 I knew — even before I had started —6 that time would be a problem. Six weeks to make two games without falling behind in my studies or neglecting my other commitments7. Six weeks8. And9 I had to do each one with a programming language I barely knew — OpenGL for the 3D light cycle game and Java for the 2D shooter.
My hopes of creating a shooter in the same vein as Epic’s PC-only Tyrian (released in 1995)10 — with customizability11 and a deep and12 well-told story — were never going to be met. It would take me six weeks to just do the pre-production work on that13. I had to scale back my vision to something more realistic, but I couldn’t stop thinking of cool things to put in the two games.
So I made a checklist. I would first focus on meeting the requirements of each project, then14 I would work my way down the checklist, adding15 as many features as I could before the deadline. There would be16 no time for polishing and tweaking. I had to get things right on the first try.
This is what a game looks like. Really.
Four weeks in, I was still coding the engine for the 2D game and 17 had just finished the core engine for the 3D game. That meant I had a little under two weeks to add the “game”18 to the two-player 3D light cycle game19, and a little over two weeks to finish the engine, write the data script, and create the graphics, maps, menus, animations, and sounds for the 2D space shooter.20
I looked at my checklist,21 a wistful gleam of sadness in my eyes. There would be22 no textures, animations, or music in the light cycle23 game —24 I only had time to use primitive shapes and decidedly unglamorous lighting effects. And there would be25 just one level in the shooter — even the super small and short secret level would be left out. Game development sucks.
This signalled the beginning of my crunch period. Except26 it wasn’t like an ordinary crunch27because I couldn’t walk away from my other commitments (and I wasn’t getting paid anything). I had to go to dance rehearsals. I had to turn up28 to my compulsory classes. It was rare29 I could work more than a few hours without disruption. The uneven schedule only served to add to the stress and challenge of the task, which required long spells of concentration and brought frequent demoralizing set-backs.30
I had a major issue with the light cycle31 game. The camera and the players kept going inside the terrain. I found the problem after several hours of debugging and rewriting code, slapping32 my head at how simple the fix33. Then another bug forced a total rewrite of the camera.
You know your game is broken when…
But that wasn’t the end of the frustration. OpenGL requires a very specific order of operations. If you make just one error, you can end up with a bizarrely different visual scene to what you expected34. Getting it35 right while still learning the features and syntax of the language — not to mention the mathematical theory at its core — is nothing short of agonizing. When I added player trails, they appeared anywhere (and on a few occasions, everywhere) except at the tail of each player. Sometimes36 things went so badly that the game crashed.
Text rendered on the screen would randomly change color. Collisions occasionally didn’t get detected.37 I began to feel like the game was against me — like it didn’t want to exist.
Somehow38 I managed to get the light cycle39 game finished two days before its deadline, with almost no bugs and a rock-solid frame rate. I considered trying to add a few cool features to make the game more interesting, but I was well behind schedule with the 2D shooter, 40so I shifted my focus to finishing “Shadow Wing,” which was due in just under a week.
One down.
At this point41 the game was barely functional. I had a complete level map with no enemies, items, or checkpoints to populate it. There was42 no code to load this data into the game, the audio was unfinished, and the menu system was merely a rough sketch on paper.
Once again43 I looked at my checklist. Goodbye high scores. Goodbye tutorial. Goodbye turret-like enemy.44 I couldn’t finish my original artwork, either. This was getting depressing.45 I had cut corners all over the place and still I couldn’t even fulfill my scaled-back ambition.
The finished product.
I once heard a successful developer say that a game is never finished, just shipped46. I now understand what he meant. The problem with deadlines is that there will always be47 something you have to leave out or ship before it’s finished48. Deadlines mean compromise. Compromise sucks. Sometimes games do, too.49
Jay's footnotes:
To check out my original rough draft with Chris' notes, please head over to page three.
I was reluctant to send off a first draft (as per the rules of the challenge) that I knew contained errors, but Chris gave me some fantastic feedback. Some of the issues he pointed out would not have occurred to me during self-editing.
Also note that there were additional changes made to the article after these edits. We had an email discussion about these extra improvements, and further material was subsequently cut to keep the length the same. I must thank Chris for his help and feedback in shifting the focus of the article more toward one game. I think the result is a much improved piece.
Making a Game Under a Deadline is Hard
Over the past two months I was lucky enough to be asked to make two games for computer science and software engineering projects. (Cut out “to be asked”) It was a dream come true — I could spend hours developing my own games and call it “work.” But it came with a few caveats: I had six weeks to complete them, I had to use particular development tools, and I had to include certain features.
(Replace “But it came with a few caveats:” with “Except.” Replace “I had to use… features.” with “and I had to use all the tools and implement all the features the teacher wanted me to.” Also, what course is this for[or at least the degree]?)
The first project required me to adapt the light cycle game from Tron into a two-player 3D game that took place on a randomly generated fractal landscape. The second one involved the creation of a 2D vertically-scrolling space shoot-‘em-up, with some of the units and items possessing certain behaviors and attributes. I could extend the games however I liked. (Replace “extend” with “expand on.”)
I want to be a game designer one day, so I figured this would be a great opportunity to flesh out my portfolio some more. My mind raced off in all directions as I pondered the possibilities. But I knew — even before I had started — that time would be a problem. Six weeks to make two games without falling behind in my studies or neglecting my other commitments. Six weeks. And I had to do it with a programming language I barely knew. (Which programming language?)
My hopes of creating a Tyrian-like shooter that had a deep and well-told story were never going to be met. (What’s Tyrian? It doesn’t jump immediately into the mind like R-Type or Galaga.) It would take me six weeks to just do the pre-production work on that. I had to scale back my vision to something more realistic, but I couldn’t stop thinking of cool things to put in the two games.
So I made a checklist. I would first focus on meeting the requirements of each project, then I would work my way down the checklist, adding as many features as I could before the deadline. There would be no time for polishing and tweaking. I had to get things right on the first try.
Four weeks in I was still coding the engine for the 2D game and had just finished the core engine for the 3D game. That meant I had a little under two weeks to add the “game” to the two-player 3D light cycle game, and a little over two weeks to finish the engine, script the locations of game entities, and create the graphics, maps, menus, animations, and sounds for the 2D space shooter.
I looked at my checklist, a wistful gleam of sadness in my eyes. There would be no textures, animations, or music in the light cycle game — I only had time to use primitive shapes and decidedly unglamorous lighting effects. And there would be just one level in the shooter — even the super small and short secret level would be left out. Game development sucks.
This signaled the beginning of my crunch period. Except it wasn’t like an ordinary crunch because I couldn’t walk away from my other commitments (and I wasn’t getting paid anything). I had to go to dance rehearsals. I had to turn up to my compulsory classes. This resulted in some days where I worked on the projects for fifteen hours straight, and others where I worked for eight hours broken up into five or six sessions that spread across the day. The uneven schedule only served to add to the stress and challenge of the task. (Please elaborate. We always hear about how much time it takes to make games but not about what actually happens during that time, which I guess is a lot of unglamorous grunt work.)
Somehow I managed to get the light cycle game finished two days before its deadline, with almost no bugs and a rock-solid frame rate. I considered trying to add a few cool features to make the game more interesting, but I was well behind schedule with the 2D shooter, so I shifted my focus squarely on developing “Shadow Wing,” which was due in just under a week.
At this point the game was barely functional. I had a complete level map with no enemies, items, or checkpoints to populate it. I still needed to write the code that would load this data into the game and create it. As if that wasn’t bad enough, I had yet to begin work on the audio, and the menu system was still merely a rough sketch on paper.
Once again I looked at my checklist. Goodbye high scores. Goodbye tutorial. Goodbye turret-like enemy. This was getting depressing.
I ended up getting both the main menu and in-game menu finished, minus a couple of options related to cancelled features. The music, missile sounds, and explosion sound effects were also included, but the boss theme had to be removed at the last minute because of a weird bug in changing the currently playing music track. I didn’t have time to improve the balance, particularly in the level design — where the “easy” path is somewhat difficult to get to, and the flow isn’t quite what I had intended.
My hopes of creating my own player, enemy, and item graphics were dashed — the final game used modified artwork that I found on Dan Cook’s excellent Lost Garden blog. Some of the tiles I created (and used) didn’t fit the game properly. I had cut corners all over the place and still I couldn’t even fulfill my scaled-back ambition.
I once heard a successful developer say that a game is never finished, just shipped. I now understand what he meant. The problem with deadlines is that there will always be something you have to leave out or ship before it’s finished. Deadlines mean compromise. Compromise sucks. Sometimes games do, too. (I kind of want to hear your response to the other claim about game development that comes from Miyamoto I think: That a bad game delayed could become good, but a bad game released is bad forever, and how realistic is that idea.)
(I think the story is fine as is, but if you have the time I think it would be a lot stronger if you focused on one of the two games rather than balance the two. You tell us how much time and sacrifices are made just to do two class assignments, but you don’t show us doing the all-nighters or jumping from program to program that most people don’t know even exist. I would suggest the Tron game because that seemed to be the most time-consuming. People would be surprised at how much work it takes just to do something that I’m guessing isn’t much better looking than the original movie [of course I haven’t seen your work myself.] And people know Tron.)