Skip to main content

Data First Project

Last post I talked about a project I started using the approach of designing the data first.  It is my current pet project and one that I will keep exploring and playing with because it is so much fun.  So here are some snippets of code the show the structure of my data and some of its values.


One thing you might have noticed is that I am using the JSON data structure.  JSON is a great format and pretty much every language already has a JSON parsing library so it really let me focus on the design of the data and how each piece would reference/connect to other bits of data.  Just like code you spend a good chunk of time very early on iterating your data design.  My first attempt I found that I was nesting things way more then I really needed.  Since there was no code at this point it was super easy to just move things to new sections and make large sweeping changes until everything started to make logical sense for what I wish to accomplish.  As the data structure started to grow I wrote a few small scripts to quickly fill in the data such as an image parser that reads all the images in a folder and adds them to the image resources tab and then looks for images named in sequence and turns those into animations.  At this point I wanted to start to put some code together for reading the data which became the main engine.


The cool thing about the above video is that the code and the data are completely separated.  The way I thought about it is that I wanted to create a format for my game data that did not matter what code or engine ran it.  If I wanted to write my game in python or c++ I could without having to change my data I would just need to re-write my parsing code essentially.  The huge win in that regard is that the engine code is super small and far easier to maintain and grow then everything I have done before.  Another huge win is that I spend more time designing logic then code and when I go to write code I already have data to process so I can test my new code with actual data right away.


Comments

Popular posts from this blog

Balance

Right now I am in the throws of balancing.  Not game balance but life balancing.  At work we are currently trying to wrap up our game and so things are rather busy.  At home both my kids AND my wife's birthdays are coming up in the next couple of weeks.  So things feel rather difficult to balance properly.  I was on track to get a simple blog post every week day for almost two months but I was only able to get through last month. At first I was pretty bummed that I missed a few days and then the old habits started to kick in again so it seemed like a good time to post something to keep the juices flowing.  I doubt anyone really comes here on a regular basis, I assume most people that find their way here do so from one of my posts somewhere else.  But I'd like to spend some more time putting things here instead of scattered all over the place so I will try and keep posting things as often as I can but for the next month or so the posts might have a fe...

Level Buddy | Blender Addon

An old-school CSG inspired level editor add-on for Blender 3D. The add-on is still very much a work in progress but fairly solid for blocking spaces super quickly.  Just because graphic fidelity has gotten insanely good and hyper detailed doesn't mean we shouldn't look back how older games were put together, at least that is my opinion.  One thing I always come back to is how quickly the tools in the first 2 versions of Unreal Ed 2 and Doom level editors allowed anyone to block out a level, iterate on feedback or try an idea out.  So I just took some time to put together a similar pipeline right in my 3d package of choice.  I wanted to keep it simple and quick to try out level design ideas.  You can use it for simple white boxing of your level, break it up into multiple static meshes and import them into your game engine of choice or  you can use that as your starting point to start more detailed modeling ....

Mike Acton "Data-Oriented Design"

This video is amazing and I can't recommend it enough to anyone that is writing code.  Hearing this stuff from someone like Mike Acton should really echo the importance of what he is talking about.  The core ideas he shares here can be applied to EVERYTHING including art and design.  Do your self a favor and really watch this video preferably multiple times to really drive the ideas home.