I like Discourse (the software this community runs on), and I don’t like maintaining my static site generators, and I don’t want to use WordPress for my development blog at https://ecton.dev/. So, I’m deciding to write all of my development updates here on the community, and I’ll eventually replace ecton.dev with some sort of overview of my twitter, GitHub, and community activity. I think this will work great because Discourse has a lot of options for following content that you care about or getting digest updates via email.
It hasn’t quite been a week since I posted on /r/INAT, but as I sit here drinking my morning coffee and tinkering with code, I felt the desire to spend a few minutes reflecting on the past week.
Starting a community
The goal of my last post wasn’t to find other active contributors. Honestly, until this project gets further down the road, most people should look at it skeptically. It’s a massive project. If I lose interest, it likely will crumble. The actual goal of the post on /r/INAT was too just find some people who wanted to talk about the idea of making multiplayer game development approachable. To that end, I found success in having several great conversations throughout the week.
Instead of looking for players in a hypothetical game of mine, I’m wanting to find people who are passionate about the pillars I put in my post: non-predatory monetization schemes, relaxing with games is an essential part of life for many people, socializing is important (but so is having alone time), feeling accepted and included is critical for social games, and anyone can build or help build great multiplayer games.
I love discussing game development and all of the related topics, and I’m hoping to foster a community of people who are passionate about building a positive social gaming community. I’m going to continue occasionally posting to various subreddits as I make progress, hopefully continuing to find great people to join the community.
So how long until we can play some games?
I’m working on figuring out a roadmap to get to a demo game project. There’s a lot to figure out regarding how I want to make this engine work. Right now, I’m focusing on getting a few core pieces set up:
ncog will not allow users to create an account with a username/password. Instead, it will leverage OAuth with common services. Because I had just integrated itch.io’s OAuth for Cosmic Cantina, I’m starting with itch.io but will be eager to add others, including Discord, Google, and Twitch.
I will support adding two-factor eventually, but for now, I’m just going to be encouraging people to be using 2-factor on their accounts they’re using to log into ncog.
One thing I want to be true about the game client is that it will be incredibly fast to get into the game. One key aspect of being able to achieve that is to be able to download and cache assets dynamically as-needed. This means that updates to the game client will not require large downloads, as the game code will be separate from any assets.
The other consideration is that this engine will allow creators to upload their own content. This means that at any point, your game client may encounter a new asset that a creator uploaded moments before, and the client will need to load it and display it.
Music, art, and other types of data will need to be able to be managed in a versioned-system, and care needs to be taken to ensure proper crediting and licensing are being adhered to. My plan (pending discussion with my lawyer) is to have all assets uploaded be licensed under one of the Creative Commons’ licenses – uploader’s choice.
I expect this project to take me a couple of weeks to flush out. Because I will be the only uploader, I can skip the licensing aspects because I can ensure that I own the rights to the assets I’m uploading. Once I’ve figured out how the actual legal process needs to work for the licensing, I’ll circle back and get that process added.
When entering the game jam that I was trying to build Cosmic Cantina for, I knew the main thing I was missing from Kludgine was a user interface layer. I need to get back to tackling this soon or see if I can figure out how to get iced hooked up on top of rgx. ideally, I could do that, so that I have less code in Kludgine to maintain myself.
Experimenting with data structures
The biggest problem to solve lies around how to structure the worlds that creators will work within. There are a lot of features I know I want to support and what I need to start doing is organizing my ideas and starting to extract a way to enable most of those features at the data-level – ie, how a “world” is stored in a database.
Until the next update
Feel free to reply here with any questions, comments, or ideas. I’m looking forward to meeting more people who are interested in this project. Until next time!