On January 1, I wrote about how my plans were coming together. Well, here I am, looking at where I'm at now that February is coming to a close.
Since then, I started working on building up my app framework first, starting with rewriting from using actix-web to using warp. I did this partly because of how hard I felt like it was to extend actix, and in reading the examples of warp, I felt like it fit my style much better. After the rewrite, I'm delighted I did it.
I also took the liberty to swap out sqlx. This library is cool because it has a macro-version of the query functions that will compile-time check your syntax by running the equivalent of an
EXPLAIN command. For me, I'm using PostgreSQL, and I threw together a straightforward migration framework that has been making writing database code a pleasure.
Most ORMs take the approach of forcing you to define all of your types coming in and out of the database, and sqlx removes that requirement. Because it knows the result types from asking the database what the query will return, you're in full control, and you feel entirely safe. Best of all, I've found that using sqlx helped me embrace my database design philosophy: expose your database as an API via stored procedures. Even better, I realized this made writing integration tests inside of rust code that tests your database interface incredibly straightforward. I may clean up my migration "framework" and open-source it, but it's honestly not anything special at this stage.
I also took the opportunity to learn WebSockets as I've been leaning more and more towards targeting a full WebAssembly game. I do want to dive into my framework, and how I'm composing some awesome rust libraries to create a helpful little framework for myself.
All that sounds cool, but where's the game?
Ok, ok, I hear you. I've been in a bit of design paralysis. Part of my goal of writing this post is to help organize my thoughts. My problem is that I've come up with a setup for a game's backstory that I love. I love it so much that I want to build a game around it. It's a perfect backstory for the MMO I want to develop.
But, I have also been thinking a lot about how to try to build a business around games. Most people, probably rightfully so, say that you should create a lot of games so that you can get additive revenue from multiple games building up over time. That advice makes a lot of sense.
It just doesn't exactly fit with what I think I'm best suited for: making multiplayer games. The thing is, even as I build this framework, the amount of work to design and test a multiplayer game is more than what it takes to develop and test a single-player game. Multiplayer games are better suited for building a game over a more extended period of time, like League of Legends, DOTA, Fortnite, EVE Online, etc. These developers never launched these games with the idea, "Welp, we'll throw this out and move onto the next game and hope that these servers run for a while." They invested significant amounts of time into the development of a balanced online experience; the developers want to make money from it into the future.
What I've realized as I decided to sit down and write this article is that I've grown too attached to this one idea, and I need to decide what I want to build and either it will fit with that idea, or I can set it aside for now and create what I want.
Great, so what's that?
Great question! Well, to answer that, I need to talk about a thought I had last weekend. One challenge with any long-term business is designing a monetization model that is fair but also profitable enough for your business that you can grow and support your staff and community. I was watching some YouTube videos the other day, and one came up reminding me about how Costco operates.
Most retailers make their money by selling items for more than they acquired them. Costco does too, but according to the video, Costco has a self-imposed rule that no item can be marked up by more than 15%. Their actual average is closer to 11%, according to the video. Wal-Mart's average is closer to 24%, and 30% or higher across all supermarkets.
What Costco has done is to align its incentives with its customer's incentives by making the subscription fees the primary source of their profit. By being able to run their entire organization on the earnings of the subscription fees, they are incentivized to keep customers as happy as possible so that they continue renewing the subscription fee.
To me, that is the ideal of what I want to achieve. It's scary to think about, but I think the only real way to run a business with "no greed" as a goal might be to solely offer subscriptions and never have any cash shop ever. It's scary because it means to succeed, you have to do it by mass appeal, not by finding enough whales, but it, to me, seems like the most honest way to proceed.
So over the last few days, I've been trying to focus myself on what a subscription from me to a group of customers might look like, and what I feel like I can uniquely provide me that experience.
Great, so what's that?
Unfortunately, I'm still deciphering that. I have a lot of thoughts behind this. This post, I was hoping to go into those thoughts more, but I think another night of contemplation will help. So with this post being ultimately one long tease, I'll leave you with at least my base philosophies that I'm pretty sure I won't get away from:
No greed Focus on fun, not on addictiveness Prioritize working together over fighting one another Focus on accessibility and inclusivity
Beyond that, my ideas diverge. I'm going to publish this post and immediately start a new draft working towards the goal of homing in on my initial focus. Until then, I still have a todo list of things to add or refactor in my framework to occupy myself.