I’ve been working on King of Kalimpong [0] on and off since playtesting a one-week prototype of it in 2014. I had no idea how much work a networked physics vehicle/movement shooter game would be. (I should have, I was 8 years into a programming career).
Working part-time was critical (for many reasons), but so was learning that progress is a product of discipline, not motivation, and that I needed to learn “infinite endurance” (I think that’s what Chris Hecker called it).
Once I adopted the perspective that I was some finite number of 3-4 hour blocks of concentration away from turning a goofy idea into a game that anyone could play, finishing became something that felt inevitable — as long as I kept going.
I’ll take the time to write about my experience after I release (which is now months instead of years away) in case any other game developers get anything out of it. Until then, thanks for another reminder that I’m not alone!
[0] https://store.steampowered.com/app/1989110/King_of_Kalimpong...
I attempted the standard prediction/correction implementation used for deterministic movement systems and got it working for the deterministic aspects of the vehicle's movement system, but naturally couldn't make it work for the core, non-deterministic physics, as that will require fixing the timestep and probably doing other things I haven't thought about / don't understand yet.
For now, the system works like this:
- basic client vehicle movement is non-deterministic physx + deterministic overrides
- special moves are deterministic but client-predicted
- weapons systems are deterministic but client-predicted
- server-side anticheat model is derived from me moving around and generating believable movement curves so the server can check that any given client move it receives is appropriate given its history / state of the world
- server also (supposedly!) handles noclip and flying cheats (this was a fun month)
- clients predict hits, server authorizes them
- simulated proxies (other clients in your world) mostly move according to projective velocity blending[0], though there are special cases for some of the special moves (spins)
- collisions are blended between the replicated state of the world and the client's local simulation [1]
- probably most importantly, the server creates replay files during matches which the game coordinator/serving system scoops up and saves, so I can (at some point) generate useful statistics and review matches to detect and improve cheat handling
I would have loved to do the networked physics really right, like Rocket League did, but I couldn't quite pull it off (I'm one guy with kids and a job and just not enough brainpower!), so I opted for what I hope is "good enough" for a small project like this: give the client a great experience, put all vehicles and projectiles in mostly the same position at the same time in all worlds (since they're momentum-based entities latency-based predictions are usually quite accurate), run an anticheat model on the server, and save replays to find and review anomalies.
If the game does okay and people are enjoying it I will get that fixed timestep/rewind replay PR done.
I hope that was a good answer! Let me know if I can tell you anything else. Something I didn't mention here is the networked projectile movement, which was the most fun to work on. I plan to write about that, too, at some point.
[0]: https://www-inf.telecom-sudparis.eu/COURS/MultiplayerCourse/...
[1]: https://www.youtube.com/watch?v=LPRK5J5-3QQ&list=PLpE81hvqYF...
I've had an idea for a small mobile game in mind now for a while, but I find the idea of potentially having to place ads in it to make back some of the investement not appealing. So I delay starting the project.
The dream would be to be able to offer it for a low price (1.5$ - 3$) and reach enough of an audience.
Also, building a million simple mobile games will not magically compound into making you a great complex/deep game builder.
Not trying to say your strategy is wrong, I just don't agree with your strategy if someone's goal is to build the game they have in mind, exactly like they have it in their mind (assuming it's more than a simple mobile game). It will help in terms of general "steps" to have built a couple simple games before sure, but that's about it.
Having a tight release loop is a good strategy. You will find mechanics that work over time and iterate on them, finding more and more reliable success. Eventually one will hit. You don't even have to avoid looking like shovelware. The mobile game audience doesn't care about that, it's more of a capital G Gamer gatekeeper thing.
I have played a lot of flash games, but mobile games become boring very fast to me. I think this has to do with the input limitation of the device : touch with one thumb on half the screen. Maybe this force mobile games into limited gameplay choices.
Really curious.
And it's way less fun (for most game dev people) to code the "perfect" version of an input remapping system or leaderboard system :p
Obligatory self-promotion:
I just released my Space Pew-Pew game on Steam in Early Access, complete with original 16bit-neoclassical OST!
https://store.steampowered.com/app/914930/Alcyon_Infinity/
"Destroy hordes of ever-improving enemies and their Mothership. Alcyon Infinity is a fast shooter/bullet hell with dynamic movement and risk management. Up to 4 Co-Op players with Controllers."
I'm doing a stealth release, primarily for my own sanity. There is something different about having it out for the World to seen rather than working on it for 3 years and giving up in the meantime (happened twice).
The magnitude of the marketing work ahead is kinda daunting, but at least I have some kind of anchoring to realspace for prospective players.
A game you can play and refund is more tangible than a forum with promises...
To be honest, it’s been more of a commitment than I expected, but I don’t regret the time spent at all and I think it’s something my son will come to treasure. Sketching imaginary animals into a text book and seeing them come to life in-game a few days later is a magical experience for a kid.
I’d just repeat what a few others have said herein: for hobbyists, keep your expectations for what’s achievable nice and low, make sure you enjoy the journey, and perhaps think about it as something you put an hour into every day, rather than one-focusing on hitting concrete milestones, many of which may remain out of reach for months. Oh, and checklists: write loads of them and keep them handy!
I haven't (other than some basic terminal-based games when learning new languages, etc), but I've thought of a few that I know I would like but don't want to put in the time/effort to make them something that someone else would like.
I also wonder about what to do when you have an idea that you know is way bigger than yourself, but you're not in the business of producing things that are way bigger than yourself? I've had a few of those, too.
I just released the third version on Steam EA, doing a stealth release for my own sanity. (https://store.steampowered.com/app/914930/Alcyon_Infinity/)
Payed for the graphical assets 10 years ago, made a soundtrack and most of a game, then got a reality check and moved out to contract work for a year on a polished turd game under a crazy Youtuber (Fuzecat).
Came back, worked on a second version and composed a soundtrack again. A month before we would have had a nice version to show to publishers got ghosted by the artist, got a reality check and went to contract work for a medium studio in Paris, worked on 2 pretty good games (WRC8, TT:2) that were good only through the sweat and tears of people on the ground. Returned home afterwards, half the people I knew there changed job.
Came back right for Covid years, worked freelance debugging and adding features (Neurodeck), then started again on my project...
Why?
Because sometimes there are things you have to do I guess :p I took only what worked from previous iterations, and cut as much things as I could.
The end product isn't what I started with anymore, but at least I got to the point that I could make it "Real", it has an options menu, and you can remap all inputs and there's and "End" and so forth.
I made at least 5 different prototypes within those 3 iterations of the same 2D Space Pew-Pew game: - open world scriptable missions and universe - fully scriptable universe for a Star Wars mod - Survival action - Pokemon Style - Roguelike - Bullet Hell (current one)
Only one has everything that makes it a full contained and shareable experience that I can play if I want 10 years from now :p
Noting down some of the differences below.
Game: Pacman
32 years ago (12-13 years of age)
Programmed in Sinclair BASIC on ZX Spectrum+
Took two weekends as I recall
Played only by me and a friend
Lost the source code: There was no non-volatile memory on the computer so I used to note down the programs manually in a notebook, which I've lost.
Similarity:
"Good times." :-)
PS: The 34 years old computer still works, though 90% of the keyboard keys have stopped working. I'll need to replace internal keyboard membrane and also get adapters to hook it to a monitor.
The game will also never have ads, even tho lots of people tell me I'm missing out. Then again, those people haven't or can't build fun games.
I'd love to release some of my work (for free ofc) but I'm never truly happy with how limited my 3D art skills are so I always shelf it after finishing all the fun programming bits.
A WIP is often largely indistinguishable from a complete and utter broken disaster. When the project necessarily takes a long time, that work-in-progress state can start convincing you (and your peers/family/friends/onlookers) that it's not a work-in-progress but a total failure. The only difference between those two realities is abandoning it vs. finishing it.
Some (most?) people lack the grit to get through that trough of "unfinished-or-failed?" ambiguity.
That's a lot of text trying to describe what I've found is the real substance behind "real developers ship".
And somewhere in all this, you still have to have maintain enough perspective to know when to cut your losses.
As a developer, and builder of things in general, I have hella respect for anyone who does such projects.
I know this is a good idea. I know it will help people. I know I can either monetize it long term or even have it function as a non-profit. I also know it will take many years to slowly build to the functionality and content quality that I'm aiming for. Holding onto that long term view is extremely challenging.
Most days are just watching nothing happen, or slowly, slowly adding a single course (aggregated sites litter the golf internet, I want the opposite). One day I'll post on the golf subreddit and have 1000 users, get positive feedback, and the next two weeks just 5 users per day from google. And the kicker is, I'm genuinely embarrassed by some of the sub-optimal code and real lack of functionality I haven't addressed, even though I'm honestly very regularly working on it.
The best advice i got from a friend: only look at one-month or two-month increments as far as users. Day-to-day can get depressing, but on a bi-monthly basis, I've had slow-and-steady growth. At the same time, while I'm only up to 700 commits so far (vs 2000 in the article), I do have serious anxiety that I'm wasting years of my free time building something that won't amount to anything but a couple hundred upvotes on reddit, so I look at it as my unique hobby. I like mapping courses and making course books. It's my site and my hobby, and I'm fine if it's just me doing the work alone for the rest of my life. I believe that much in the project.
It has probably a 50% chance of surviving a firing. Naturally the class instructor is concerned that "all this work will be for nothing".
But unlike him, I'm at peace. Creating the sculpture was its own reward. After the firing it maybe a big bag of bits, but that won't remove the pleasure of creating it.
In the same way I applaud your enjoyment of your hobby. Whether it is financially successful or not, your pleasure needs to be in the journey, not just the destination. If you keep it that way you'll have more fun than if you're only working for a future payday. And if you do monetize it, you may find it robs you of your joy.
If someone was going to pay me for my sculpture, I'd be a lot more worried around about now :)
Thanks :)
I've found incorporating tests on my personal projects allow me to pick it up after even a year or two, but if I don't have tests, they inevitably become so jumbled that they cannot be salvaged once the initial effort is over.
Who says that this feeling is not entirely correct and most of software development is insanely broken, i.e. software development as of today actually mostly means working around these insane problems such that not already a monkey that was conditioned using electrical shocks realizes how broken everything is.
If you want to create things — anything, you put your ass in that chair every day regardless of whether you feel you are accomplishing anything. Eventually, you will start to make progress towards your goal. It gets better as you become better at staying the course.
Highly recommend The War of Art by Steven Pressfield, which is a short, but important read on this very topic.
If you need a break, seeing this documentary about it will be worth your time: Indie Game: The Movie (2012) https://moviewise.wordpress.com/2012/12/28/indie-game-the-mo...
And, if you need some encouragement or diversion about the joy and reward of learning and how it get help you achieve "flow" and happiness from your work, please read: Some Advice On Happiness From A Few Good Movies https://moviewise.substack.com/p/going-through-an-existentia...
1 - https://math.stackexchange.com/questions/3137017/how-do-you-...
I have recently gotten back into it to explore things I never got a chance to do before like building an AI and fog-of-war. Currently the game is inspired by Advance Wars, and you can see me play against my AI here: https://m.youtube.com/watch?v=bGeEeti22bM
I’m tweeting about the technical details and progress on Twitter:
* Basic explanation and code examples: https://twitter.com/cpojer/status/1460221157634830337
* Map Editor: https://twitter.com/cpojer/status/1488510688389566464
* Fog of War: https://twitter.com/cpojer/status/1547967785015189504
* Testing Infrastructure: https://twitter.com/cpojer/status/1538299796334686208
* Random Map Generator: https://twitter.com/cpojer/status/1537444893580136454
I’m currently working on the game design to make it “inspired by Advance Wars” instead of just a clone.
The challenge there was that PICO-8 has infuriating arbitrary restrictions on code size to limit the developers for fun lol. To get around that, I have code that swaps serialized memory between virtual "cartridges" in order to fit everything in.
Sadly that limits the game from distribution on the official PICO-8 network "Splore", because those games must be single-cartridge only, so I have a stripped down version without a campaign that is uploaded there.
The AI was by far the funnest to implement. Getting enemy ranged units to retreat correctly when they were in range of attack was such an awesome feeling. It really led me down a rabbit hole of making games primarily so that I could code fun AI
You can play in your browser here: https://lambdanaut.itch.io/picowars
There are many game devs that choose to roll their own... The code stats look quite different.
Also contractors... Some literally do everything by themselves.
If you're doing your own game out there, hang in there and strap on for n^2 the expected timeline!
I love making games because to me it's one of the hardest part of computer science... Not only you have to make something with immediate rendering, that runs at 60fps or higher and that is fun, full of contents AND unique in some way!
Then you haven't even started marketing...
Creating a video game requires knowledge of the following: programming, graphics, 3D or 2D art tools, artistic ability, UI and UX design, game design, music production, cinematography, storytelling, copywriting, etc etc. It’s just astoundingly complex.
Games demand more from their audience than TV, but you're still given a lot to consume passively, compared to a book: instead of imagining scenes, you're again given them as pictures. Games do compensate though with demanding that you make choices as you play a game, which may impact a story. Well... that's as long as the game is not an FPS, or a racing game, where choices don't matter for a story, as the story is either non-existent, or barely important; and what matters a lot more is your dexterity and reflex.
Also see https://ifdb.org/
Games are supposed to be fun. The money goes the other way, so the annoyances are taken a bit more seriously. The creator has to take that frustration on themselves instead of externalizing it, which is more work for them.
Add to that the delight aspect, and games try crazy stuff that would never fly with business software. 'Safe' doesn't get you many accolades so you're essentially obliged to try at least a few things. And the shelf life is lower so even if you fuck up you usually only have to hear about it for three years and then you can try something new. Once in a while, every five years or so, one of those UI gambles ends up being adopted by the industry, so while not the most effective petri dish for general UX research, it still gets some results.
Things do appear to be changing, yet with older generations there's still a lot of judgement.
TLDR; games like movies are a sum of parts that is a lot less creative and original than might appear at first blush.
I've worked with various teams on game jams and I’ve had conversations with people over the years, encouraging people to hold themselves to a lower standard. It’s not just the fact that this is a game jam—we are not competing with Zelda, and our game doesn’t need to have scope, scale, or polish similar to a Zelda game.
I also enjoy playing a game and seeing somebody’s amateur-ish art, or hearing some clumsy musical phrases that they put together. There’s something special about that which is hard to capture when you start spreading the work around people, because it’s just so hard to put together a coherent vision for a game in multiple minds.
We’ve also talked about how you run into a lot of people who’s main goal is to do job X at a higher level of technical ability and polish so they can get hired by a studio they like. It’s understandable why they’d want that, but it also leads to people sanding the edges off their style, so to speak. This makes it difficult to assemble a team of people who are all interested in the same style of development process (no judgment—some people on your team want a portfolio piece for a future job, some people want to express themselves here and now).
I don’t think making a solo game developer should be any different than being a novel writer, in the sense that it’s not a club reserved for the people who are good at doing it—but a club for the people who put in the time and effort to make something.
Also! Physics, vector math, AI, cameras, shaders, networking, etc
On a small project you also usually have to do the game design, it is art too.
And art is harder than technique in my opinion.
I got a lot of respect for artists.
That's because most games are about shooting other people. This is something only children (and perhaps some dictators) love to think about.
So it is with games. I’d urge you to take a second look. These sorts of generalisations, ill-supported by evidence, have historically been bad for the medium.
I've made a number of games by myself as well as with small teams. It requires incredible focus, scope management, and tons of time. It's like boiling the ocean. For me, it's all worth it to create something original from start to finish.
All this is really spot on with my experience. It just not clear if the author hired an artist or he just recommends it...its quite common for Game dev's to claim they made a game by themselves but actually contracted out the music, art, animation, etc.
Somewhat of a bug bearer with me as there are some genuine solo dev's creating great work that get overshadowed with the whole solo dev marking spin.
Just released my own game in EA, I'd say our saint patron Gabe Newell kinda failed us with the way discoverability works in Steam.
There is clutter problem that hides a lot of gems, and they have full coffers to solve it...
But eh... maybe it wasn't all about expanding the Human consciousness and Art and all :p
I'm not too bothered about Steam's discoverability, its at least honest(ish) about it. The more reviews and sales you get the more its pushed...as far as I can tell.
I've found discoverability/promotion to be the most difficult, esoteric in the indie game enthusiast spaces. That really surprised me.
Right now my newest moonshot is joining a friend who's just started trying to make an educational game for developers, that teaches you in a fun cyberpunkish style how to develop an NES from scratch, step by step. It's an absolutely bonkers idea but it's something we'd have loved to have and that we're having a blast making, just for ourselves. I doubt it's ever going to be successful if we make it to the finish line and ship it, but luckily it's just for fun. I'm thankful of posts like these, it helps getting motivated to make it through.
(my conclusion was, a bit, playing it is helpful to think about balancing and final polishing, but only playing it and not improving it probably does not help much. In either case, it is probably a good sign, to have fun with your own game ..)
About your question, if part of your job is game design or assurance quality, you have to play the game a lot. Like a player would.
The problem is I don't know what is the right next step to take in front of all the issues aforementioned, and I have been thinking that for years without taking any step ahead or risking
[0] https://www.edx.org/course/introduction-to-game-design
[1] https://www.youtube.com/playlist?list=PLhyKYa0YJ_5C6QC36h5eA...
Then make a slightly larger scale game, like an infinite runner 2d platformer. Keep the scope small, but try to finish every aspect of it (menu, sound, etc). Once you have a finished version you can decide whether you want to add to it or start another project of slightly larger scope.
Don't jump into it trying to make your dream game. Start with making the game that you can realistically make, and then gradually expand as needed. Once you've fully finished a game you'll have a much better understanding what you can do, what you'll need to learn to do your next project, how much work it was for that scope of project, etc.
Make a game where everything is a solid colored rectangle. Then go back and see what it would take to turn one of those rectangles into a simple animated character. This type of gradual progressing will let you focus on things one at a time, decide your own limits (will I make my own walking animation? or will I use a premade asset? How long will one walk animation take?)
The theme and restrictions take away a lot of the choice and apprehension. And you're laser focused on the end goal and _will_ release something since you have an end date.
the point about actually finishing things is a great takeaway. the first game i finished /myself/ took a week, then got another week of post-launch attention... but that was after some 10 years of personal work to develop the skills, then another 5 years or so in the industry gaining experience.
i probably could have done this earlier, but i was constantly setting my sights higher than what was realistic.... but actually the lessons from doing that were pretty invaluable. today, i'm more than capable of filling any role in any of the specialised areas of programming required for games to an expert level... and a lot of that knowledge came from trying to build AAA quality features in isolation with little support - finishing features or engines rather than whole games.... so as much as i agree with the conclusion, i'm not sure it would have helped me to learn it sooner :)
It's such a demanding field that if you're passionate about it, you're bound to learn a lot of things. I don't do game dev anymore but the time I did taught me a lot about what I know now.
I'm aiming to make about 20 games at once, at the moment.
They gave you the damn formula....
Then again, getting something just up to the point that it is playable, a proof of concept, is when you can really see if a game is fun or not. I have floppy disks full of games that never made it past that point because there was just ... something missing.