Thursday, 24 August 2017

Developers Log #1 - Introduction

Let’s get ready to rock and roll!

Currently, we’ve been working towards the ‘Asteroids’ milestone of the project. We’ve made a lot of progress over the last few weeks.

So far, it’s been a real journey in identifying our art style and establishing the pipeline. We’ve definitely got that down pat now. We’ve also been working hard on the data structure and access pattern for the Ships and Modules, and how that works with a save file. The controls are pretty solid, and soon we’ll be looking for feedback on how it feels.

Asteroids are generated using a particular set of rules and ratios, and can contain more than one type of ore. Beam and Projectile based weapons can be installed on the ship and fired, either forward firing or as a turret with a specified firing arc.

Beam weapons and some Projectiles can cause the ships reactors to heat up, which is visually indicated to the player. An installed reactor module defines how much heat the ship can take before becoming damaged, and how fast that build up of temperature will dissipate.

What is ‘The Asteroid Milestone’?

The Asteroid Milestone involves the player being able to navigate their way through an asteroid field, harvest minerals from the asteroids, and bring them back to a central point.

Failures will be simulated such as life support, reactor, and mining beam troubles due to the cheap and shoddy nature of the ship you’re flying, as well as the hazard itself of navigating around the rocks and other ships in the area. Of course, the ore itself is valuable.

The credits you earn from depositing this ore will enable you to purchase better ships, or better parts for ships you’re flying, so that you may work your way up the ranks.

It's safe to say that the Asteroids Milestone is a real base for the project - as it should be being the first milestone.

So much setup has been done here for the rest of the game to follow from. From Modules being installed on Ships, to little failures that occur with cheap Ships and Parts, Station Docking, Weapon Firing systems (Note: While combat isn't a focus now, the 'Mining Beam' is an extension on the Weapon System), robust Cargo Systems, and even little Notifications that tell you what you're up to.

Everything we are completing in this milestone is setting up future functionality. The way we will continue with development reflects this - each milestone will be setting something up for the next, when eventually all the little pieces will fall together, and with enough content - create something amazing.

And on to content.. we are also beginning to setup some of the lore and ships of the universe!

We really want to create a world that you can get lost in. I don't know about you, but examples such as 'Wookieepedia' or the Star Citizen Universe are just so rich and full of history, information, and story.

This is exactly the kind of thing we want to create for Beyond Orbit, to the point where that random 'Food Ration' cargo item can tell you its nutritional value and what system it was produced in.

We realise this will be a lot of work, but we plan on using Procedural Generation techniques to make this job a little easier for us. We're designing tools to help writers define chunks of content that can be pieced together to make something larger.
'Faction', 'Location', 'Industry' are some things that might be used to randomly generate some Module Producing company - it's production being identified from various rules that are associated with the chunks it's associated to.

The idea with this technique is that it's the smaller chunks that are written. Some values may also be assigned, like Wealth, Age, or Tech Level. Rather than having to write thousands of different combinations of these, the combinations are generated automatically using the chunks and values that are written by stringing them together in a logical but creative way.

A very good example of this is with the Module System.
Modules are made up of 'Components'. Components have different values that may affect how quickly heat is built up, how much energy is used, how large the component is, the colour it makes its beams or reactors, the sound effect the engine uses, etc. Rather than us create different Modules and try to balance and vary them - the system does the work for us.

By defining rules such as 'An engine must have one or more of these types of components' and 'This production company has access to these components', we can dynamically build Engines of varying power and style - just by saying which components the engine is made up of.

Oh yeah, and 'Components' are something we plan to make producible by the player in a future milestone. Every component is made up of some combination of Ore/Mineral, and other components. You can start to see a real production chain forming here, and this makes us really excited. Not only will it speed up the creation process for us, but it's really easy to generate thousands of unique modules - and eventually give the player the ability to create their own.

Some of the earlier setup we did was involved with defining the roles and classes for ships. We plan on having everything playable, from the little Mining drone, all the way up to the Battle Ships and the Command Vessels.
alt text

Art Style

The art style is still ‘Lit-2D’. Everything you see is a sprite, that has a normal map created from a 3D model with some directional lighting, to enable us to simulate the sprite as if it was lit from any particular direction.

Shaders are built in a way that they can do a lot of the work. Things like the color of the hull, the illumination of the glass, and the heat from the reactor can all be customized and use properties coming from modules on the ship (with Reactor heat being the best example). In that example, the glow coming from the reactor heat is dependent on how much stress the ships reactor is under, and will shine brighter if under a higher load.

This is all done based off of one single texture, with different information in the RGB channels respectively. To enable some more variety with the ships, a ‘paint job’ can also be overlayed like a skin, which just sees the RGB texture as a simple RGB texture.

Asteroids have been created in a similar way. A 3D model was used with some directional lights to generate a strong normal map, but in this case the main texture is saved in greyscale. The asteroid shader enables us to modify the color of the asteroid to fit different types of scenes. Another texture is used to define where the ore is, and this is applied over the asteroid texture to show the ore contained in the Asteroid.

alt text
We are still searching for a 3D modeler interested in this vision with the right skills. Please contact us for more info


So as you can see, things are moving along pretty nicely!

We've got some great ideas for the project, and we can't wait until they materialise into something that we can display to the community.

If you're not already following, Twitter is our best source for images and updates on what we're working on. We try to keep the feed updated semi-regularly as we have content to show, and we love hearing all your feedback.

If you have any feedback, questions, or comments, you can get in contact with us via Twitter and Facebook.

Give us a follow and a like while you're there! We would greatly appreciate it and will gladly return the favour to other indie devs!

Thanks for reading.
That's all for this one, we hope you'll stick around for the next entry!