Jon Miller – Final Project

by Jon Miller @ 11:57 pm 24 March 2010

Summary
This is a game about protecting your “Little”, a small car that follows you around, while running into your opponent’s “Little”. At your disposable is the ability to change the terrain at will. You can form hills and valleys in real time at your discretion, to aid you and thwart your opponent.

To download the game, contact me or Golan Levin. The filesize is too large for this server.

Some screenshots:

The players face off.

The battle ensues!

Green wins!

Concept
My idea went through several iterations, however I was satisfied with what I ended up with. I wanted to do something involving dynamic terrain generation. Initially, my idea was to write algorithms that simulated Earthlike terrain formation, creating a similar effect to watching a few seconds of stop motion photography of a mountain forming over a period of thousands of years. However, I was also interested in making this a game somehow, so I decided to add an element of driving through these mountains, as they formed.

I decided the gameplay element would be to make as much progress as possible, as terrain gradually became harder and harder to progress through. This idea was scrapped, because I felt it would be frustrating to have to struggle through ever growing, terrain, with losing by getting stuck as the only option. I also saw my original idea (forming terrain) getting lost as I attempted to answer the question of how to create a lifelike environment in only a few weeks.

After many more ideas passed through my mind, I settled on creating a game where the player controlled the formation of hills and valleys, an idea I had from the beginning. The game would involve two players driving around, each in charge of protecting a “baby car” while simultaneously crashing into the enemy’s baby car. This idea is only one of several that I could have implemented; listed here are some of the others and why I chose not to implement them:
A game where two players cooperate to ward off zombie-like little things that attack your castle in waves. Defense would consist of forming hills and valleys to lure them away from your castle to a hole, where they would fall to their doom. This idea was scrapped because I felt the game would be too difficult to implement quickly and well.
A game where one player attempts to escape the other player. The hunter can make hills and valleys – to hinder and trap the quarry. I scrapped this idea because I wanted both players to be able to create hills – I felt being the quarry would become boring.
A game where one player protects a treasure while the other player attempts to capture it. The game that I eventually created is, in essence, similar to this game, except that each player has something to protect, and ‘capturing’ is changed to ‘crashing into’. I wanted to make sure to add an element of collision and mild violence when I observed Xiaoyuan’s glee at running into my car during one of the checkpoint presentations.

Implementation
At the suggestion of one of my classmates, I started to use Unity, a game engine designed for making 3 dimensional games, especially first person shooters. Using Unity as a development environment has been a very smooth experience, and I would recommend it to anyone looking to rapidly prototype computer games that require advanced physics, good graphics, or simply work with a 3D environment.
From Unity, I took from the public domain a demo of a vehicle and began to familiarize myself with heightmaps and meshes, because I would be constructing all of the terrain procedurally from code. I also looked into terrain deformation, and I found a demo of mesh deformation, which proved to be somewhat similar to what I needed.
I decided the terrain would be an infinite expanse of grid that formed as you approached it – this would serve to give the world more of an otherworldly feel as well as reduce rendering costs. Also, if necessary, I could delete parts of the grid.
Then, I learned how meshes behave, and I began to create my own rectangular prism meshes from code, as these would be the basis for my terrain deformation. Once I had satisfactorily created these prisms, I looked into deforming them to make hills and valleys. The mesh deformation algorithm was essentially a function that that added to the height of the mesh at the point of interest, and changed the height of the surrounding points by varying lesser degrees, so that it looked as if someone had stuck a ball under a rug.
I would then redraw the mesh and recalculate the collision detection. I am glad that I chose to use a grid from the onset, because I was able to apply a couple optimizations that allowed the game to run at an acceptable rate on my computer. Some include: only calculating the collision detection near the vehicles, updating the collision detecting at a slower rate than the rendering of the meshes, and only calculating the deformation on a select part of the grid, rather than the entire playing surface.

Future
I think the game could do with more polish. I also think there are many new possibilities for using terrain deformation as a gameplay mechanic – only one of which I have explored. Furthermore, even within the concept of terrain generation itself I have barely scratched the surface. I could create tunneling algorithms, or the ability to create crevasses.

3 Comments

  1. Jon — comments from 4/19 crit:

    ✓ Jon: TRON terrain generation game.
    ——————————————————————
    I like that your test player is inventing his own game on top of your proposed game. That’s usually worth listening to and baking further into the design. (It seems like you’ve done so already with the radar, but what else can you do? Car damage?) 🙂 This isn’t to say that guarding the treasure can’t be a primary task with the ramming of the other car being an optional offensive technique (think Halo Capture The Flag.)
    This actually feels like with the right game mechanics, it could be a very, very popular game (like, of the sort you could sell) – but simple, fun game mechanics are the hard part. Don’t fret that you haven’t nailed them down already, just playtest, playtest, playtest this with people again and again and again…
    You’re not going to figure out which is fun until you play it. Just go with a hunch and get it to a point where you can get it in front of players ASAP. Finding playtesters is hard, man – even Harmonix had to bribe people with pizza…. -SB

    You have a nice technical achievement — real-time terrain generation. But you haven’t connected this well (yet) to a game mechanic. There are interesting opportunities here.. you need to pick a solution.

    Do you want a competitive game, or a collaborative one? (Xiao).
    Caryn: reminds me of Lemmings, where you had to create obstacles for gremins. A herding game…
    OR
    Jordan: a Tron-style game would require a real penalty function related to the slope of the terrain.

    Sweet results. This looks impressive. I think you need to think about the metaphor a little bit, though. It’s not entirely obvious that your car is creating this mountain. How can you tell the user that your car is doing something to change the terrain.

    I would get rid of the shader. I’d like this to look more geometric and less realistic.

    I really like the radar thing.
    More hills please.

    I WILL RAM YOUR BUTT

    The lighting effects look really impressive. I love the radar view as well.
    I agree that it’s not completely clear that your car is creating the mountain… can the mountain creation be more dramatic? Maybe you can turn on a mode where you create more dramatic/more threatening mountains.
    Lemmings: http://en.wikipedia.org/wiki/Lemmings_(video_game)

    –Sweet! awesome! yes!!!
    -I’m not a fan of the treasure guarding. I think you should stick with trying to destroy the other vehicle. Currently, the mountains don’t seem like they have much effect. They should be scary to drive over! (e.g. “I can cut him off if I drive over the mountain, but that could be dangerous and I might die)
    –The minimap is cool! though, the player 2 minimap/overhead thing doesn’t seem to work properly.
    –the rear view mirror might be unnecessary.

    This is tron: http://www.baromon.com/games/Flash_Tron/Flash_Tron.htm
    Matches are short and sweet, and that makes it a lot of fun. It’s easy and quick to pick up and play, but it can provide lasting fun! An intense match might last no more than 45 seconds~

    so awesome. could make it more challenging by reducing the amount visible to each player? could they play on seperate screens and have a seperate knowledge of the world/minimap/fog of war type thing.
    what if driving backwards was like a land eraser? should definitely have holes to fall through somehow

    No radar for player 2? I like the lighting! Are you going to add any color terrain to it? I wonder that if you could have the user decide somehow what type of terrain is generated…how high the terrain is or maybe the type of terrain (desert, mountains, forect, etc.)? Since, as mentioned before, the game has become more two-player oriented. The treasure idea is cool, but I think the “kill each other” objective is also cool. Maybe generate a points system and display the points along the bottom? Maybe if you go accross a certain type of terrain you crash and lose life or something. Maybe you could also add items that you can pick up and use. Very great progress! It looks like your learning and having fun, and I can’t wait to see the final thing! It’s going to be awesommmmeee! It kind of reminds me of mario cart without the cute characters. -Amanda

    The top left small map is pretty nice.
    Maybe one car grows the mountain and another one erode it.

    Graffiti created by driving around.

    For the attention span of art project audiences, you probably want the mountains to generate faster.

    Maybe there should be something that informs the players about their treasure? I think the object of the game should be clear just by looking at the screen at any time

    what about realistic texture mapping for the terrain?

    What if one car lowered the terrain?

    It’s too slow! (Not just the framerate)

    How to make competition fun?

    Comment by golan — 30 March 2010 @ 6:11 am
  2. Comments:

    Collaborative images:
    http://delicious.com/golan/collaborative_image

    I think that’s how some buildng and urban planners actually figure out where to put sidewalks – they look at how people cut across lawns naturally and lay the sidewalk where the path is most trodden. Anyhow, there’s something very Zen about this idea, considering it’s inherently about the End Of Days. -SB
    >> They need to do this on the cut at CMU! I think the paths are unintuitive.
    >> Completly agree.

    http://golancourses.net/2010spring/01/31/pixel-city/

    TRON!! http://www.youtube.com/watch?v=3efV2wqEjEY

    TRON LEGACY!!! http://www.youtube.com/watch?v=6HcsDc_9LX8

    TRON THE OPEN SOURCE VIDEO GAME: http://www.gltron.org/
    also realtime glow: http://http.developer.nvidia.com/GPUGems/gpugems_ch21.html

    Unity3D is the game engine of choice for mods. Speak with Riley Harmon, MFA student in Art, about game engines.

    Comment by Jon Miller — 30 March 2010 @ 7:17 pm
  3. Comments from 2010/04/07
    ————————————————————————–
    Jon

    mmm, tasty, you got the look down. Nice terrain generation too.

    Cool 3D generation! I like the “Tron” or “Snake” idea. Maybe you can also have the user chase after something and if it reaches it a feature of the terrain could change. Maybe to make it easier, you don’t have to have the user collide with complicated mesh objects? Not sure though…great start!

    so awesome

    http://www.quelsolaar.com/love/index.html <-- a procedurally generated massively multiplayer online game. I think some of his stuff is open sourced.

    Comment by golan — 7 April 2010 @ 1:24 pm

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2016 Special Topics in Interactive Art & Computational Design | powered by WordPress with Barecity