Hacker News new | past | comments | ask | show | jobs | submit login
Cosmoteer: A starship design, simulation, and battle game (cosmoteer.net)
414 points by winterismute on Sept 17, 2019 | hide | past | favorite | 125 comments



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/

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


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


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

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

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


UPDATE: This inspired me to finally write something more long-form: https://medium.com/@recallsingularity/how-i-use-rust-and-god...


Great write up, now I'm inspired!


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


It's great to see these technologies coming together. Thanks for writing this!


Did you try doing your Rust dev on Mac? I've built Unity plugins in Rust and have been able to load and unload them without crashes, but I've only tried on a Mac.


It is possible that the choice of Unity version was a factor here. We were using quite an old version of Unity.

It might also be because I was loading the DLL "manually" from C# - a fully fledged plugin might work better.


How does your game contrast with factorio?


Metal / resource patches are asteroids.

Mining outposts are small ships, which are automated to carry or transfer resources.

Your main factory is a space station. Or perhaps a mother-ship.

Internally each ship is kind of like a small factory, similar but different from Factorio. Hopefully I can achieve similar depth.

Ships can be piloted, controlled like an RTS or automated.


Sounds like it has potential. Please consider ensuring everything but a very few tasks can be automated (e.g. in factorio the only thing you can't do is place trains).


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


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.



I remember reading this so long ago, before I was interested in computers, and it didn't make a lot of sense then. Now, it's just beautiful.


Turn loose a genetic algorithm and watch the fight to evolve.


Ideal ship:

10,000 x One tile of engine, one tile of gun, zero life support, zero crew. Allow the swarm to overtake you.


this is basically how I play factorio endgame. one shield, one gun, fill the rest of my suit with legs. it's kinda OP, the bugs can't really hit you if you don't stop moving.


Yes, I want to fight against the buggers from Ender's Game.


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.


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.


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.


Alongside winetricks (https://appdb.winehq.org/objectManager.php?sClass=version&iI...), if you've not seen it before, protondb.com is fantastic. In particular, see 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).


Thanks! I had no idea about Protontricks!


Check out Starship Theory on Steam for something close to FTL.

Personally I found Starship Corporation (no relation) to be the best ship design "game" I've yet seen.


> 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?


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.


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?


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.


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


sure, if you want to pay them to do that


Hey, it is just what I am planning to do on my own game. Supposed to be kind advice. Surely they don't want to split their user-base?


Is there anyone left on 32 bit at this point in time on their daily driver? Windows, Linux, OSX, they've all been 64 bit for many iterations now.


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:

https://data.firefox.com/dashboard/hardware


The Steam hardware survey suggests fewer than 2% of users are on non-64-bit OSes. There are more Mac users (~3%) than 32 bit users.

https://store.steampowered.com/hwsurvey/Steam-Hardware-Softw...


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" =/


This is only true if you think that the Firefox demographic is skewed towards 32 bit computers.


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.


I do have a 32-bit device (Asus T100 netbook/transformer) that I use regularly enough for it to be a 'daily driver', especially when I travel.

But I'd be OK with this limitation :)


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.


Not all instructions are required by IEEE-758 to return the exact same result between platforms.

Though I guess the errors might be too small to notice for most object in this game.


If they're using lock step deterministic networking like many RTS games then simulation results using floating point can differ between 32 bit and 64 bit machines (or between release and debug builds on the same architecture).


Perhaps someone will benefit from a more detailed explanation:

To be more specific, some CPUs will increase or decrease the accuracy of floats in some situations.

Different CPU instructions will do different things. For instance a "multiply and add" instruction might store a high resolution float, where a different approach would suffer an expected rounding error.

If two computers get different answers in the maths, their simulation of the world drifts apart over time. Then they start to disagree on what is happening.

When you change compiler settings, platforms (32/64/windows/mac/linux) the compiler is likely to make different choices about which instructions to use where.


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


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?


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.


Factorio is the most successful game on steam. It has no singleplayer campaign either... they're just adding it now.

Just be transparent about where you are and what your plans are.


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.

I'd happily chuck $10 at something like this.


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 :)


Personally I was really surprised it was free. It doesn’t have a lot of content yet but what it does have is great.

That said, it may be hard to switch now without garnering those negative reviews you are talking about.


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.


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


I was literally ready to pay for it right now and then i saw it was free.


You should start charging money for this today. Don’t wait until it feels “ready”.


I really think your game is ready to offer a paid version / be in early access.

Even if that is just in the sense of "right, current version is the demo from now on, and all future versions are the paid version"

I suggest you gate some key upcoming features and hold on to those until you have a few to "launch" into paid mode.


Yeah, it seems the download on the site is a free alpha before they plan on releasing it on Steam as an Early Access title.


Minecraft started as a community-focused beta w weird, low pricing.


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


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


I hope your server survives the hug of death.

Also, I love your game :D


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


Very similar to Reassembly also:

https://store.steampowered.com/app/329130/


I would argue it's more like Captain forever

https://store.steampowered.com/app/758930/Captain_Forever_Tr...



I wish they had made a multiplayer grinder for BF with matchmaking.


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.


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.


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.


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.


I'm actually excited that it's all 2D.


Yep, 3D would be a confusing mess in UI terms.


Check out "Avorion" if you're into arbitrary spaceship-building in 3D.


there's always "from the depths" for the 3d detailed builder itch - most components there are functional and tiny bit of damage can ripple into multiple non functioning system if the vehicle is not build carefully enough


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.


How does this compare to Gratuitous Space Battles?

https://positech.co.uk/gratuitousspacebattles/


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


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


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


Perhaps lacking some of the canned messages that GSB delivers during a battle, e.g. "Bad news: that last hit just took out the ship's galley. Good news: it was my turn to cook tonight."


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.


So, FTL meets Dwarf Fortress?


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.


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.


It is, but in the last 5 or so years, there have been a LOT of indie games "inspired by" DF released, with many, many examples of how to do it wrong.


See also: Space Station 13


You've sold me!


looks like Factorio and Robocraft combined into one


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

https://web.archive.org/web/20190917180019/https://cosmoteer...


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.




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

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.


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.


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


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!


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


I didn't try it, but Wine says it's silver: https://appdb.winehq.org/objectManager.php?sClass=applicatio...


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


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


Looks like Factorio-level FTL. I like it!


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


Directory indexing still on


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


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


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.


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.


I am not a game developer, and I take it that you do not play games.

There is a significant difference in the market and experience of mobile and PC gaming.

You may as well ask why people still develop for console, when they’re basically just stripped down computers.


Mobile games are the most crowded segment of the market, with mainly one method of discovery (app store) which is extremely crowded as well. Also many game genres simply cannot be done (well) on mobile.


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.


Geeze, you want a free game, AND open source it, and want them to make a Mac and Linux port, and promise to stay a free game?

I understand why indy devs get crushed ;)


I’m setting up a Windows VM right now.


It's free, and it works in wine. What else do you want?


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.


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.


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


There is very little return for the effort expended on making Mac or Linux ports for video games, and with some of the changes that Apple is making, that calculus is getting even worse.


Locking your software onto someone else's platform is short sighted. I appreciate that indie game devs have limited resources, but a planning your game platform neutral from the outset will put you in a better opportunity to exploit other opportunities.


Short sighted? Games have been developed for windows first (or X-console-first) for going on 25 years. Seems like game developers have done OK with that strategy.

The fact that windows-only is a poor business decision isn't obvious to me.


Maybe beneficial to the small game dev to focus on a single platform at expense of the ecosystem, not beneficial to the ecosystem. These devs have got bills to pay, and individually it's hard to push against the current, so it's an understandable trade off.

This is the tragedy of the commons.


The tech here isn't great, Unity is sort of the banner of a decent cross-platform engine for building on top of but it has it's issues... for a game like this my guess is that the graphical rendering is very closely coupled with the game logic in an effort to save cycles. Your game being unperformant out the gate is a death sentence, your game being only available on windows means <1% of your market is disappointed.

I wish games had better cross platform support, but the motivation just isn't there monetarily and these guys tend to be financially strained as is.


I'm guessing that your not an indie dev :)


Nope. But if I were, I still wouldn't develop exclusively for a proprietary monopoly.

We all have our own trade-offs to make. I don't blame anyone for focusing on where the money is. In the long run though, we'd all be better off with a competitive market than stuck with a single dominant platform.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: