Still Alive Saturday #29: This is Hard

Hey everyone!

This week we focused on making improvements to the crew ai (getting tired of hearing that yet?), world building and starting work on a new enemy.

 

Crew AI

The work done on the crew ai this week was mostly working towards making the crew members more stable when travelling around the world. There’s a ton of work to do before I’m comfortable moving on from it, and work is slow (and tiring), but it’s definitely seeing progress. They’re becoming less and less likely to fail a path. I don’t expect this to be done by next week, but it’s coming along.

 

World Building

Our goal with Tomorrow’s Horizon is to create an incredibly rich, detailed and immersive world. To do this, we need to spend a lot of time fleshing out the history, geography, etc. We spent some time this week figuring some of those details out, and what we’ve come up with is pretty exciting. I’m happy to be able to say that the work we’re doing here will directly impact gameplay as well, instead of just being flavour text.

 

The Hardhead

The Hardhead (name pending as always) is the next big enemy that we’ll be focusing on. It’s face is covered in thick plating that prevents you from hurting it from the front. The player will have to employ creative dodging and jumping in order to manoeuvre behind the beast and slice at its backside.

a42d229add0806d6d8e9f9d8c0de0424

Although seen outside here, the Hardhead is native to dark, wet caves where its presence in the claustrophobic tunnels is a threat to be seriously reckoned with.

 

That’s all for this week! Check back next Saturday for pathfinding progress, more work on the Hardhead, and a cacophony of other additions and improvements! See you then.

Chris

Still Alive Saturday #28: Do I Dare?

Hey everyone!

This will be a simple update, as the Ludum Dare begins this evening and I will most definitely be taking part. If you’re interested in what I’ll be working on this weekend, be sure to follow along on Twitter. I’ll be tweeting my progress semi-regularly as the weekend progresses.

As for what we got done this week:

1. We finally sat down and had our sound design discussion. We settled on a direction, as well as musical inspirations, and made a couple sounds to start things off. We now have a functional footstep sound engine (TM) and some sand/cave sounds to match. Now that we’re getting into sound, expect some actual video footage coming in the near-ish future.

2. We finished the first Quetzan variant. Following typical bird fashion, male Quetzan are colourful and vibrant, and female Quetzan are more desaturated and basic in colour scheming.

 

1cc393edd0087bc7a0069bd24524217a

 

3. I wrote a batch file to allow for easier adding of new character skins into the game. This will hopefully reduce a half-hour task to around 5-10 minutes. This makes for a happy Chris, believe me.

4. I made progress in developing the new pathfinding engine. AI can now navigate over gaps, which makes them about 100% more useful than before. They’re still squirrelly and buggy, but progress is being made and I am glad.

 

That’s all for this week! Expect more progress on pathfinding next week, as well as some new sounds and (I’ll say this again) potentially a new enemy. See you soon!

Chris

Still Alive Saturday #27: Bits and Pieces

Hey everyone!

 

This week was a bit of a miscellaneous task week. We spent the first two days completely and utterly engrossed by the Full Indie Summit here in Vancouver. It was a great experience and gave us quite a deal of insight into some aspects of game design and development that we hadn’t thought of before.

Beyond that, we took some time to finish up/implement a couple features that had been waiting at the sidelines for a while. Justin completed the ocean island icons for the map interface and began work on the first variant of the Quetzan. This is an important milestone for us because it will mark the inclusion of all 3 playable races into the game, at last.

I spent the week looking into re-designing the pathfinding system, primarily. Pathfinding is a complicated beast, especially in the non tile-based platformer environment that we’re working in. It’s been a struggle for me to learn, comprehend and expand on the limited resources out there for an environment like this, and so the first run of the system that I created has some flaws.

The major flaw is that I designed the algorithm to work in a grid. This works in a top-down pathfinding environment where every tile is either walkable or not walkable, but in an environment with gravity and open air, the pathfinding algorithm needs to be run on more of a general graph.

What I mean by this is that the walkable ground should be linked not based on adjacency in the grid, but based on connections created by edge detection, fall lines and jump lines. This means that the algorithm can pathfind across gaps that are as wide as I specify, allowing the ai to know when it has to jump to reach its destination.

I’m going to be spending this week largely attempting to implement it. It’s going to take some time, but hopefully I’ll be able to make a sizeable dent in it.

 

That’s all for this week! Check back next Saturday for some word on sound design, as well as (with a little luck) a new enemy!

Chris

The Pinnacle of Laziness

Hey everyone!

There won’t be a SAS update this week on account of a couple things:

 

1. Justin returned from his vacation halfway through the week.

2. Chris is a lazy piece of garbage.

3. The Full Indie Summit in Vancouver is happening this weekend.

 

We’ve decided to officially take this week off. Progress will resume in full force next week. In addition, if anyone is going the Full Indie Summit, be sure to look out for us! I’m the scrawny white kid with glasses and Justin is the muscular Chinese guy with glasses. We’d love to say hi!

 

See you all next week,

Chris

Still Alive Saturday #26: Spelunkin’

Hey everyone!

It’s going to be a bit of a short update this week, not because we didn’t get much done but because there isn’t a whole lot to show just yet.

Both Justin and Avash are away on vacation presently, leaving little ol’ me all by myself to work. I made some good progress on cave generation, mostly in terms of item placement, chunk sizing and enemy locating.

More exciting than that, in my opinion, is the revised item/enemy hierarchy I implemented this week. We discovered this particular design from a game design blog that I’ll link at the end of this post. It’s very interesting, and I’ll explain it briefly so that you understand how I plan to use it.

 

The hierarchical system for both enemies and items works in a very similar manner, but I’ll use items to explain for the time being. The item hierarchy allows us to specify, with as little or as much specificity as desired, what item to give to the player in a certain situation. For example, when opening a chest in a certain type of cave, we may decide that players should only get a weapon, but we don’t want to specify precisely what weapon we want to give them because we want it to be a surprise, even to us. Alternatively, perhaps we’re generating items for a shop and want to pick from all available character equips. This system allows for both of these scenarios and more.

The way the hierarchy works, in brief, is this:

1. We begin with a root node. The children to this root node are the widest possible categories for items that we want. In this situation, my categories are “Equips”, “Ship Equips”, “Consumables” and “Miscellaneous”. I can add more later if  I want, but those are my categories at the moment.

2. We add sub-categories under each category based on how we want to structure our hierarchy. For this example, under Equips I have “Head”, “Body”, “Trinket” and “Weapon”.

3. Under each of these sub-categories, I add a list of items that exist under that category. These are keyed by item name, so for example: “IronHelmet”.

 

When I want to retrieve an item from the hierarchy, I can specify any node that I like. I could specify “IronHelmet” and it would only ever retrieve that specific item. Alternatively, I could specify “Equips” and it would give me anything that exists under that node, at random.

There are a couple additional aspects of this design that help add to the variety and usefulness. The first of these is the ability to backtrack up the hierarchy, if desired. For example, if I want my cave chest to give weapons 90% of the time, but give an equip at random 10% of the time, I can specify that the hierarchy should be able to backtrack. The hierarchy may then step up one node to “Equips” and then choose randomly from there.

The second special thing is to be able to assign a rarity value to each item node. When calling for an item to be generated, we can specify a rarity, and only items below that rarity level will be generated. This allows us to be sure that we aren’t giving the player something too powerful too early in the game.

If you’re interested, here’s the link to the blog that we stole the design from http://journal.stuffwithstuff.com/2014/07/05/dropping-loot/

 

That’s all I’ve got to share this week! Hopefully the slightly more technical/design-heavy update was interesting for you all. See you next Saturday.

Chris