iakov.dev

Flocking fish

· 1 min read

Video

I’ve added simple steering behaviour for fish. The steering doesn’t take the environment into account yet, so the fish fly. For the first tests I used the OpenSteer library with its “Boids” behaviour, but I’ll probably switch to my own steering implementation.

Another video, with more intense movement:

Video

Later I’ll add extra forces to keep the fish out of the air and away from walls.

Another day/night cycle video

· 1 min read

Video

Another video of the day/night cycle in Tarta, my voxel game prototype. The cycle has been in since the first prototype in March, along with the random voxel world, landscape editing, PhysX and the Glow engine’s HDR, shadows and water. I’m in the middle of moving the game to OpenGL, and the first video of Tarta on OpenGL went up earlier today.

First video of Tarta on OpenGL

· 1 min read

Video

Tarta now runs in OpenGL, and this video shows it moving. Yesterday I posted the first screenshot from the new renderer.

There’s still a lot of work left, but I hope to finish it soon. The OpenGL renderer is what will take the Glow engine to Linux and macOS, and later to iOS and Android, with the HLSL shaders converted by hlsl2glsl.

First OpenGL screenshot

· 1 min read

First OpenGL screenshot

This is the first screenshot of the Tarta game running on the OpenGL renderer. There’s nothing special in it, but it matters to me: the scheme for cross-platform development that I chose a long time ago finally works.

Two weeks ago I tried compiling under GCC on Linux and had it done in 2-3 days without any serious problems.

The engine now supports DirectX and, in a basic form, OpenGL. Later OpenGL will let me run the Glow engine on iOS and Android, as well as Linux and macOS.

On top of that, with the open-source hlsl2glsl library I’ll be able to use all the complex HLSL shaders from the DirectX renderer automatically.

New game prototype: Tarta

· 1 min read

Video

I’ve started a new game prototype called Tarta. The video above is from the first prototype, which took 3 weeks to build.

So far the prototype has:

  • an infinite random voxel world based on Perlin and Simplex noise
  • landscape editing, either one voxel at a time or by volumes (boxes, spheres and so on)
  • a day/night cycle
  • physics through PhysX (press F5 to turn it on)
  • HDR, lens flare, dynamic shadows, reflective and refractive water and deferred shading, all from the Glow engine

Random landscape generator

· 1 min read

Video

I’ve made a first version of a random landscape generator in the editor. It’s built on the open-source (LGPL) libnoise library and can create single random landscapes as well as grids of them.

Later I’ll add simple editing tools, plus generation of bump, detail and weight maps. The video shows the generator working inside the editor.

Cinematic editor

· 1 min read

Video

The camera can now be animated like any other entity in the editor. Drag the frame slider, then change the object’s position, orientation or scale, and the editor creates an animation key. Between key frames the object’s position is interpolated.

The frame slider is the “frames” bar along the bottom of the editor, next to the auto, prev and next buttons. The cinematic editor was one of the features I listed a few days ago, and this video shows it at work.

Deferred reflections

· 1 min read

Deferred reflections

I spent a long time thinking about how to do planar reflections in an engine with deferred lighting. Rendering the lit scene, shadows included, into a separate render target is very expensive, because it doubles all the calculations. Then I came across the idea of deferred reflections in an article about the rendering technology in Metro 2033.

The idea is simple. You render the reflection into the G-buffer with non-reflected attributes, and in the next step you light the scene and the reflected scene together. There are some subtleties, but in general it’s easy to implement. I had some trouble with unlit objects, like the sky and the glass here. Preserving the depth buffer while rendering the scene into the G-buffers solves that.

New features

· 1 min read

New features

A lot of new features are in: exponential shadow maps, soft particles, a cinematic editor and UI improvements.

The screenshot is a test village of half-timbered and brick houses with tiled and mossy roofs, on rough dark ground under an evening sky. I need some time to sum all of this up and write a proper post about it.

First steps with SSAO

· 1 min read

Screen-space ambient occlusion in the Glow engine

Today’s result is screen-space ambient occlusion. For each pixel it searches the surrounding pixels to work out how occluded that pixel is, then blurs the result and blends it with the screen.

A video with the water:

A few effects are still left to implement, such as light scattering (god rays). After that I can finally start work on the game.