Hi, I wrote an MMO in the c-like language Jai. It released August 2024.
Here are some pictures.
Drop tables
Painting uses pallet mixing
There are a few bosses and a raid
There are pals to talk to
Violin (each row of your keyboard is a string, your mouse left to right is bowing, and up/down is choosing strings (with some room for overlapping.) The NPC plays tunes I pre-recorded, sped up a little. Play for your friends.
Render pass debug, admin panels, menus
Here is the profiler I wrote for the game, for the Jai language. https://code-flame.itch.io/profiler
It's serializable and admins can download the server's profiling info.
I made it into a standalone app that communicates with shared memory. Here it is in an unfinished RPG project that I dropped to work on World of Squares.
My largest regret was using dependencies. There are many less than other projects, but there are still some; CivetWeb for the web server, Curl for the payment processor, ENet for networking. Worst was ENet, which created bugs months down the line due to obscure implementation details and bugs; with it, I cannot just write a software and have it work in 10 years. I let someone convince me I should use ENet because I'm "reinventing the wheel." I already hardly trust anyone, but after this person I thought was smart convinced me, I now will only trust myself on wheel re-invention.
My second largest regret is artistic pandering. Few people played this game, though I find it cool. I still pandered to the market when I made this, but I was on this fence of pandering and things I find cool, and I think I will veer more towards making art that nobody living must see, but it is an interesting exploration of the medium. Otherwise, what am I doing with my life but temporary?
This was the hardest I worked on a project. I worked 10 hours a day on the game, 2 hours a day studying Handmade Hero, and a bit of playing music afterwards. 1 break day every 13 work days. I released it after around 6 months and considered it a sufficient exploration of the medium and moved onto the next project.
If you expected a rule-of-threes third largest regret, you must be quite the engaged reader! Here it is, surrounded in an equals-sign rant-barrier fence, short enough to hop over!
===
My third largest regret is Linux for backend. The time I spent debugging that pile of awful software could have been spent programming directly to specific server hardware designed to run the game. I just need my code to run. I don't need 20,000,000 lines of code underlying to do that, yuck!
I'm working a web dev job which is decent money now, but when you do that, your time is owned by another. Treasure the time you have for passion projects and make cool stuff. If I could tell my 5th-grader new-programmer self to drop out of school and have fun doing those projects instead of doing what you're told, I would. I'm fortunate to not need to work to live, with old-world parents who will cover that for a long time. It's a good thing I didn't make this mistake again and go to college, using "gap years" (which are basically retirement/responsibility-to-others-free years where you can do a lot) to further my skills and projects. In general, all the indoctrination and group-thinking society leads us to can help some people, but it certainly has only hurt my growth and ability. I strictly do not benefit from it. (Childhood is critical, age 5-7 is often when world-class violin soloists start, and malleability only declines from there. Why do we spend it on achieving a base average knowledge that could be gotten later in life, instead of skills? High school ends, brain malleability is sharply lowering, and the high school degree has no marketable skills nor does it empower people meaning. We have more humans than ever who could be training to be experts at something before adulthood but aren't.)
("Gap years" is in quotes because I dislike the term as it perpetuates an inevitability that we should do that with our lives when it only works for a subset of people.)
===
The line counts are as follows. I try to have few files, and most code in one file. All I need is to go-to line for compile errors. See further discussion on inlined code here http://number-none.com/blow/john_carmack_on_inlined_code.html I tend towards style C for extreme simplicity on big projects.
Code:
news.jai 64
wos_arena.jai 116
wos_server_database.jai 845
wos_common.jai 3693
client_updater.jai 700
wos_drop_tables.jai 277
wos_server_payment.jai 1183
secret.jai 626
wos_server_httpwebserver.jai 101
wos_npcs.jai 1272
wos_client_graphics.jai 4062
wos_server.jai 13358
wos_client.jai 13361
Total 39658See the daily progress with screenshots here https://forums.tigsource.com/index.php?topic=75784.0
https://www.worldofsquares.org/
https://store.steampowered.com/app/3147260/World_of_Squares/


