Thursday 31 March 2022

Development - March 2022

Before we noticed another month slipped thru our fingers. I would love to say that there was a lot of progression in the project, but I would lie. This was a month focused on technology, workflows, and boring improvements. Because of that, this post will be a little bit more technical so continue reading it on your own responsibility...

Development Setup

Because Coffemonsters is a really small group, for a long time our projects were developed in a really simple setup. We had a virtual server running:
* gitea (https://gitea.io/) to store code,
* perforce (https://www.perforce.com/products/helix-core) to store data
* mediawiki (https://www.mediawiki.org/) for some guides and documentation. 

It somehow felt that we did not need more. But recently thanks to my friend we got an infrastructure upgrade. He crafted for us a really nice development environment with a dedicated server running dockers (https://www.docker.com/), our own gitlab (https://gitlab.org), perforce, wiki, CI (Continuous Integration) builders, and a lot more. 

This was not a step that was needed but it was planned for a very long time. Thanks to finally doing it we can slowly start building CI  and an automated build system which will bring us a step closer to opening access to game builds.

All of that sounds great but it has some price, we are still in the middle of a transition to this new work environment. Most of the stuff just worked from day one, some others not so much. One of the things that went rather terrible was fact that we neglected some automatization scripts. This mistake resulted in significant maintenance work. The first part, "project generations" is mostly done and only took three weeks. This was the worst part because it was a blocking one. Now we moved to the second phase which we can do in parallel to our normal development: simplifying the environment setup. The goal is to pull a branch, run one script and be ready to develop the game. When we finish with it we will finally be able to start CI and create an automated build system. Sadly getting to this point will take some time and a lot of effort.

Tools improvements

Switching to new infrastructure was not the only thing that was done. We still working on improving the game which leads us back to improvements in some tech. Who would expect that doing simple ladder-climbing could lead to so many interesting problems?

One of them that fascinates me personally, is not a super technical one but related to tool UI (I still have a hard time acknowledging it). Everything started with switching to document-based tooling in the engine. The idea is simple: You want to edit a file just open it in the new tab (just like a browser). 
 

We never regretted going into this direction but there was one flaw with it. Some objects can contain embedded data. A good example of it can be a visual script that can be unique for every instance of the object. In the past, in an attempt of editing, we would just open a new detached window. It would be a blocking one so you could not change anything on the scene while you modify the script. 

With the document-based tools UI, we have a problem. The visual script doesn't have a file because it depends on data from the level. This makes the opening of a new tab for it weird and confusing. We would lose this way visual difference between embedded data and the one with the source.

This bother us for a long time but we did not really have a nice idea of how to solve it ... till recently.

Our solution to the problem would be building relations inside the tabs that will look like this:

Selected normal tool:

Selected tool owning embedded data (f.ex. Level):

Selected Tool editing embedded data (f.ex. Visual Script):

Look when there are multiple nesting:



As you can see this is still a work in progress but it looks promising. Thanks to this very generic approach we will be able to unify internal workflows and if everything goes right, completely forgot that the problem existed in the first place.

The Game

We know that all of you love LBA. Guess what? We too. That is why we would really want to bring to you our tribute as soon as possible. Sadly making the project takes place whenever we have time and energy to do it. You can probably imagine how hard is to balance normal life and work on this freaking awesome but ambitious project.

This limited amount of time forces us to prioritize one stuff over the others. This was the case this month, we got a great opportunity to switch infrastructure which would be hard to say no to. We tackled technical problems that bother us for a long time. But we also did not forget about the game. We did an awesome poster, some improvements in the player controller, we iterate over the new Twinsen model which soon should be ready to start bringing it to the game for tests (Last chance for complaining about its look). 

For some, this may be not a lot. In our opinion, we just took another step in the right direction and this is what matters.

No comments:

Post a Comment