Today marks the first year of formal development on Eden. After finding inspiration from a newly released (at the time) early access game called RimWorld and a long-held adoration for Dwarf Fortress I decided it was time to create something. Coincidentally I had just put myself through a pretty good course on Unity but decided due to the cost of 3D development and my personal lack of skills opted to go the 2D. Having had some experience with the XNA framework, Monogame was just the perfect fit.
Time for a little history as I think the path and unexpected outcome are very profound not only for myself but for other developers out there in similar circumstances.
A couple years ago, I had put a decent amount of effort into an XNA project that was also inspired by Dwarf Fortress, a sandbox game along the same vein, however focused exclusively on a single character (more like adventure mode in Dwarf Fortress). I abandoned that project after some time due to life, disinterest and mounting complexity. I think that was a wise and smart decision in hind-sight, you do have to know when to take a break or walk away from something that isn’t working. So I took a lengthy break from hobby development and focused on other personal interests for some time; enough time to allow myself to be inspired again.
Fast-forward to around this time last year and that inspiration surfaced. Within a matter of days on very early Eden development, it dawned on me that I had that old project lying around, after another day or two of porting/merging, I culled out a bunch of unnecessary code from the original product and positioned the foundation on which to build what I started calling Eden.
I’m talking about this because it took me many years to realize that what I believed to be a failed or abandoned project, isn’t itself a failure. A project I walked away from (but was wise enough to have stored in a source control system) gave me an incredible boost in early development effort in a new project years down the road, old efforts in a failed product actually served me very well in early Eden development. My advice to others (and my younger self) is to build, create and tinker regardless of intention or outcome, you will succeed. The only real failure comes from giving up. Never give up.
Year in Review
Now back to the project itself. In the past year I’ve gone from a boilerplate Monogame project that when executed would only render cornflower blue to the screen, to rendering a fully realized three dimensional world in 2D. This of course just speaks to the graphical presentation of the game, under the hood however where no logic originally existed now exists a plethora of different systems that work in tandem and with one another to bring to life the world of Eden.
An off-the-cuff feature list for Eden as of today looks like:
- The world is a voxel based 3D world rendered in glorious crunchy pixelated 2D
- Procedural world generation which can be influenced by a number of settings available to the player upon starting a new game
- Unknown terrain and discovery, the internals of mountains and earth must be discovered through mining efforts
- Underground locations that differ from above ground locations in their resources and environments
- Multiple levels of elevation through which the player can easily navigate, explore and build up and down; not just side-to-side
- User Interface
- Fully functional UI system built with GeonBit.UI
- Player directed design/building system
- Weight bearing structures system – building up must be physically supported
- Interactive mechanisms such as doors, traps, stairs, lights etc.
- Artificial Intelligence
- All critters take care of themselves and do their own thing according to their moods, needs and desires
- A powerful crafting system where materials can be turned into useful objects with the right skills
- A large variety of crafting opportunities including cooking, brewing, smithing, smelting, tailoring, farming etc.
- Critters posses a variety of skills that increase with use and practice and have tangible effects on the outcomes of associated actions
- Critters may have specific positive or negative traits that affect their skills, attributes, mood, behavior, etc.
- A powerful system by which entities in the world are affected by actions they take, situations they witness etc., which affect the them in different ways depending on the situation, their mood, traits, etc.
- A fully realized day/night cycle with associated changes in critter behavior and other world simulations based on time of day.
- Creatures and animals hunt one another according to their unique behavior, situation and condition
- Indirect Player Control
- Issue orders to cut trees, mine the earth, fish, etc. Indirect control of colonists, whether they listen to the player or not depends on a variety of other factors.
- Designate locations to gather items, build structures, harvest, mine etc.
- Full control over the priority of colonist activities and skills as well as scheduling their times to work, play and rest
- Eden supports the saving and loading of an unlimited amount of save games.
- Critters will hunt for food and defend themselves as necessary, often erupting in glorious displays of bloodshed and bodies
- Support for both ranged and melee combat
The above list is not exhaustive but highlights many of the major features that have been implemented over the past year, I know I’m still forgetting some of them. There are TONS of smaller features and simulated effects that are also in place that I won’t go into here.
Along the way I’ve run up against numerous technical hurdles but through sheer tenacity broke through them, dug under them or otherwise surmounted them. I’ve gone through two major UI revisions, finally settling on GeonBit.UI. I’ve re-written the world rendering logic, probably three major times and more if I were to consider lesser but still significant changes related to it. I’ve gone from knowing almost nothing about how to draw 2D graphics to knowing a little bit more, I think my art has improved, certainly by programmer art standards 😀
A couple but noteworthy statistics worth mentioning in the past year:
- 533 source code commits
- 235 graphic assets
It’s been a productive year to say the least! I look forward to the next year of development and have many plans in place to begin focusing on additional content and expanding and refining existing systems, logic and game play mechanics.