Started 1 year ago (2017-06-27T23:00:00Z). Goes forever.
Dust Wars is a 2D real-time-strategy game set in a future where humanity has taken to the stars. In the middle of an intergalactic recession a new craze of mining and exploration has made powerful corporations venture into unexplored nebulae and dust clouds for profit. This is where the player takes over a fleet in a skirmish for money and economic dominance.
Dust Wars combines a variety of quick skirmish with slow line defence combat to allow for a wide variety of strategies and play styles. More information to follow :)
Additionally I will be starting to keep a more in-depth development journal on my blog which will talk more about design descisions as well as more long-running thoughts
My submission deadline for each day is 1am
So in order to enable proper game networking as well as scripting interfaces I've been working on a game API which provides a layer over which different components can modify the game in the gameplay sense, not in the "god-like" programmy sense.
The same applies to the UI which so far doesn't have a completed API yet. But I'll be doing more work on that in the next few days
So today was mostly spent looking at existing systems and thinking about they can be improved. The lobby uses a networking component I call "netsync" which kinda builds a shared state between multiple clients. And for something relatively "simple" as a lobby screen that is fine. However I've thought about it quite a lot and I think it's a lot less suitable for the actual games where we can narrow down actions to individual actions that need to be synced.
Additionally I was thinking about how to implement a game API which can be used from the UI, AI components as well as the networking core. Especially considering that there will be lua scripting support for assets and potentially mods that should also be able to use the same API.
That's what I've been mostly busy with today was structuring the refactor in a way to make all future components happy. There isn't anything pretty to look at today except the mad ramblings in my notebook/ papers flying around my desk.
I'll leave it there for today. There is a lot of more work to do but I think there is a pretty good plan now on how to continue \o/
So after not having gone to bed the entire night (because I was kinda in the zone) networking now works to the point where two (or more) clients can make up a lobby and have a networked shared state. The UI adapts to whatever players are doing and it's all pretty smooth :3
It might not look like much but the logistics behind it mean that all further networking code shouldn't be too hard to bolt onto it :)
Following is a gif of the
I made a lot of cool progress today. Basically finishing the first version of the internal netsync version (which will land on github at some point :P)
Then depreciating the existing networking package and ripping out a lot of spaghetti code. I'm not quite done replacing it with the new library but I'm getting there. More on that tomorrow :)
So after having abandoned my initial efforts to write a networking library and continuing on Github with something slightly different I've thrown that away again and just implemented something closed source in the same source tree as my game to get the job done.
I was getting tired of trying to elegantly solve every algorithmic problem on the planet without making any progress on the actual game. So instead, netsync is right now a very very simplistic library which sends entire objects instead of diffs and is very simplistic in how it applies these diffs.
There is still some work to be done but I'm confident that in a few days I should be able to port all the existing networking (which is a complete and utter mess) over to the new library
It will be moved out of the game source into it's own repository soon. But until then I can do some work on the game without having to overthink everything. Again :)
Hopefully this is the last entry (for a while) where I talk about how I am starting to work on networking again :)
So...this isn't exactly a submission for Dust Wars but I've started working on the networking library again. I kinda abandoned the Java code generation stuff I had going on at first and focused on writing a network engine that can sync objects across a network first. I'll see about how to make a pretty API later.
The project is still on github and is now written in Scala for two reasons
All in all this is pretty small. So far it's basically just a pretty wrapper around KryoNet. More to come...tomorrow? (aka when I finish working on it at 4am :) )
So I didn't actually write much code today. But that's fine. I've been preeeeeepaaaaaaaaaaaaaaaring *she says in a ghostly voice* I also watched the new Ghostbusters movie and thought it was fine. Jillian Holtzmann though ❤
Aaaaanyways. I've been playing around with Java annotations for a side-project which will be required for Dust Wars networking to work. I call it "netsync" and it'll be it's own library on github. The idea being that it can be used by others as well as my different project.
The library will let you define a "shared" object which will then be kept in sync between different clients. A server does delegation to make sure that no corruptions occur etc. Again, no code was written for that yet. But there is a rather funny screenshot from my annotation experiments. Hopefully I'll start working properly on netsync tomorrow
Today I was working a lot on networking code. Basically trying to hook up the lobby UI and the client/server networking components to talk to each other. What I got is almost GIF-worthy but unfortunately not quite. And then I was distracted by Guild Wars 2 and evil people :P ( <3 )
Multiple clients can lobby together and make teams dynamically, set themselves ready, etc. Some UI changes don't communicate properly so there are a lot of bugs at the moment. I'm actually thinking about ripping out the entire networking stack again and writing something really neat and clean *looks at notebook with insane ramblings in it in front of her*
But that'll be in a different submission :P
It's been a few months (at least 4-5) since I worked on this project. I hadn't worked on it in so long that it took me a while to get back into some of the code and layout. But it worked out in the end.
Things I did today:
Now. This is the first submission for this project and I'll try to fill it with some more data as well as upload screenshots of things I made work. BUT I also want to start keeping a journal on my blog about this. I will post the link to that somewhere else when I get around to it. But the idea being smaller dev journals after every day/ submission on here. And the overarching thoughts, ramblings and design choices on my blog, maybe once a week.
Until then, thanks for reading <3