
Welcome to The Terraform Project
- a game by Eric Yew
This page mirrored here. Look there for most up-to-date stuff.
05/11/04 - Update
Here's my postmortem
This is going to be a continuing project, cause it's not done yet, but I really want to keep working on it.
Here's some screens from the final demo:
- Screen 9
- Screen 10
- Screen 11
- Screen 12
- Screen 13
04/22/04 - Update
New, check out some concept art by Mark Wyszomierski
New Screenshots:
- Screen7
- Screen8
Spent a ton of time working on a robust
pathfinding system this update:
- Two levels of pathfinding
- First level, large (~1/4 of a screen) tiles
- Second level, cells small enough for smallest unit
- On entry to new tile, secondary pathfinder called to find path across this
tile to next big one
- Limit scope of A* to small number of grid squares, still allow complex pathing
between units/buildings
I am also working on a pathfinding priority system
- If unit collides with another, one with lower priority will stop/get out
of way
- If no path is found out of a tile, try to move surrounding units if they
are lower priority
New Stuff completed:
- Some more UI
- Most of pathfinding
- Unit, Building, and Resource database build from XML
- 3ds model loading
- Have concept for art, etc
- Weak attempt at formations, it sucks
Stuff remaining to do:
- Finish up networking, event backend already in place
- Combat engine! (w/ cool effects)
- Art is coming along well
Bottlenecks: Formations and moving groups of units around = huge pain. I might make unit movement a little more dumb.
04/16/04 - Update
It's carnival, so I didn't really get too much done
this update.
Not too many changes
as far as functionality goes in this one, mostly tweaks to the engine.
- Added some game content, a couple buildings/units while real art is coming
along
- Added buildings database, built from XML
- Implemented some little UI things (click and drag selection)
- Optimized engine for performance, goal is always >60fps, with lots of
units on screen
Here's a new screenshot:
- Screen6
On a completely unrelated note, here's my 'studio' bumper:
- Xelios
04/12/04 - Update
Check it out, the game is making progress
- Parses and loads XML unit files
- Constructs unit database from XML
- Loads 3DS models, materials, and textures
- Units correctly hug ground, constrained to ground normals
- Loads XML configuration settings
Here's a screen with a test unit:
- Screen5
04/06/04 - Update
Progress is coming along pretty well, a lot of the backend support
was completed.
- Texutre Manager
- Input Manager
- Terrain subdivision and generation
- Quadtree culling
- Input handling setup for networking
- Player and unit framework
- Mouse based selection and coordinate assignment
At this point, basically you can select the spheres that are
placeholders for units, and make them move arround.
Controls so far:
-Your mouse scrolls the terrain when it's at the edges of the window
- Left click: select unit
- Right click: move unit to target
- Esc: exit
Here are screenshots:
- Screen1
- Screen2
- Screen3
- Screen4
Lots of stuff to do still:
- For now there are hardcoded test variables, and setup need to be read from
an init file
- Model loading has to be incorporated via L3DS
- Unit/Building parser and loader
- A* pathfinding must be ported over from lab3
- Building functionality must be implemented
- Networking
- Combat engine
Bottlenecks:
- There's an annoying bug when the UI is drawn to the screen, it messes up
the depth buffer an interferes with unit navigation (UI is turned off in submitted
build)
- I'm having some trouble reliably constraining pitch,roll of a unit to the
terrain normals. I might have to come up with a better interpolation system,
otherwise they pop back and forth.
Conclusions:
- Overall I think it's going quite well, and I'm actually ahead of schedule
for this milestone. There was a lot of foundation that needed to be put in
place that's done now, so everything from here on out is actual game logic
and some networking stuff.
NOTE: The CVS code will not build under linux because of some windows specific stuff, I have submitted a build to the ftp server
Formal Project Proposal
Game Name: Terraform
Development Team: Eric Yew (ecy@andrew.cmu.edu)
Game Genre: Real-Time Strategy
Brief Description:
Terraform is an overhead perspective 3D real-time strategy game where the
player controls his fledgling Mars colony, mining resources and researching
technologies to build structures and units. The player will wage war upon
other colonies for control of the planet’s surface using various units
each with their own particular strengths and weaknesses. The ability to build
units and structures will follow a tech-tree, and any construction will require
varying amounts resources. There will be a heavy emphasis on strategy and
tactics, since all units will have weaknesses and will maintain carefully
balanced rock-paper-scissors offensive/defensive relationships.
Scope:
For this class, I plan to get a completely working and extensible framework
up and running. After the initial engine is in place, I can then add more
units, buildings, and their behaviors as a continuing project. I plan to have
a few units and a couple structures available for play by the final demo,
but due to time constraints, I will shoot for a limited subset of units/structures,
while still providing functional and enjoyable gameplay. My main concern is
designing the engine so that new units, structures, and their accompanying
behaviors, rules, and models, etc. can be added via resource files to the
game rather than changes to the code, in a more open-ended, extensible, and
data-driven design.
Game Features:
- Variety of units and buildings, each with different strengths/weaknesses.
- Use an endless variety of strategies and tactics against opponents.
- Mouse-based interactive unit picking and control.
- Waypoint assignments for movement
- Fully 3D game engine.
Significant Technical Features:
- Mouse interactivity for picking, highlighting groups of units, and order
issuing
- Dual-resolution path-finding for map traversal and obstacle navigation.
- Combat engine with weapons effects and unit interactions.
- Encapsulated and compressed game-state update for networked multi-play (?)
- Overlay interface for build progress, order-issuing, status, and upgrades.
- Tile based terrain, alpha-blended/multi-textured at edges of tiles.
- Completely data-driven extensible design for units, structures, and accompanying
abilities and behaviors.
Implementation Plan:
- Terrain will be a tile-based system utilizing textures obtained online.
In addition to holding texture information, each tile will also hold collision,
‘is-passable’, and resource information if applicable.
- Content modeling and texturing will be done in 3D Studio Max by both myself
and an artist friend. Model loading will be accomplished via the L3DS library
freely available online.
- Sound effects will be obtained online, and will be handled by the FMOD library,
freely available online.
- Unit and building behaviors/parameters will be represented as loadable resource
files, written in XML or a plain text file. Example: Building ‘barracks’
will be have parameters on hit points, available technologies, and the ability
to create named unit ‘soldier’, whose parameters are specified
in the soldier unit file. Potential research items, new possible buildings,
and possible unit constructions will all be handled by a unique ID system
that will reference other resource files. You can create a new ‘scout’
resource file with necessary info, and the edit the ‘barracks’
resource file and add the ‘scout’ ID to possible units that barracks
can produce, and everything else will be handled by the engine.
- Pathfinding will be reuse of lab 3 A* pathfinding code, with an added level
of finer grain navigation for groups of units moving around, etc.
- Terrain frustum culling will be using quadtree code from lab 2 that represents
terrain as tiles of vertex buffer objects.
- For now I am going to try and forgo an actual enemy AI in lieu of providing
networked multi-play. I made this decision because developing a competent
real-time strategy AI is infeasible given time restrictions. It’s always
more fun to play against another person anyway.
Schedule:
- March 29th: Begin work on terrain engine, utilizing lab 1 framework.
- April 6th: Terrain engine functional, can move camera around, as well as
select a ‘unit’ on screen via click selection. Able to translate
mouse clicks to terrain coordinates.
- April 13th: Model and resource file loading and parsing complete. Pathfinding
for units integrated, can click and move a unit around terrain.
- April 20th: User interface in place with accompanying feedback. Major functionality
in place, can build structures and units, mine resources.
- April 27th: Combat engine in place, units fight, networked state updates
working.
- May 1st: No new features, finish up remaining stuff, weapons effects, etc.