I moved to a new URL! Check it out!

Dev Log: Going Data Driven

Dev Log: Going Data Driven
I've been making a lot of progress on tackling this system I want to implement for my next game. Since yesterday I decided to scrap a bunch of code in favor of going for a data driven approach. Lars gave me the final push I needed to go for this method of content.

My initial design of the code structure was going to be object or class driven for specific content. For example I had a namespace and a folder set up for "Weapon" and inside Weapon there was a "Base" class for any sort of Weapon. Then I made a few classes that extended the Base class inside the Weapon namespace which then changed values and added their own code to various functions.

This seemed like a good idea at the time. Using classes and extending base classes for specific functionality is something I do a lot in my games. It makes sense for a lot of things, I think. Like enemies. The enemies in All the King's Men for example are specific classes that extend a base Enemy class to implement their own specific functionality.

As I began to think about all the possibilities for gear, weapons, enchantments, and whatever else in my game, I was pretty grossed out by the thought of having a billion classes in my project for each single one. After thinking it over I ripped out all my old code for content and started on replacing it with one class for each different thing, and having a factory that instantiates objects using data from various data xml files.

I'm more excited about this method since so far it feels cleaner. The code to parse everything out of the xml for each object is pretty ugly, but editing content should be pretty easy with this structure in place. I can also use the xml files as a good guide on what to do next. Right now my work flow is to just start writing the xml data for whatever I can think I would want to customize for each thing, and then I start implementing each thing I've written. Working "backwards" like this can be a big help when working in a system where I have no idea where to begin.

Dev Log: RPGish Systems

Dev Log: RPGish Systems
I'm spending this week at the lovely Indie House in Vancouver, Canada! Since I was coming up to Seattle for Steam Dev Days I figured it was a good opportunity to just hop on a bus and spend some time with my best Canadian pals.

The past couple of days I've been banging my head against a wall trying to come up with some kind of RPG inspired system for the game tentatively titled Gaiaden. One of my goals for the game is to have a robust system of equipment, weapons, enchantments, and all that kinda stuff for the player to experiment with. I've never really created anything like this before so all of this stuff is completely new territory for me.

I thought a good place to start would be to check out roguelikes since they are games usually all about systems of items, equipment, spells, and more. I searched around for some open source ones and managed to find Amaranth. Although the source of this game is super clean, it was pretty hard for me to follow.

I also tried looking up just some general purpose roguelike development tutorials for using items, equipment, and all that kinda stuff. I read through a couple like this one and this one but they weren't really digging deep enough to get to the part I was really curious about. I want a system in which "Enchantments" can trigger, and then have an effect on something in the game, and I couldn't find any resources to help me understand how to build such a system.

I put out a call for help on Twitter and got help from a lot of developers, and I'm constantly amazed at how awesome the game making community is. Special thanks to all of you who helped me out via Skype and Twitter! You are the very best.

After some late night chats with developers who've been through this scenario before, it seems like I have to go down the route of using a bunch of events in order to trigger any enchantments that are on the player. The idea is that equipment in the game can have enchantments which could have simple to complex conditions, and effects. I want to ultimately be able to generate equipment and enchantments on the fly... and it turns out this is pretty tough to figure out.

I have a basic system working now, but the way I do it right now is to loop through all the available enchantments on the player and have them call a CheckTrigger() function. That function also takes in a struct called TriggerInfo, which will eventually contain a boatload of info about the current game state. I might scrap this and go for a pure event based system, but I worry about over using events and not being able to follow the code if everything gets totally decoupled. The TriggerInfo method works great currently, but I have a feeling once I try to trigger enchantments based off of things like "the player just built an island" or "the player just took damage" it'll become a pain to register that with TriggerInfo on the update function.

So that's where I'm at now, just churning away at this system to eventually enable the player to get some cool stuff set up.

Some Steam Dev Day Thoughts

Some Steam Dev Day Thoughts
Hey! I am alive and still kicking after my adventures in Disney World. I decided to take a longer break after Disney, as I only had a couple days back home before I had to fly out to Seattle for Steam Dev Days. I figured I can jump back onto the blog post train with some thoughts about the brand new conference from the folks at Valve.

* Whoa this conference was small. I heard a rumor that it was just 1,200 people. It felt quite cozy and reminded me of the Independent Games Summit. There was more than enough space for everyone.

* The free stuff was out of this world. We got a Steam controller which is awesome, but Intel also stepped in and gave everyone a free Steam Machine. Madness!

* Actually on the topic of free stuff, we also got a winter hat (toque?) and an umbrella, which are two things I totally needed for this trip to the northwest! Plus they gave us all notebooks and pens which are also awesome things that I needed for the conference and made great use of.

* Valve blew every other conference out of the water when it comes to perks for just attending. Not only with the free bag of stuff, but also a catered breakfast and a pretty solid dinner on both nights. I don't drink, but there were open bars on both nights (I think it was both nights at least.)

* The Day 1 talks were right up my alley. A lot of perspective on development and marketing, and a lot of it coming from indie developers or developers from small studios.

* Day 2 though was a little off course for me personally. It was a lot of tech talks involving virtual reality and Linux stuff, which I would be interested in but is most likely over my head at the moment.

* Looks like Linux is the future for Valve which is a little scary for me being so bound to Windows. I do everything in Windows and have no clue about anything regarding Linux, so I hope I can figure it out for my upcoming projects. Using Mono with C# should be a great start though!

* Apparently there was some baller amazing virtual reality demo but I didn't get a chance to check it out. (Only 60ish people actually saw it during the conference.)

* I got to see a lot of developer buddies at the conference which was awesome, but I still missed a lot of people which makes me sad.

* I am really bad at meeting new people and generally don't like to socialize, and I need to fix this. I met a handful of new people which was cool, but I definitely didn't put enough effort into it. I too often fall back on clinging to people I know and people that I feel comfortable with. I get really mad at myself for being so introverted.

* There was a cool after party with some kinda live band or something but I peaced out after a few minutes because loud dark spaces are not my thing. I wish there were more things to go to that weren't loud dark spaces with drinking, or maybe I am just not social enough to understand.

* Valve wanted to put on a conference that had a lot of value because they believe that most conferences aren't worth it, and I think they succeeded. However it'll be interesting to see if there's a Dev Days next year and how many people register. I have a feeling that a lot of the conference was the way it was because of how limited the attendance was.

* Am I going to develop for the Steam Machine and SteamOS? I guess I should put some effort into it sooner than later, because it seems like it'd be a sure fire way to get good support from the Steam people, which is a big component on having a successful game on Steam.

* I'm nervous for when the time Steam is going to be totally open and the question will be not how to get your game on Steam but how to get your game on the front page (which might already be the case with Greenlight accepting so many games lately.) Successful games are featured time and time again, but getting a niche little known title to the front page is nearly impossible.

* Unfortunately Valve didn't actually give Tyler and I brand new Tesla Roadsters.

Overall I had a really great time at Dev Days, and I hope they put on another one next year! It was an awesome excuse to get out of my room and travel more and meet up with rad people that I only get to see a few times per year.

Doodle Post

Image

On the Road Again

On the Road Again
I'm starting off the new year with a lot of traveling, so I'm trying to figure out how I can possibly keep up posting stuff on my blog in the next few weeks.

Today's adventure is going to bring me down to Long Island in New York, where I'll be departing on an airplane to Orlando to eventually get to Disney World. I'll be there for a few days, and then I'm going back home to the desert where I'll then be leaving for Seattle for two weeks. Some of those two weeks will also be spent visiting the Indie House in Vancouver.

I think this Disney World trip is going to be my first ever proper "vacation" in a long time. I won't really be on my laptop at all, or on the internet, or working on anything for 5 or 6 days. I'm wondering if it's going to be relaxing, or terrifying. Hopefully I'll be distracted by enough roller coasters.

Once I get home, and into Seattle, I'll be getting right back into working on my new game which doesn't have a good name yet...

Doodle Post

Image