Crew have AI in Cosmoteer but it's not emergent like Dwarf Fortress is. Cosmoteer's AI is deliberately predictable so that you can use your knowledge and customization of how the AI will behave to optimize your ship's design.
Hey, Cosmoteer dev here, I just want to give a quick explanation of why the game is currently Windows-only: Originally I tried making the game in Unity but ran into major performance problems with that engine, so I switched to my own engine (there weren't really any other options like Unreal available at the time). But because I'm only a solo developer and I do all my own programming, art, sound, and game design, my time is very limited, so I chose to concentrate only on one platform. (And obviously Windows is by far the largest market for PC games.) I do hope to support other platforms eventually, but I can't promise that and it will probably only happen if Cosmoteer is commercially successful enough on Windows to warrant the investment in other platforms.
Cosmoteer relies on deterministic floating point calculations to keep the multiplayer simulation in sync between computers. Cosmoteer is also written in C#/.NET, which uses SSE instructions for 64-bit and FPU instructions for 32-bit, which can produce slightly different results.
Perhaps you need to either switch to a deterministic physics approach with fixed point math or do some research on float determinism (which is much harder).
Or, give up on lockstep and move to client-server replication with prediction on your own ships?
- Making C#/.NET floating point deterministic across x86/x64 is not possible, there's no way for force the JIT to output a specific instruction set.
- Client/server with prediction works for games that have relatively low numbers of objects that need to be synced (i.e. most first-person shooters). It doesn't work well when a game has thousands (or in Cosmoteer's case, tens of thousands) of individual objects that need to be synced, the bandwidth and CPU costs of keeping those synced is astronomical. Originally that's how Cosmoteer's multiplayer used to work, and it was a disaster, plus the code to keep everything in sync was insanely complicated.
- Switching to fixed-point is the only remotely-viable option you suggest, and I've strongly considered it in the past. But it'd be a huge amount of work to port all of the floating-point code to fixed-point, and there would likely be a significant performance loss in doing so. Since 32-bit users are only about 2% of all Steam users, I think it's not worth doing.
Based on playing your game, it seems you need to sync:
4 bits per object - Reload / capacity status (This is mostly visual for other player's ships)
2 bits - number of people manning module
Damage (4 bit?)
Location (x y), current orders (move, direction, orbit) per Ship
For bullets:
Bullet / missile location, velocity / goal.
Most ships have 20-200 modules? So one packet (~400 bytes) per ship? Plus a "Ship came into visual range" packet with ship layout data.
All the little people, treat them like a client-side effect. Completely predicted for other people's ships. Run the same logic on both based on the network synced capacity status.
Either change your model to predict X time to move resource from A .. B (carried by a person) or have each client claim time spent. It is highly unlikely that a player will observe another player's ship and say "But that person just carried X to Y but the levels didn't move!" So it's a case of each client saying "My ship's module's levels (based on crew) are currently XYZ" and the server / other client going "Hmmm, yep, seems feasible. OK"
It can be done, it's not impossible. Just work - it's a design choice.
I would argue that as long as the ship (as a whole) is controllable but still fully customizable people won't worry about faithful sync of other player's ships. And they will only care about accurate people in the ONE ship they are currently editing (fully zoomed in, no roof).
About 24% of Firefox users still run a 32-bit OS, though gamers probably have newer hardware and software than the average Firefox user. See "Browsers by Architecture" in the Firefox Hardware Report for a graph over time:
As depressing as it is to say this: Firefox's marketshare is so low that we really need the Chrome numbers here. 24% of a <10% market share means "quite likely around 2.4% globally". That's basically a number that says "safe to entirely ignore in terms of userbase support" =/
other way around: it assumes most non-firefox users are on 64 bit, which is a pretty reasonable assumption given Apple's hard push for 64 bit (so that's the OSX-ers covered) and Chrome's "we've made finding the 32 bit installer _really hard_ because we don't want you to use it" move. I'm sure there are some 32 bit users in both segments, but far less than you'll find in firefox land.
Try adding an occasional pass that rounds or truncates all your floats (maybe once a frame, maybe less). It's not really "supposed" to work in any bulletproof way, but for a given game there's usually a reasonable rounding factor that'll fix things faster than floats diverge.
Hey, I'm the dev, and I agree 100% with your criticism! Yes, the singleplayer is very barebones right now, and more content is coming, including a totally reimagined singleplayer campaign mode.
Hey, I'm the dev of Cosmoteer. I can confirm you are correct, I'm trying to get feedback, bug reports, and to build a community before switching to paid. In the meantime, thanks for playing!
I don't think you should wait. People seem to be having legitimate fun playing it, so you've already got one up on most early access games. I think it would be a real bummer if your game blew up and you weren't financially rewarded for it, unless you already have so much money that it doesn't matter.
Thanks to you all for encouraging me to sell it now. I honestly don't think I can do that yet given the bare-bones state of the singleplayer campaign. I think there would be a significant portion of negative reviews complaining about that.
Go greenlight. They Are Billions launched early access without a campaign and did just fine. Same for The Long Dark. Wreckfest was notorious for it's long early access cycle (years!), but turned out fine.
Why not make it Early Access (if you're actually planning on releasing a fully fleshed out singleplayer campaign), brand it as a sandbox game and be clear about what's working and what's not yet implemented?
I would buy this game based just on the info you put on the website :)
I'd buy it right now if I could. I got hooked instantly and only slept 4 hours last night as a consequence, I'm sitting at work thinking how I can fix my build. It's seriously decent enough for an early access title, all it needs is more fleshing out for the campaign and some UX improvements on the menus.
Sorry about that, my poor webserver wasn't expecting this kind of traffic. :/
If you can't download the standalone version, try downloading the "demo" on Steam, which despite being called a demo is really just the same version as the standalone.
Hey, I'm the dev, thanks for your kind words! You probably caught me at a good moment before the lack of sleep and standing all day caught up to me. ;)