Hex Engine

Summary

Custom engine created with the purpose of rapid hex tile-based game development.

Details

  • Team Project (9 People)
  • Solo Graphics Programmer
  • 24 Weeks (2016-2017)
  • Custom Engine
  • DirectX 11
  • C++


Project Brief

Block One
This project was split up into 3 different blocks (a block is 8 weeks). In the first block the goal for this project was to create a framework that designers would like to uses. Preferably something that doesn't exists yet or something that is hard to do in unity or unreal. We came up with the idea to create a 3D hex framework. We would create an editor that would make it easy to draw hex boards and make a lua scripting environment to make easy to define gameplay. We started off with three programmers and one designer. One programmer who did tools and lua implementation. One that did engine and me for graphics. The designer helped us with the implementation of the hex grid.

We started off with the idea that this would be a one block project but near the end of the block there was talk about some projects that might continue if they where unique enough and worked well enough. We got motivated to get our project through to next round and started working very hard. After the block ended we where still uncertain if the project continued. There was a one block break. At the end of the block we got the good news that our project was selected to continue to the next round.


Block Two
In second block the goal shifted to creating an engine, ready for creating a game with a team of designers and artists. If our engine was good enough it would get the chance to be used as a game engine for the last block.

There was a lot left to do but we got help from four extra programmers. One implemented audio, another for FBX importing, one for UI and the last improved the scripting interface with tools and auto complete features and made the prototypes in lua. Our designer unfortunately left the team.


The Last Block
In our last block the goal was to create a game with the engine. There was still a lot left to do, but we had to work with what we got. We continued programming the engine while others where designing the game and thinking about the art direction. In the end we managed to make a functional game with the engine. See project "Nebelkampf" for the final result.

In the second block we needed to refactor, it was a mess and this was going to be used for an actual game


My Contribution

For the first two blocks (16 weeks) I worked alone on the graphics engine. I managed to implement most of the core features of the rendering engine. I had a deferred rendering system with dynamic lights, PBR shading, instanced rendering and some more.

In the second block there was talk about the engine teams being allowed to continue in third block with a big team, to create a game with the engine. This was a huge and interesting opportunity for us. We got quite interested, but had the feeling we might not continue in our current status.

We worked quite hard towards the goal of getting green lit but where skeptical about getting picked, however when I talked with one of the teachers he mentioned that we where one of the teams he was considering for green light. This motivated us immensely and made us work towards the goal of working with a team in the last block. Somewhere in the middle of the second block, we got green light for the last block.

There was a big problem though, our engine was never build with the idea that designers or artists would work with it. We had to work extremely hard to get a working level editor and get some extra graphics and model pipelines in that the artists expect from us. We got most of the core features done by the end of the block, but it was nowhere near done or usable for that matter.

In the Last block another programmer joined the team. I turned graphics lead, since I knew how the graphics engine worked and what it was still missing. We where low on post-processing effects, but there was a system in place to render them. I asked the other graphics programmer to focus his time on implementing these effects so I could focus on getting shader-based materials and particle effects in place.

Unfortunately for me I didn't get a lot of time to do a lot of graphics work, as I had to help artists and designers a lot. Also, the lighting didn't look as they expected. I probably reprogrammed the lighting shader four times before I was satisfied with the result.

In the end we did manage to get everything that was required for the game in place, including particle effects, PBR materials and fancy shading effects. We even got complemented by the artists. "If only we could have started with the engine as it is now."

See project "Nebelkampf" for the final result.



Media


Related Projects