Adam's Lair Forum

game development and casual madness
It is currently 2017/04/25, 10:45

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 41 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next
Author Message
 Post subject: Re: ARC's Space Game
PostPosted: 2016/01/05, 19:34 
Member
Member

Joined: 2015/11/04, 20:02
Posts: 69
Location: Canada
Role: Hobbyist
Here's part of today's working playlist: Soundcloud

Hopefully I'll have an update later tonight! Working on some "backend" stuff today.


Top
 Profile  
 
PostPosted: 2016/01/05, 20:58 
Forum Adept
Forum Adept
User avatar

Joined: 2015/03/15, 02:49
Posts: 351
Location: Out there
Role: Hobbyist
This would be a super awesome way to recreate the solar system, and travel between planets.

Bravo!

_________________
Hello there! Nice to meet you!
I have github. Apologies in advance for bad coding practices.


Top
 Profile  
 
PostPosted: 2016/01/06, 06:23 
Member
Member

Joined: 2015/11/04, 20:02
Posts: 69
Location: Canada
Role: Hobbyist
Just a small update tonight. Not much in the way of pretty graphics to show from today's work. Mostly worked on rewriting the entire input handling system. That's still ongoing, I'll hopefully have it in a working state by tomorrow.

The basic premise of the rewrite was to completely decouple user input and game logic and to make input handling robust and malleable for the future. The new system uses a list of input contexts. Each context contains an input mapping. Input mappings map each input event to a corresponding list of callbacks. Mappings are totally re-bindable. Finally there is the input manager. Its job is to take the raw system-level input and pass it through to the appropriate context(s). It also does some house keeping for each input context, and will handle high-level context switches.

One more key point is that contexts themselves are relatively transparent to the input they receive. Each context simply tries to handle the input that is passed to it, if it can't then it passes it on to the next context. The input stops cascading when it hits the end of the chain or when it hits a context with its "blocking" flag enabled. This is really important, it means that although there can only ever be one top-level or "priority" context at a time, more than one logically compatible context can respond to input at a time. So pressing a button won't be blocked by controlling a ship, and scrolling through a list of items being sold for a ridiculous markup (interstellar delivery is expensive!) won't be blocked by typing into a search bar. But at the same time certain contexts can choose to block input pass-through, say for example a full screen inventory menu. You wouldn't want to accidentally fire a missile when you meant to sort your recently pillaged ... acquired ... lawfully purchased gear.


Top
 Profile  
 
PostPosted: 2016/01/15, 09:39 
Member
Member

Joined: 2015/11/04, 20:02
Posts: 69
Location: Canada
Role: Hobbyist
Names have to sound right, they have to be believable. They have to fit your setting. Writers spend a lot of time deciding what to name things. I'm no writer though, I'm a software developer. I don't have time to write down and mull over a list of names, because I need to name ten thousand things.

Like people:
Image

Or ship thrusters:
Image

The magic is accomplished through simple 4th order Markov Chains trained by a little over 10000 sample names, I also randomly dropout a large portion (50-70%) of the data to avoid saturation and also increase variety on subsequent runs. This happens on my machine almost instantly, if training time becomes noticeable in the future I can pre-bake the data (I'm lazy tonight, sue me). Custom data sets need to be written for naming things like thrusters or weapons, etc. The thruster data set is very much unfinished but the results aren't terrible so far. Planets and stars are on my list as well, all I need to do is collect that data.

I feel like the people-naming stuff can (and will be) improved, it's just a matter of tuning it and adjusting the data set. Though I think it has a bit of a fantasy sci-fi feel already.

What I hope to achieve here is the ultimate in "flavor text" - what's a procedurally generated world if everything is named the same thing?

Edit: Image This just in! Space = Scandinavia


Top
 Profile  
 
PostPosted: 2016/01/15, 10:26 
Forum Adept
Forum Adept

Joined: 2015/07/08, 16:41
Posts: 414
Role: Gamer
ARC wrote:
I'm no writer though, I'm a software developer. I don't have time to write down and mull over a list of names, because I need to name ten thousand things.
To be fair, I don't think even writers do that.

ARC wrote:
Obien Wenda
That sounds familiar...


Top
 Profile  
 
PostPosted: 2016/01/15, 11:35 
Site Admin
Site Admin
User avatar

Joined: 2013/05/11, 22:30
Posts: 1948
Location: Germany
Role: Professional
ARC wrote:
The magic is accomplished through simple 4th order Markov Chains trained by a little over 10000 sample names, I also randomly dropout a large portion (50-70%) of the data to avoid saturation and also increase variety on subsequent runs.


Nice! Especially the leaving out data "trick". Encountering new things in different runs really reinforces the exploration aspect or ProcGen. Now that you mention it, I would probably drop out even more to avoid covering the whole dataset in (improbably worst case) two runs.

ARC wrote:
Edit: Image This just in! Space = Scandinavia

Uh.. I think names the average non-Scandinavian can actually pronounce is a big plus too :D

_________________
Blog | GitHub | Twitter (@Adams_Lair)


Top
 Profile  
 
PostPosted: 2016/01/15, 23:30 
Member
Member

Joined: 2015/11/04, 20:02
Posts: 69
Location: Canada
Role: Hobbyist
Adam wrote:
Nice! Especially the leaving out data "trick". Encountering new things in different runs really reinforces the exploration aspect or ProcGen. Now that you mention it, I would probably drop out even more to avoid covering the whole dataset in (improbably worst case) two runs.

Thanks! Yeah that's a good idea. I've experimented a little more today with a higher dropout, and also with different orders. There is definitely room for improvement. I think the most improvement can be gained from just getting better source data, and categorizing the data as well, for example into male and female groups.

A nice quirk is that by retraining the chain with a low order, of say one or two, the names start to sound even more foreign and alien but at the same time retain much of the natural phonetics. Example of the same english data set with 90% dropout and using order 1 chains:
Image

I can really imagine these being names used by some alien race.

And for comparison, using a higher order:
Image

The names begin to more closely reflect the data set, i.e. they reflect "real" names more closely.

One more interesting quirk that arose from the random dropout I added is that each time you retrain the chains with a different seed and high dropout, all of the names get their own sort of distinct feel to them, almost as if they were born through separate dialects and languages. This might prove interesting, perhaps during world gen I can seed different regions name generations in such a way that noticeable but subtle borders appear, simply in the way things are named? Here's that concept hastily applied to two thruster manufacturers:
Image

Notice they each kind of have their own "style" while still being totally random, as well as there being some outliers.

So far it's turning out to be a pretty powerful tool, I think it has potential to really make the world feel a bit more "real".


Top
 Profile  
 
PostPosted: 2016/01/15, 23:53 
Site Admin
Site Admin
User avatar

Joined: 2013/05/11, 22:30
Posts: 1948
Location: Germany
Role: Professional
ARC wrote:
A nice quirk is that by retraining the chain with a low order, of say one or two, the names start to sound even more foreign and alien but at the same time retain much of the natural phonetics. Example of the same english data set with 90% dropout and using order 1 chains:
Image

I can really imagine these being names used by some alien race.

Nice. Even though this may just be a side note on an algorithm / data quirk, I really enjoy reading all these details of your experiments.

ARC wrote:
One more interesting quirk that arose from the random dropout I added is that each time you retrain the chains with a different seed, all of the names get their own sort of distinct feel to them, almost as if they were born through separate dialects and languages. This might prove interesting, perhaps during world gen I can seed different regions name generations in such a way that noticeable but subtle borders appear, simply in the way things are named?

This is a really cool idea. ^^

Speaking of cool little details, I'm interested in the big picture as well: Do you have a development roadmap? I think it's always important to have an eye on the big scheme, so you don't get lost on the way somewhere.

_________________
Blog | GitHub | Twitter (@Adams_Lair)


Top
 Profile  
 
PostPosted: 2016/01/22, 08:43 
Member
Member

Joined: 2015/11/04, 20:02
Posts: 69
Location: Canada
Role: Hobbyist
Here's a little bit of eye candy! Re-did the planet select effect in my spare time to make it about 500% cooler:
Gfycat Video - Click to Play. [Source]

I've been spending a lot of time working on actual useful game "stuff". You can see a small glimmer of that in the top left of that gif - a skeleton of a basic button. The menu system is coming along very neatly. I'll do a full update on that whole thing in time.

In addition to the menu system I've been spending a whole lot of time working on the underlying code that will allow stuff to happen in the game. Coming from a background in C/C++, C# is making all of this impressively painless for me. I'm having a lot of fun and things are going smoothly. Soon enough I'll be moving on to more meaty things, and soon after that happens I'll hopefully be able to push a basic prototype through for you guys to toy with (and break).


Adam wrote:
Speaking of cool little details, I'm interested in the big picture as well: Do you have a development roadmap? I think it's always important to have an eye on the big scheme, so you don't get lost on the way somewhere.

Yes, there is definitely a road map. However right now I'm kind of keeping it internal. There's a lot of work to do and things can change. I think whenever I get a basic prototype out I'll put out a public road map and let people follow along more closely. Until then every feature formally exists in a state of superposition, though the core game itself and the direction I wish to take it are fairly well defined.

With that said! The basic premise without the fluff is that you fly a spaceship, explore solar systems, and colonize planets. Your official goal is to build, maintain, and defend your own empire. Game play will be long-winded. My goal as a developer is to build a game that people can invest time into. In a sentence: I'm building the game I want to play.


Top
 Profile  
 
PostPosted: 2016/01/22, 11:28 
Forum Addict
Forum Addict
User avatar

Joined: 2013/09/19, 14:31
Posts: 821
Location: Italy
Role: Hobbyist
I have to say, I'm impressed by the amount of technical skills and knowledge you possess; everytime I see the project advance I feel the hype mounting ^^

Can't wait to see the next steps and the roadmap, once you feel comfortable about sharing that kind of detail.

Do you plan to release some sort of walkthrough of how you did some of the cool things you described?

Finally, is that ok if I steal some ideas from you to apply to my own game? For example, I never thought about using Markov chains to generate names.. it sounds much better than the hardcoded name bank I'm using now.

Keep up the wonderful work :mrgreen:

_________________
Come on Duality's Discord channel. It's entertaining and productive! :mrgreen:


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 41 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group