Last week, I’ve started implementing my new project. It’s working name is Office 101 and it’s a management sim (obviously).

I tried keeping track of some of the things I implemented so I could share them here but, honestly, starting a project for me is a vortex of new and old code that works and I just go with the flow and do stuff. Nevertheless, I did take some screenshots and noted some things.

Game Genre

The genre of the game eluded me for a bit but I ended up deciding for a management sim in the molds of Dwarf Fortress, RimWorld and Prison Architect.

Yes, I know.

It’s a rookie mistake and I’m making it, but it’s hopeless, I just need to do this. Future readers (probably just myself) will laugh and joke when I eventually meet my misfortune.

This is the type of game, along with RPGs, that makes my eyes shine. My favorite game as a kid was The Sims in a time when I had no idea what “management simulators” were (especially because I knew no English). I love the idea of simulating a situation, to toy with the level of abstraction you need or want to represent something, and then playing it out to discover emergent situations born from it.

And I’m in the highest point of my Dwarf Fortress addiction too so.


Camera

The main focus of last week was to get a nice camera up and running. Management sims tend to get to a point where you want to go from one place to another fast, and having a decent camera implementation takes this out of the way for now.

A room being shown by a camera moved and zoomed by the player
Easing is my newly discovered passion

This was a pain to implement if I’m being honest. I’ve done this quite some times, but I think this is the first time I understood what I did and even then it seems a bit janky and… wrong. Nevertheless, it works for now and I’ll (hopefully) not mess with this for quite some time.


Coroutines

This shit kick my ass bad, man. I spent two days to be able to code this:

Code of a recursive coroutine implementation
'Coroutine Clusterfuck' is a good name for a band

I just wanted Coroutines the way I saw ChevyRay implement, but I wanted to understand it. In the end, it works, and I don’t even remember if it resembles Chevy’s implementation but it’s what I’m going with for now (that’s gonna be a recurring theme in my devlog I’m afraid)


Next steps

I have already started some UI implementations and got a little button working, but I’ll definitely focus more on panels, text and menus this next week.

A a light-colored button with the word 'Build' printed on it
The first of many buttons in the game

However, my first order of business is going to be developing a basic entity intelligence so I can start seeing if my coroutines and ECS implementation is not going to explode in my face. Wish me luck!


Thank you for taking the time to read this. If you’re a game developer checking this years from 2023: keep up. It’s only over if you give up, so don’t.