game/README.md

97 lines
3.5 KiB
Markdown

I've been kicking around the idea for a game for a long time. Recently I
went to play Rome: Total War and it broke, so now I'm going to write a
game.
It's roughly a space explore and colonize kind of a thing. Multiple
species and civilizations (eventually multiplayer).
I want to separate the UI from the Server and maybe have multiple
clients? At least a Tkinter client to begin with and then maybe a cool
"gamey" UI written with Godot or something.
So far there is a canvas that is larger than the window and that you can
scroll, and there are some stars that vary in size a little but they're
all yellow. And that's it.
I use some old code I had laying around to generate stars that are not
too close to each other, it winds up being just under 5000 stars with the
current parameters.
The "server" isn't a server at all yet. It just generates the starfield
so the UI script doesn't have to do it each time. I'm just using pickle
for data format, eventually it could use JSON (ick) or SQLite (nice.)
Aesthetics: maybe have a sprinkling of background stars behind the
"real" stars (that are part of the game.)
Toggle fullscreen.
Controls? Tabs? HUD/OSD (heads up display/on screen display)
Fri Apr 12 12:27:56 PDT 2024
I think I will use SQLite as teh interchange file format. It's language
agnostic (i mean, SQL, sure, but you can use it from any lang) and I can
keep historical data in it rather than just the current state, eh? No
one will freak out?
That was easy.
I don't want to spend too much time fiddling with the widgets and UI,
it's fun but it's a bit of a rabbit hole, eh?
The basic model is that you get a state db from the server, explore it
with the client and queue up an order list to send back to the server for
processing, which then returns the new state db.
What format for the order codes?
Thun code?
THe db tables and game data types should be compatible with Prolog?
I don't want to have a bunch of Python objects modelling the game
entities if possible, what I mean is, it would be neat if the db rows
(tuples of Python ints & strings) and the Tk widgets (canvas items, etc.)
could be the bulk of the internal game, uh, stuff. Not everything needs
to be a class?
Sat Apr 13 11:13:18 PDT 2024
I don't like the Poisson star layout. It's too regular. I'd like it if
there was a really huge "space", like 2^10 x 2^10 with stars laid out in
a spiral pattern like the Galaxy. Or even use real astro data (like, uh,
is it Epic that does that?)
But it's not on the critical path. I've got stars.
[VGA Planets](https://en.wikipedia.org/wiki/Vga_planets) is a big
inspiration.
> the 4X game (eXplore, eXpand, eXploit and eXterminate) model
[4X game](https://en.wikipedia.org/wiki/4X_game)
Sat Apr 13 13:10:19 PDT 2024
I took a look at the real Milky Way and man is it ever big. Thouands of
star clusters with thousands of stars each... I was looking at an image
of the core and letting my mind expand to try to encompass it and I got
really spacey/high, in a good way.
There's a tension between versimilitude (fidelity to the real data) and
making something easy to write and fun to play. It would be simple
enough to generate crude cartoon worlds, and a detailed realistic galaxy
might be kinda boring (to play.) If you want to (virtually) explore the
real galaxy there are resources for that.
In any event, I think the way forward is to generate something nice now
and upgrade it later. I don't want to get side-tracked, I want to stay
mostly on the critical path.