Starting A Game Dev Hobby
Tags: gamedev, typescript, kittentheorygames
Published: 2023-01-02 10:11:38

 
After 20 years of web development focused software engineering, I've decided to start a game writing hobby.

## The plan

Spend one hour per weekday working on a game. That's not much time, but this isn't going to go fast. I'm thinking of this as getting a jump start on my long term retirement project. Originally, I was going to write novels, but I think game development might be more fun for me. I'm also going to blog about it, for social purposes, and as an "accountability" mechanism.

## The tech

I'm keeping the tech overhead low. The "engine" will be [babylon.js](https://www.babylonjs.com/), running in an [Electron](https://www.electronjs.org/) shell, using Typescript. Is this the optimal tech stack? Nope. But, it's one I know well, and it removes the need to learn a lot about OpenGL, Shaders, etc. upfront. It should also make cross platform publication (if/when I get that far) fairly simple. I'm not a AAA game studio. This is lo-fi for sure.

Why put it in Electron (someone might ask)? Because it gives me the ability to write files to the file system (for persistence), to create UDP listeners (for multiplayer), and to keep the game "closed source". Yes, these are things that can be achieved in a browser. But, they're easier to do in a desktop app (even Electron). I feel like there's also some "legitimacy" to a game app, even if it's actually based on web technologies.

Why closed source? Because I'm self conscious, and deep down, I imagine it actually being commercial, even if only a little.

When/if I get to the networking part, my goal is to keep it peer-to-peer over WebRTC or equivalent. I want an MMO-ish experience, without the overhead of official servers (barring a STUN or WebRTC signaling server). If it ever gets monetized, we'll see about value adds involving purchased server power.

## My first hour

I created a repo with a hello world electron app. Next is adding Babylon.js (maybe a spinning cube).

![Hello, world!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/djiudcntcb4uymdzakca.png)

The longest journey starts with a single step.

## What I am making

I don't entirely know. Here's a list of things I like in games.

- Voxels
- Scriptable entities (user defined mini-games)
- Artificial life (ecosystems, not just scripted plants/animals)
- Scenery
- Acting as a medium for user created art
- Achievements and quests as guides but not gates
- Vehicles (flying or driving)
- Fast travel
- Limitations without grinding
- Having your "own" game space
- Many (unlimited?) small "worlds" or "zones"

Am I talking about a sandbox MMO? Probably. What else do you make when you don't have a specific game mechanic in mind.

I'm just going to hack on it until something pops out, or I actually retire.

## What I imagine

You spawn into a little floating voxel island (of your own?). In my dreams, this is floating around a star, along with dozens of other little floating islands. Every island has a biological and geographical theme. You get to choose what you want. They aren't very big. Maybe the size small town or city, a lake, or a mountain or two. There are many stars in the sky. Players can visit the islands of other players, either by invitation, or by using a "ship" to get there the long way.

The life on the island actually feeds on itself. There is a food chain. Conditions and resources matter to the plants and animals. Animals have (simple) personalities and basic conditioned responses which can be changed with training. Players don't have physical needs, but can take care of things that do (if they want).

You can build things. These things can be interactive (scripted). These things do take resources, but you don't have to grind the resources out yourself. Maybe you can train gophers, or sacrifice chickens, or build a robot. Maybe you just want to carve a head in a mountain by yourself. You take a medium, apply a technique, produce a result, which you can share with others.

Islands can be protected from any permanent damage done by players. Islands can be set to "private" aka single-player mode, "instanced" so that changes by others have no permanent effect, "heal-over-time" back to an ideal state, or "game" which would only allow scripted interactions.

It's important that multiple players can build and collaborate together to create a single thing. It's also important that players can save or pre-build things so that not everything has to be completely bespoke or be blocked by a lack of immediate resources.

There are certain things that people imagine working in a virtual world, that just really don't work. A coffee shop, restaurant, or your dream house. These things might be art, but they're also a hollow imitation of something. More real than a picture, but somehow less satisfying in that realness. It's the uncanny valley of experience, between a pleasant memory and a current enjoyment. To bridge that valley, you need to provide a game, a narrative, or useful information. A coffee shop or restaurant could be presented as a cookbook or be a library of board games. A house could tell a story or be an escape room. I want to play this game where I can create these things.

The island structure provides natural boundaries between areas in a way that feels natural and flowing, but also avoids the boundary being an area of its own and being too small to be effective (ie. rivers or oceans). Voxels provide a medium which is flexible but finite, and lends itself to procedural updating. There are limitations, but they are not based on expending too much real world time or money, and they should not feel overly contrived.

The game should enhance the creative process through dynamism, opportunity, and capability. Take the example of creating a voxel sculpture. There are voxel paint programs which make this fairly straight forward. Their whole purpose is to let you create without constraint. So, why create it in a game instead? Because the game lets you do it in a novel way (eg. by write scripts to "grow" it). Because the game makes it discoverable and interactive. Because the game provides something more than a blank canvas to start from. I imagine that some day, there might be a "player" app that displays islands just like you would display any piece of art, or watch a TV show.

If someday I can build a little airship and then take it to race on someone else's race course, or as part of a big CTF game, I will consider my gamedev life complete.

## Inspired by

AKA: Some of my favorite games.

### Minecraft

Epic in concept, and even a little elegant in execution. It's also boring, grinding, very limiting, and about half as fun as playing with Lego. Mods help, but I still build a "base", and wonder why I even bothered.

### SecondLife

Ahead of its time, but never figured out what it was. The collaborative editing system in a virtual world has still never been matched. With any number of minor enhancements, it could have become _the_ metaverse. The evolution never happened. It's the same game it was in 2004 when I found it. It's not exactly dead, but it's a relic now. Also, it's like anyone with any actual aesthetic or artistic sense was not allowed in. The world always trended hard toward garish and downright ugly. It feels like everyone secretly watches trashy reality TV shows when they're not playing SL.

### Spore

Such promise. The concept and tech demos before release showed something that looked like a really interesting life simulator with emergent behavior. What we ended up with was "SimCiv" with an extended mini-game at the start for designing your character thumbnail image. Actually pretty fun, but a pale shadow of what it promised.

### Civilization

Pretty much the only game I still play. My only complaint is that you follow almost the same path every time. I wish it allowed for a little more creative expression. Still, it has  a "feel" and it provides a challenge.

### The Sims

Loved them when I was younger. Now I have a real house, a real cat, and a real wife. Playing The Sims feels... voyeuristic... somehow? I like the "artificial life" aspect. But, raising "people-as-pets" or having a "people-garden" seems odd. The sim is not me, and so I am no longer immersed.

### Don't Starve

The perfect survival game. Love the art style. Love the exploration aspect. I keep thinking there's a story I'm missing though. Why is my character here? Who is the weird intro guy? Is it possible to escape? In the end, it turns out survival games aren't my thing. I want to create, explore, invent, nurture.

### Skyrim

Beautiful, especially with a few visual mods. There was also a story element that was _almost_ good. The random dialog heard from NPCs. Scrolls, notes, and books with little snippets of "someones" life. Artifacts left over from civilizations past. As a work of art, I love it. What I missed was that you drove the story, the story didn't come to you. What if I just setup a shop in Whiterun? Would anyone come to me as part of the community to ask for help? Nope. If I did nothing, would anything change? Nope.

### Fallout 3

More story than Skyrim. Some creative elements. Building your character feels unique-ish. Not as pretty (an apocalypse will do that I guess). The "V.A.T.S." system was a cool hybridization of real-time and turn-based.

### Eve

Spreadsheets, the final frontier. These are the voyages, of the starship "spend real money or die". Its continuing mission to seek out new rocks, and other new rocks. To boldly go where everyone has gone before. But really pretty, and it's spaaaaace!!! It's space pretending to be infinite, but really just zones that you can "warp" between. Cool idea, and social! But ultimately, too much time and money for not enough enjoyment. Good lesson to keep in mind.

### Company of Heroes 2

One of my favorite LAN party games. Competing against other people is fun. Especially when you all start on equal (or maybe equitable?) footing, and it's consensual. I also love how the game world really matters to strategy. It takes a strategy game beyond just learning the optimal build order.

### Flatout 2

Vroom, Vroom!!! Feel the adrenaline! Don't die a real fiery death! Did I mention I love driving/piloting things?