Working towards a foundation

The last month has been filled with a lot development on Kestrel whilst community between home and work.

The office in which Kestrel is being developed – it’s often late, noisy and sometimes I don’t even have a seat to make working more comfortable.

I am also getting some development done at home, but the majority is being done on the train.

So what has been happening?

Lot’s. Let’s start things with a small screenshot.

I did say a small screenshot.

This represents the progress of a month of development. It doesn’t look like much but it does show a lot.

Where are we at?

When I last posted anything there was a very basic render pipeline set up in Metal. It rendered a yellow square. Now the engine is actually rendering stuff and it looks a lot more interesting.

I should probably point out that the engine is being developed to be compatible with EV Nova in terms of resources and data. The end game and scenario will be that of EV Override, but in order to test certain features I need to use Nova.

A shuttle flying past Jupiter – spot the bugs in this scene.

Currently I am working on implementing ships. I know this sounds like a fairly basic thing, but given that space ships are sort of the very heart of EV, it is a big thing to get right, and something that will get its own post in the future. This is also requiring a change to the rendering pipeline to allow for additive light blending. The lights and the glow on the shuttle do not blend correctly by default and have weird black halos around them.

The status bar is being developed bit by bit. It’s got no real function right now, other than to occupy that bit of the screen.

Additionally I have added in asteroids to the system, as seen in the small screenshot. This means that the systems feel a bit more alive.

What are the problems?

This is the first time I’ve really worked with GPU based rendering (as in Metal or OpenGL). I’ve used heavily abstracted things that ultimately end up on the GPU, but I’ve never really done it directly. This means I have a lot of learning to do with regards to it, and in general it has been fun.

However getting used to render pipelines and the different coordinate system has been interesting, and led to some interesting bugs. In fact up until recently the distances between everything in the engine have been squashed. In the “Sol” system, you could easily see both Earth and Mars on the screen together whilst parked at Earth, when Mars is almost always off screen in this scenario.

There is also the blending issue and trying to determine how best to do that. Lot’s of little things like these that add up into a bit of a headache.

Ship movement is also another issue. Trying to determine how a ship moves in Nova seems like a straightforward exercise, but the exact mechanics are tricky. The ships can’t feel too sluggish or too zippy otherwise it will be frustrating to returning users.

YouTube

I’ve decided recently to document some of the additions being made to the engine by adding videos/demonstrations on YouTube. I may add other Kestrel related things as well over time.

You can find the “Kestrel Development” playlist here.

A short demonstration of Asteroids in the Kestrel Engine – Using Nova Data Files.

This is probably not the most exciting of updates, but I just wanted to get a little bit of update out to help clear my mind before getting back to development.

I will say I have a couple of posts planned (probably over the next month or so)

  • Ship Movement in the Escape Velocity games
  • Reverse Engineering EV Nova

Hopefully they will be interesting ones for people to read, and for me to write!

5 thoughts on “Working towards a foundation

  1. Any chance we can make this have a WebGL target? All of the bindings should be relatively similar to Metal or OpenGL – and there should be plenty of horsepower on modern machines to make it work….

    Like

    1. From this particular project? Not very likely. Personally I dislike this trend towards web based software (that’s a fact that I’m not really interested in discussing though), and much prefer native experiences for most things.

      Like

      1. To each their own! In that case, do you mind posting more of the details on extracting the mission data & graphics, etc? I’ve found a few different things, but no working code that’s intended for use in a game.

        Like

Leave a comment