Game thing, initial story
I've had an idea of making a game with a story inspired with several things I loved a lot for a while. So I started actually doing it about a year ago, in rust, because that's the "popular thing to use". I wasn't sure about the plot at the time, just focused on the engine, it had a big field for the story text and a few buttons with answers at the bottom. It was in that state for a while, I used a different story as an possible intro, since I wasn't sure about where to start. And then I kinda burned out on the whole thing and forgot about it for half a year or something like that.
I remembered about it when playing another game, not related to the original inspiration, but also with a good plot. That day I started thinking really hard about what to do and decided to scrap the previous story prologue and start a new story unrelated to it. I was super determined initially and spent a few evenings writing the basic, very rough prologue into an Org file. It was a few thousand words when I finished that session, and I thought "Well, I guess that's pretty good for my first serious writing attempt, right?", and went to sleep, because it was super late already :)
I spent a few days adding things to it after that and then tried changing the engine to suit it better, since it was more like a terminal with inputs
now, and not a screen with a buttons. In the middle of that process I got tired of fighting rust over simple things and decided to rewrite the whole
thing in C++ because "I know what I'm doing, just let me do the thing
", so that took a few days too. But not that long, because I was just porting a
few simple algorithms and using the same graphics library1 I was using in Rust except in C++ it was natively available.
After finishing porting the needed parts (only the terminal one, basically), I worked on the other planned part of the game, where the character is
supposed to actually walk and interact with things and not just read a lot of text and respond to it. Doing that in C++ sure was a pain. So I thought
maybe I could do it in Lua, and turns out there's a great library full of magic2 that greatly simplifies using lua with C++. After some painful
CMake-ing, I was able to connect luarocks and CMake to pull all the lua dependencies and put them into the _buid/resources
directory, where the game
could find them at runtime. The next few days were spent porting things from C++ to Lua. I thought about using ECS for the terminal initially, but
turns out it doesn't work very well in that particular case, so I resorted to just having two functions called from the C++ part that were called
every frame to draw and update things. When the porting was done for the terminal, though, it looked a lot better than C++ version and I wasn't that
much ashamed of it.
After that came a bunch more writing. I set up a goal of finishing at least two days worth of text (two game days). That took a lot of time, and I'm still revising what was done there, but it's a good amount of text for now, about 8k words. It's not well written, it is my first big writing experiment after all, but I'm somewhat proud of it. I had some people read it and give me suggestions on what I should improve about my writing, so let's say that is in the works.
At some point, I decided to draw a few small pictures to explain surroundings a bit. They are small because I'm not very good at drawing pixelart and there's not much space on the screen for them anyway. I drew the first two for now, but more will come later, I already have them planned in my head.
With the first few days finished, I thought I'd also port the "walking" (that's how it's called in code) part of the game ported to lua too. Now that
part did actually work well with ECS, so I used a ECS library for lua3 to do everything in the first walking scene, using some global
values provided from the C++ part (like the drawing target). I'm not sure about how it performs, but it was once again better than what I had with
C++. I added a lua coroutine wrapper thing that would simplfy working with them and implemented fade-in/out transitions to switch between the terminal
scenes and walking scenes, that took about a day, but coroutines will surely be of use in the future. And all of that is built as simply as just
typing make
, thanks to past me doing all the awful CMake writing.
As of now, I'm continuing to work on the story, refining and rewriting it, making it seem more natural and belivable. Stay tuned for some more progress news, hopefully.
Footnotes:
SFML, https://sfml-dev.org/
Lovetoys, https://github.com/lovetoys/lovetoys/
Comments