The game is like an old play-by-mail or bbs game - everyone gives orders using the client: build factories, move this ship there, transfer cargo, and so on. Then, the server-side code resolves the results of all of this simultaneously at some known time - planetary population grows, taxes are collected, factories actually get built, crops grow, ships move, and where hostile forces are in the same area, combat is resolved.
You don’t actually control combat, any more than you control a football game you watch (or, more to the point, battle chips). But you control, or try to, the circumstances of combat - you want to avoid fights you can’t win, and engage with inferior forces.
I was going to give ships a simple “stance” - attack, or escort, or defensive, or flee - but I love the concept of letting you program your own behaviors with a battle chips type of interface. I also dig the concept that you might have to build your own chips - so simple behaviors are cheap, but a complex or large battle program might be harder to build, or have more difficult-to-obtain chips. This is the case already for engines/weapons and so on, or was - moving the concept to chips seems logical. Indeed - the “fire laser” chip might be the actual laser represented, and part of the coding might be dragging around components. The possibilities are endless.
I’m very open to suggestions - right now, I’m still doing infrastructure things like making time pass and ships move. I’ve used lua both client-side (obviously) and server-side, with the intent that the actual battle-resolution code (when it exists - right now it’s “bigger total mass wins”) be used on the server for actual combat resolution, and on the client side for both battle simulation and displaying the actual combats (each battle gets a seed for the RNG, so you can replay them).
Talk about thread hijack! My apologies I’ve been keeping mum on this because it uses features of the beta (http.get, for both graphics fetch and turns) heavily - no point in being public about something that might never see the light of day. But sometimes I just gotta share.
The server side code is up on github already - ill put the client up soon (identity is hardcoded - need to fix that first so I can share)