I miss the 90s. I won’t even pretend I don’t. I was young and just getting out on my own. Anything seemed possible. The web became a thing, computers got way cooler and suddenly “nerd” went from insult to honorific. I was poor but carefree. Oh, and the video games. The video games. Sigh. Super Nintendo and Sega Genesis were the king and queen of consoles, and by far the most popular even as they aged.
EDITOR’S NOTE: This is part of a series, start here. So 2020 was a weird year. For everyone on earth, I suppose. The last update I wrote on this project was something like eight months ago. While I haven’t updated, I made a ton of progress and I took a new direction. The first thing I changed was the language. I love C, but it was becoming really cumbersome to manage memory between SDL, pdcurses and my own code once things started to grow in complexity.
“Workflow” is a term that gets bandied about a lot these days. So much so that I think the term has kind of lost its meaning in certain circles.
There are a lot of different efforts out there to simplify the creation of backend and middleware for mobile and web applications. The serverless movement, as the name suggests, is that this code is so minimal that you can do it in a series of stateless cloud functions using something like AWS Lambda (there are others, I can’t think of them off the top of my head). You’re just using those functions to pass data back and forth between your application and your data store, and whatever minimal business logic you need can be implemented there.
EDITOR’S NOTE: This is part of a series, start here. If you’re following along it’s been like six months since the last update. While I… See the ellipsis up there at the end of that last sentence? The one that I stopped caring about before I finished the second sentence? I wrote that last August. A year ago. Yeah. Okay. So back to it. It’s 2020, a lot happened since the last time I started looking at this.
EDITOR’S NOTE: This is part of a series, start here. I’ve nearly completed the code that deterministically generates random a spiral galaxy from a hash. What I ended up with was something that takes an arbitrary rectangle and a zoom level and gives you everything inside the rectangle. At the lowest zoom level, which I’ve cleverly named “1”, each dot represents something like 65,000 stars. At each zoom level, you are generally grabbing a smaller and smaller rectangle and a dot represents a smaller and smaller number of stars, until you get to (at the time of this writing) level 8, at which 1 dot = 1 star.
EDITOR’S NOTE: This is part of a series, start here. Seems like everything about this project is one step forward, two steps back. I was starting to make some progress with my GDNative version, but it just wasn’t making me happy. Godot is a nice engine for doing…something other than what I’m doing. So I’ve decided to ditch not only Godot, but C++ as well in favor of just straight C.
EDITOR’S NOTE: This is part of a series, start here. I’ve been back at it for a week or so already but as you can tell, I haven’t really worked on this thing for six months. I got burned out on it and had to go off and do something else completely different for a while. I switched to working on a mobile game with pixel art owls that involved flying.
EDITOR’S NOTE: This is part of a series, start here. When I initially thought about doing this, I figured I’d persist the galaxy in some form of binary (or even plaintext) JSON file. This has a lot of advantages: JSON is easy to edit, simple to work with programmatically and requires very little overhead. It also has a lot of disadvantages, at least for my purposes: Things like loading and saving game states requires doing a bunch of object serialization/deserialization.
EDITOR’S NOTE: This is part of a series, start here. I had to get that journal entry title out of the way sooner or later, now seemed as good a time as any. Since I started this I’ve been kind of going back and forth on what units of measure I was going to use. For the “macro” view parsecs seemed obvious. Stellar density in the range where you’ll primarily play is about 1.
EDITOR’S NOTE: This is part of a series, start here. ADDITIONAL EDITOR’S NOTE: Due to the presence of tables and code samples, this page may behave strangely on mobile devices. Desktop viewing recommended. Somewhere a few posts ago I was thinking about how to define planets, but I skipped a step in the star/planet process. The number and orbital distances of planets have to be decided at the star level because they have to be decided for the whole system and not on a planet by planet basis.
EDITOR’S NOTE: This is part of a series, start here. In an exercise that was part “eat your peas” and part yak shaving, I did a bunch of code documentation and even added a README. I’m using Doxygen to generate the actual documentation pages. It does pretty thorough job of generating docs from the code and all you really have to do to make it work is put a formatted code comment before the class, method or property you’re documenting.
EDITOR’S NOTE: This is part of a series, start here. I know that somewhere in here, I’m going to need to save and load JSON files. Godot has its own JSON parser, but I feel like that’s probably better suited for use within scripts, and it marries my C++ code to Godot in a way that will make it hard to iterate and test. To that end I’m just using Godot to load the file and read it into a string.
EDITOR’S NOTE: This is part of a series, start here. Need to decide what data points we care about with stars and planets. Stars are fairly easy, as they mainly just have some physical attributes and a name (or catalog number). Right now there are only stars, but we should add some more exotic things, like: Black Holes White Holes? Is that a real thing? Rogue Planets (There are more of these than stars?
EDITOR’S NOTE: This is from a series of journal entries about an as yet unreleased video game. I am continuing to work on this as we speak. I realized I had written a lot in the process and it’s kind of an interesting testament to my long, circuitous but possibly-interesting-to-watch thought process. These entries are unedited and presented the way I wrote them. September 19th, 2017 is a significant date, for two reasons.