Slice of life RPG, 8 weeks full-time development
Built using our own engine and ECS with DirectX11
Some of my contributions include
– Terrainpaint pipeline for up to 16 different ground textures from Unity
– Player States and tweaking in our editors
– Vertex paint support in engine
– Mesh collider support and pipeline
– Depth data and rendering pass for Technical Artists
For blomstertid I had to wear a lot of hats. A big part of our game was to create a living world. We already had various ways for our Technical Artists to build their VFX, but one major thing was still missing, vertex paint support. We had put it off for quite some time as it did not really stop us from building our previous games, but the VFX team let us know that foliage and all things nature would really benefit from having vertex paint.
We were already using assimp for loading our models from fbx. This made the process a breeze. Our shaders were already using defines to allow for a single default shader file. I added paint as a vector in our VertexInput and VertexToPixel structs to make them accessible if defined. I then added the same definition on the engine side and made sure to use it whenever there was vertex paint data in the fbx. Initially I made some mistake with the offset of the data when creating the vertex buffer in the model, but once that was fixed it was up for our Technical Artists to try it out. I had gotten a fbx with vertex paint and after adding a render pass for Vertex Paint only I could see that the data had made its way to the graphics card.
In all projects prior we had been using sphere and box colliders to build our world. The original plan was to do the same in this game, as it initially did not seem like we would need it. Things were looking good until week 7 out of 9 when our Level Designers demanded that we add mesh colliders as they did not expect to make it for the deadline. Even though it seemed very risky to add to the pipeline this late into development I understood that they had their reasons and that it was our last option. I requested that models that would need mesh colliders would have a mesh using some naming convention and the graphics team got started right away.
When loading models I then looked for meshes containing the prefix and put their vertices and indices into a seperate object and set it to our physics factory module. To further take work off our Level Designers I changed our loading function of Box Colliders, before adding the box collider I did a lookup if the entity had a model component, and if that model did exist within our physics factory module. If so I would simply add a mesh collider instead of a box collider.
Initially there were some problems with the rotation of mesh colliders that were scaled differently in each axis. It turned out to be a problem with the order of some matrix multiplication, and with that fixed our engine had support for mesh colliders.
This project has been all about engine stuff for me. I have worked on some gameplay related tasks, but most of what I have learned is related to the graphics pipeline. It is not until now that I have fully understood some of the concepts we were taught in our graphics course.