
Cosmoteer: A starship design, simulation, and battle game - winterismute
https://cosmoteer.net/
======
gridspy
Cosmoteer is a really great game, I had lots of fun building railgun ships and
trying to cut opponents in half, or killing people in a hail of missiles. It's
good fun trying to design the optimal ship and I like how building a powerful
ship naturally leads to your ship being vulnerable.

I'm working on a game that is a little more "Space Factory" and a little less
"Space Combat" oriented because I'm always the guy building the asteroid
mining ships. So it's really great to see space games like ours getting some
love on HN.

[https://twitter.com/RecallSingular1/](https://twitter.com/RecallSingular1/)

Pretty early days yet. Using Godot and Rust for game dev, it's good fun so
far. Hit me up if you have any questions.

Be sure to wishlist Cosmoteer on steam. Lets help our fellow indie devs.

[https://store.steampowered.com/app/799600/Cosmoteer_Starship...](https://store.steampowered.com/app/799600/Cosmoteer_Starship_Architect__Commander/)

~~~
ra1n85
I didn’t know Godot supported Rust. How has the experience been? Have you
tried any other game engines?

~~~
gridspy
Really positive, since I love Rust very very much. It's great to have modern
conveniences but insanely fast and safe.

I switch between developing a pure simulation framework and working in Godot.
The sim is 100% rust and then I have another crate which binds with Godot.
There I can concentrate on updating the scene tree based on the simulation.
Since only the simulation needs to be synchronized for multiplayer I expect
this will work better long term.

I use these opensource bindings [https://github.com/GodotNativeTools/godot-
rust](https://github.com/GodotNativeTools/godot-rust) \- Godot supports
dynamically loading your game code in a DLL - Called "GDNative" \- so you can
use any compiled language.

For an old discussion of my Godot pros/cons see this post on Reddit. The
community stepped forward and was very supportive, so I have decided to stay.

[https://www.reddit.com/r/godot/comments/ch1xsx/i_might_switc...](https://www.reddit.com/r/godot/comments/ch1xsx/i_might_switch_to_unity3d_heres_why/)

I have also tried unity, I wrote a Rust chess AI against it for the "four
kings one war" variant. My experience with Rust in Unity was more painful. For
instance you need to restart the unity editor to reload the DLL. It crashes
painfully often. Loading and switching targets can be very slow, etc.

[https://www.reddit.com/r/rust/comments/c0e5yf/i_created_a_ru...](https://www.reddit.com/r/rust/comments/c0e5yf/i_created_a_rust_chess_ai_for_16x16_variant_4k1w/)

However, the Unity game itself works very well now and the rust story was very
very good. Building on Mac after building on PC was trivial - it just worked.
Setting up a new dev machine was just checkout, rustup, cargo test - it just
worked.

Getting things to look nice in Godot is trivial. I really just set up basic
lighting, ticked some boxes and imported some basic meshes from Blender. I'm
only getting started and I think my screenshots look quite nice :D

~~~
gridspy
UPDATE: This inspired me to finally write something more long-form:
[https://medium.com/@recallsingularity/how-i-use-rust-and-
god...](https://medium.com/@recallsingularity/how-i-use-rust-and-godot-to-
explore-space-806bb810e950)

~~~
alexanderdmitri
Great write up, now I'm inspired!

~~~
gridspy
Horay! All it takes is a few hours every few days. You'll look back and say --
Wow! I made that!

------
CobrastanJorji
I'd be curious to attach a machine learning algorithm to this to see what sort
of insanity an optimized spaceship looked like.

~~~
dpq
In that case, I recommend you to read about the story of Douglas Lenat's
Eurisco engine and the TCS Traveler game. It's kinda old but fascinating.

~~~
crooked-v
A link: [https://aliciapatterson.org/stories/eurisko-computer-mind-
it...](https://aliciapatterson.org/stories/eurisko-computer-mind-its-own)

------
scrumper
Reminds me a bit of FTL, minus the turns, plus a designer which if it is half
as cool as it looks will be amazing fun. Worth a Windows VM.

~~~
DoofusOfDeath
I'm curious if Steam Proton could handle this.

Few games could tempt me to create and maintain a Windows VM, but I'm already
running the Steam client on my Linux boxes.

~~~
DoofusOfDeath
FYI, I just tried this on Ubuntu 19.04 with today's update to the Steam client
and using Proton 4.11-4. The Cosmoteer demo installed without any complaints,
but seems unable to launch successfully.

~~~
frio
Alongside winetricks
([https://appdb.winehq.org/objectManager.php?sClass=version&iI...](https://appdb.winehq.org/objectManager.php?sClass=version&iId=37322#testdata)),
if you've not seen it before, protondb.com is fantastic. In particular, see
[https://www.protondb.com/app/799600](https://www.protondb.com/app/799600) for
help in getting Cosmoteer to start.

I'm a huge fan of Lutris these days; community participants wrap the above
advice into install scripts, and it's surprisingly common for things to
magically Just Work (tm).

~~~
DoofusOfDeath
Thanks! I had no idea about Protontricks!

------
cpeterso
> Important Note: Multiplayer is NOT SUPPORTED between 32-bit and 64-bit
> operating systems!

Does the network protocol pass unsized integers or data pointers between
clients? What other CPU architecture dependency might prevent 32-bit and
64-bit clients from playing together?

~~~
waltdestler
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.

~~~
gridspy
Oh no!

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?

~~~
waltdestler
I've looked into all of those things in the past:

\- 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.

~~~
gridspy
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).

------
wouternl
Awesome, but the quality seems high enough to be a paid (Steam) game? This
looks like it deserves a bigger audience?

~~~
freeqaz
I agree -- game devs deserve to be paid for the hard work they do.

On the site, I see a Steam link on the bottom of the page. And on the Steam
page it says "download demo". Maybe this is just a way to get feedback + build
a community before rolling out a paid version?

~~~
waltdestler
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!

~~~
waltdestler
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.

~~~
Grangar
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.

~~~
gridspy
... And both of these can be done after releasing into EA.

------
mostlysimilar
I played this at PAX West and it was a blast! The developer is very friendly
and a pleasure to talk to.

~~~
waltdestler
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. ;)

~~~
gridspy
I hope your server survives the hug of death.

Also, I love your game :D

------
testvox
This looks a ton like Battleships Forever, which is a huge complement as that
is an awesome and underappreciated game. It's also free if anyone hasn't tried
it yet
[https://en.wikipedia.org/wiki/Battleships_Forever](https://en.wikipedia.org/wiki/Battleships_Forever)

~~~
borkyborkbork
Very similar to Reassembly also:

[https://store.steampowered.com/app/329130/](https://store.steampowered.com/app/329130/)

------
munk-a
I'm a bit sad that this is limited to a 2-D plane, but it's interesting to see
the focus in this game and compare it to something like space engineers where
the components you're placing is still vital, but their location is entirely
an aesthetic choice.

It's specifically saddening because we're all so trained to think about these
problems and tend to suck at considering them in higher dimensions, and
getting better at things like that is fun and helps promote good thinking
skills.

~~~
gridspy
The location of objects in cosmoteer is actually vital. Ammo factories and
reactors need to be near guns or they won't fire often. Engines are physics
based. If you don't armour your ship well or space things out you'll get a
cascade explosion.

But the lack of 3d is a hard one to solve from a game design standpoint. It's
hard to build an intricate 3D object using a 2D monitor and they are more
complex to visualize and change.

~~~
munk-a
Oh absolutely, not only technically but also because our brains suck at
conceptualizing complex systems on a 3-D plane, the fewer the dimensions the
more complexity we can handle - hence while a lot of circuitry diagrams are on
either a 2-D or 1.5-D plane.

~~~
gridspy
I agree, I think that we typically can't see "inside" so we need something 2D
... but people can handle 3D with the right visualisation. In our life
experience, we tend to interact only with the surface of objects.

Bear in mind that circuit boards are actually 2.5D - they have up to 8 layers
and have tracks inside, connected by either parts holes or "vias."

When it comes to diagrams, I think that is just because we use 2D paper, so we
make 2d diagrams. If we had a nice 3D representation I think more people would
use that.

Then again, it seems like overkill since you can split a circuit diagram into
submodules: power supply, microcontroller, peripherals, ...

The difficulty in most spaceship games is that you create a "border" of hull,
engines, etc. You then put in the "filler" for instance crew space, corridors,
chairs, guns. What to do when you have so much "filler" that the "border"
becomes too small? In Space Engineers I find this problem hard to solve as a
player. It's less so in the 2D Cosmoteer.

------
zelon88
I tried like hell but I couldn't get it to run on my W7 VM or PlayOnLinux or
Winetricks. Gonna try a W7 native machine tomorrow.

------
bduerst
How does this compare to _Gratuitous Space Battles_?

[https://positech.co.uk/gratuitousspacebattles/](https://positech.co.uk/gratuitousspacebattles/)

~~~
ceejayoz
Looks like a focus on one complicated ship (with crew management as a key
piece) instead of GSB's fleets of identical ones.

~~~
waltdestler
You can have multiple ships in Cosmoteer, but yes, the focus is on smaller
fleets than GSB.

~~~
gridspy
Another key difference is that you have a lot of control over your fleet in
Cosmoteer.

------
kybernetikos
My feedback:

* I really enjoyed it.

* It took me a bit to get out of the mindset of games where you slot your upgrades into predefined places on a ships body. Until I got past that, I didn't properly appreciate how cool the game was.

* I found it hard to actually view battles and see what was going on. At a range where I could see the ships, I couldn't really see anything about them. I often wanted to track a ship or to track-with-offset a ship (if I had ships chasing it down), but I couldn't really get the hang of setting my viewport very well. After a while, I got used to speeding up time and then dropping it down to 1/4 as soon as my ships made contact, and that helped a bit, but it was still difficult for me. I feel like having a ship selector of all ships in radar range that I could page between could be good, and maybe make it easier to chase ships down with the viewport.

* While it's pretty easy to know if you need more crew, or power (because of the indicators), it's a lot harder to know if your ship is suffering because of insufficient maneuverability.

* There were a lot more friendly fire events and collisions with my small formation of ships than I thought was really reasonable. I love the possibility of it, but in ships crewed by reasonably intelligent crew, it should be obvious to stay out of the huge plasma beam firing at the other ship.

* I did enjoy discovering that due to my placement, if one of my missile launcher bays fired during a particular maneuver, the maneuvering thruster would blow my missile up.

------
golergka
So, FTL meets Dwarf Fortress?

~~~
nbeleski
I had the same two games in mind when I saw it! Looks promising.

I wonder how the AI behaves... Dwarf Fortress is such a gem of a game.

~~~
waltdestler
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.

------
gervase
I had some trouble accessing the site; if anyone needs a mirror:

[https://web.archive.org/web/20190917180019/https://cosmoteer...](https://web.archive.org/web/20190917180019/https://cosmoteer.net/)

~~~
waltdestler
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.

------
onnnon
Here is the steam link:

[https://store.steampowered.com/app/799600/Cosmoteer_Starship...](https://store.steampowered.com/app/799600/Cosmoteer_Starship_Architect__Commander/)

------
cwingrav
This looks a lot like the app Space Arena: Build and Fight MMO:
[https://apps.apple.com/us/app/space-arena-build-fight-
mmo/id...](https://apps.apple.com/us/app/space-arena-build-fight-
mmo/id1134614037)

Fun game but it had no progression or activities. Very repetitive and not
enough reason to differentiate your builds. Hopefully this game adds more
content.

~~~
dlhavema
I didn't like the build and fight game play: designs and then watch AI fight
other AI.

Do you control your movements and shooting in this game? Looks pretty fun

~~~
Holomatic
Yes you do! Came from the Discord to investigate the topic further, don't mind
me.

You can totally control your ship (as long as you activate the 'advanced
controls' over settings/finish the tutorial), focus certain guns to shoot
somewhere on the enemy ship while others target elsewhere, or manually drive
and aim your ship with Direct Mode!

------
cfv
Anyone managed to make this work for latest Ubuntu? How?

~~~
Diederich
I didn't try it, but Wine says it's silver:
[https://appdb.winehq.org/objectManager.php?sClass=applicatio...](https://appdb.winehq.org/objectManager.php?sClass=application&iId=19138)

------
jvanderbot
Reminds me of Space Pirates and Zombies, at least cosmetically.

------
King-Aaron
So I downloaded this last night, thinking I'd give it a quick go.

Ended up blowing eight hours building spinning laser death platforms. 10/10

------
Beltiras
Looks like Factorio-level FTL. I like it!

------
Grangar
Oh man, I really like this. I'm staying up way too late tonight.

------
Camas
Directory indexing still on

~~~
waltdestler
That's intentional, I don't have much to hide. ;) I regularly point people to
the cosmoteer.net/downloads directory.

------
busymichael
I have a question for the game devs who are developing games for PCs: Why are
you developing new titles for PCs when mobile games are both the largest and
fastest growing segment of the market?

I am curious. I was an early web app developer who missed the migration to
mobile. I have always regretted it and am playing catch up.

Source: [https://newzoo.com/insights/articles/global-games-market-
rea...](https://newzoo.com/insights/articles/global-games-market-
reaches-137-9-billion-in-2018-mobile-games-take-half/)

~~~
gridspy
Financially, mobile games are a race to the bottom and no-one is prepared to
pay for anything. It's all nasty F2P and advertising tactics to succeed now.

Also, a complex game like this is not well suited for a mobile game. The
mobile interface is just too limited. The constant CPU demands are just too
great.

~~~
meheleventyone
Although Apple Arcade launches this week which looks like it will represent a
sea change in that market. Hopefully it takes off and we see some more
interesting games coming back to touch screen devices.

------
Noxmiles
I thought this would be an perfect mix between Reassembly and Endless Sky and
was happy to download it right now, but than i saw it's for Windows ONLY and
also is closed source. :(

Quote: Will there be a Mac and/or Linux version? Eventually I plan to release
Mac and Linux versions of Cosmoteer. But right now, I'm just trying to make
Cosmoteer as stable as possible on Windows before working on other platforms.

Why is this game free? Will it always be free? It's free because, right now,
getting a lot of feedback from players and building a strong community is more
important for the game's long-term success than making a small income.
Eventually, Cosmoteer will become a paid game, no longer available for free.

~~~
loudmax
Agreed. I don't mind paying for closed source games, but not if it's Windows
only. Indy game devs should be able to sell their games for a profit, but it's
disappointing when they're helping to prop up a monopoly.

~~~
waltdestler
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.

~~~
loudmax
Best of luck to you and your game. I hope it's successful.

