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

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.

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.

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.
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!
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….
LikeLike
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.
LikeLike
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.
LikeLike
I’ll certainly be posting more stuff as I progress along about decoding resources.
LikeLiked by 1 person
I’d love to see a HTML5/webGL version of this – any thoughts on that? Any code you can share yet?
LikeLike