Return to “[Archived] Daily Dev Logs, 2012 - 2015”

Post

Week of November 10, 2013

#1
Sunday, November 10, 2013

Great day (and yes, graphics Josh remained happily locked in his cage :monkey:)!!

I spent a lot of time thinking about currency and how the game's going to handle universal currency. The problem is: how do AI players make money in an unestablished system? Where does the money come from? My current solution is to simply have a very "thin" currency - one that is basically an alias for the most plentiful natural resource in the given universe. Although it's slightly "gamey," I allow the resource to be freely converted into credits when docked at a station, as though there were some trans-universal bank to which all stations have access. I'm not sure yet if I'm going to let the player have this ability (probably so), but that's what the AI does. I'm also not sure yet if I will allow the reverse direction - although technically it makes the currency moot if I don't. Ultimately, there are going to need to be some "gamey" choices made here to avoid the "real" solution - which is to have local/regional currencies in play (managed and backed by specific factions), exchange rates, etc. That would be the realistic solution, but I'm just not ready to add that level of complexity. It's one of those features where I don't see how to add depth and not sacrifice simplicity.

I'm working on figuring out how I want to "seed" the universe with life. It's definitely an interesting and challenging question to figure out exactly how to set up the beginning of the game. I'm thinking of setting up a very small "seed outpost" in regions that are populated, and loading a few pieces of junky equipment onto this outpost so that the AI can get started. "Ancient construction module," for example :P Alternatively, "alien construction module" - as though all life in the universe were seeded by mysterious aliens :lol:

NPCs now have personality traits that are distributed in an interesting way. The traits are generated much in the same way as resource distributions across systems, and I'm thinking it would be neat to inject some coherence and patterns in the same way that I do with resource distribution. That way, you might find regions where people are just naturally intellectual, for example, and have researched a lot of advanced technology. Similarly, you might stumble upon regions where the locals are highly-aggressive - stations are littered with weapons for sale and systems are littered with the corpses of ships. I also started working on tying personality traits into decision making :D

As for hypothetical items and research...I scrapped the idea! ;) My new stance on the issue: when you're thinking about building something that doesn't exist yet, you don't necessarily envision it in a detailed, final form. The important thing is that you envision what it does for you. If an NPC decides that it wants to amass more construction power, but doesn't know of an existing construction module item, then it will simply pursue research of construction modules directly, rather than introducing the intermediate step of dreaming up some hypothetical item. This is both technically simpler and conceptually clearer :) :thumbup:

I envision a lot of time this week being spent in the console version of LT...time for lots of gameplay/simulation work, and...no graphics! :D :monkey:

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of November 10, 2013

#2
Monday, November 11, 2013

Awesome day!!! :D

Started cooking up a whole lot of new AI fanciness today. Although I'm very pleased with the master AI algorithm, I'm concerned about it's ability to perform short-term and mid-term reasoning :think: The current algorithm is really best-suited for long-term life plans. Today I came up with some new theory, and introduced the notion of quantitative measurements of the game world that I believe will allow the AI to react to the game world in a very fast and tactile way.

I would like to unify the entire AI under a gradient descent algorithm. That's basically what the maneuvering piece of the AI uses already – it computes a potential field based on the sum of all the actions that it wants to perform, then it uses a gradient descent to follow the most favorable path through that field. I'd like to do the exact same thing with all actions, not just low-level maneuvering. To do so, however, I need to introduce low-level metrics to which the AI can dynamically attach scores. Ultimately, I'm hoping that this is going to make the AI more fluid, reactive, and even accurate (since what I'm introducing is basically a new layer of quantitative reasoning). I'm not totally finished with either the theory or implementation, but I came a long way today and I have a really good feeling about where this is going to lead me! :D If this works out....I honestly think this AI is going to be incredible. One can hope! :geek:

Next, I finished coming up with the theory of transfer units, which will be used for a great many things. I've been looking for a way to unify things like mining, transferring cargo, and even repairing/constructing. So I'd like to introduce…the transfer unit! A transfer unit is a generic technology concerned with transporting matter over a distance. It could be used to transfer raw materials from within a rich asteroid into your cargo hold, but also to steal the cargo of another ship by beaming it into your hold. It can also be used to place matter onto other objects, for example, to construct an external object, or repair another entity. Now I realize that this might raise concerns about one type of item doing too much ;) But I hope to give the transfer unit enough properties that it can be highly specialized through research – this way, we'll see transfer units that are specifically geared towards mining, those that are geared towards repair, etc. Bottom line, though, is that I really like the idea of having a single, unified power - transference - rather than having separate powers for extraction, repair, cargo transfer, and so on.

Frankly, that was only about half of the conceptual progress made today. There is also a lot concerning station construction, planetary buildings, and a new warp lane system. But one does not have time to describe everything :D :geek:

PS - And just a little tidbit – research modules are now named research units, and construction modules are now named production units. I like the word units a lot better than modules :cool: And production sounds more appropriate, as I think construction may be use later to denote external construction projects, like building a station.

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of November 10, 2013

#3
Tuesday, November 12, 2013

Another fun day of AI :D

Today I worked on and pretty much finished a new method for the AI to be able to perform hypothetical reasoning. I went through a lot of pain building a system that could do that a few months ago, but a lot of that work was conflated with the notion of coarse simulation. I realize now I really should've done a better job of keeping those ideas separate. Luckily, I'm getting better at programming every month, and I now understand how I can implement hypothetical simulation in a very easy, clean, and efficient way (and I did so today!) A really nice bonus of this is that it will allow the AI to understand the interactions of side effects of it's actions. Again, just another thing that's going to improve the accuracy and overall intelligence! :)

There's really only just one more thing that I need to understand before this new AI algorithm is ready to roll, and that's the process by which actions are added to the AI's pool of potential candidate actions. Previously the process simply involved backtracking from the final goal, but this time I'd like to have primarily forward thinking aided by backwards planning. In other words, the AI will now think in the form of "If I do X, will I like the results?" The previous form of "what can I do to achieve X" will then be merged into the new algorithm by artificially inflating the AI's perception of certain states. Just need to figure out exactly how that merges is going to work :geek:

I realize I have already spent and am still spending a lot of time working on AI. But I think it's going to be one of the most important pieces of this game, so I don't feel bad about trying to make it as good as possible ;)

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of November 10, 2013

#4
Wednesday, November 13, 2013

So close. SO. CLOSE. :shock: I can taste the intelligence. It's right on the tip of my tongue…right on the tip of my fingers, but yet…still so darn far away! :think:

Not surprisingly, I reworked another large portion of the old AI code today. I'm really going all-in here…giving this architecture literally every last drop of brain juice that I can muster. And…I have a feeling it's going to pay off! ;) All the long-term power of the old planning system, all the reactivity and spontaneity of the new descent algorithm :geek:

Once again, at the end of the day, I lack only one major piece. Right now I don't have a way for the AI to discover potential actions intelligently. Previously I had simply written a heuristic that encoded knowledge about particular world states and which actions were relevant to them. The HasItem state, for example, was linked to several different actions they could ultimately result in the given item being acquired by the AI. Sure, I could do that again. But I'm on the verge of something better :geek: I think I can come up with a way for the AI to automatically infer and sample from the action space that is relevant to the states in which it's interested. It's going to take some more technical heavy-lifting, especially when it comes to deducing the correct numeric parameters for actions that involve numbers. But I think I can do it. It would be the last real step towards an AI that literally does everything on it's own. I would be little more than the creator of the game logic – simply giving the AI the rules of the gameplay – then stepping back to watch as it fits together all the pieces into a coherent fabric of intelligent behavior. No heuristic functions, no hints, no help whatsoever. Just the rules of the game and some CPU time. How great would that be!!!! :D

Anyway, I think I know what I need to push through this last bit of conceptual tomfoolery. You know what it is ;) That's right…you guessed it…the second-ever Limit Theory Hackathon!!! My mind is recovered from the last one and ready to go. Tomorrow's the day.

Time for a good night's sleep, and then…may the code flow :cool: :squirrel: :squirrel: :monkey:

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of November 10, 2013

#5
Thursday, November 14, 2013

Limit Theory Hackathon #2 ~ Result: SUCCESS!

Ok, here's how this dev log is going to work. I'm going to try my hardest to express that I had an amazing day with fancy A.I., awesome algorithms, super cool stuff, squirrels, yadda yadda yadda. Except I'm dead tired and my brain is literally melted (as you can see by my totally-correct use of the word "literally") from all of the conceptual work, so I'm probably going to sound dead in this log. For best results, multiply the excitement of the dev log internally by approximately 100 fold :) :lol:

Ok but seriously. That AI. It's insane :shock:

Yes, I finished my new algorithm to rule them all!!! And by finished, I mean got it in a somewhat-looks-like-it-might-be-working state :P No just kidding, I spent all day writing it, battling it, verifying it, improving it, and getting ice cream with it ( :wtf: ), so it's in good shape. It wasn't easy. Probably some of the most intense coding I've done in a while, and I'd be lying if I said I didn't love every minute of it. I'd also be lying if I said there weren't times today when my brain was so numb I had to pour ice water over my head just to remind myself that I'm alive and human :shock: Ok not really. But I did have to restructure all of the AI-related code about 1528 times until I finally got it right on the 1529th :crazy:

I stopped when the AI crashed the game :roll: Indeed, I'm proud to say I now finally have some mining-inclined folks that are buying and equipping transfer units. Too bad transfer units aren't implemented yet, and I get a nice lovely soft-crash message when they try to equip them :D Sounded like a good stopping point to me. I'll implement those tomorrow and then watch the little minions bring in the ore :P

Perhaps the most exciting bit of this all is...the performance. What about performance? Ok here's the deal. I can easily run 10 NPCs at virtually no hit, and this is before any optimization, any cleverness, and still running the "thinking" routine every single frame (which is seriously excessive). The previous planning algorithm would have cried, choked, died, and gone to algorithm heaven (well, we can only hope :shock: :angel:) under that load (though again, it wasn't optimized either). What I'm trying to say is: this is going to be awesome. We should be able to run, oh, probably 50-100 NPCs at full quality all the time. Maybe 1000+ when we start applying LODing. Suffice it to say, I'm not very worried about AI performance anymore ;)

One of the things that I love most about this algorithm is that it is extremely easy to control the "intelligence" of any given NPC. In fact, that intelligence is directly proportional to memory cost, not CPU time. That's interesting, and frankly a more welcome trade-off (the previous algorithm required trading cycles for intelligence). This opens the door up for varying the intelligence of NPCs in an interesting way. I imagine the intelligence could be exponentially distributed (like many things in the game) - that way, you'd see a lot of run-of-the-mill people going about their business like you, but a handful of savants constructing elaborate schemes for dominating the region. I imagine only the most intelligent NPCs will be able to handle parallel and delegative reasoning when I implement it, so we'll probably see mostly "smart people" in control of factions. So cool :D

Congratulations to the team on a successful second LT hackathon! The AI was truly with us today! :)

Andddd goodnight :squirrel: :squirrel: :ghost:

PS ~ Interesting and funny moment today was when I got the AI to play "chase" with me. Something was a bit broken and it was causing the NPCs to value moving objects very highly, much like man's best friend. The result was an enthusiastic attempt to chase my pulse lasers every time I shot them :lol: Very fun. Rather stupid. Somewhat endearing. I already like this AI :monkey:

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of November 10, 2013

#6
Friday, November 15, 2013

"The Summary"

I played X Rebirth all day. It was awesome, and I harvested several truckloads of inspiration for LT :)

"The Novel"

I said I wasn't going to do it...

But I had to do it!!! :D Just for one day. And no, I'm not referring to letting the graphics monkey out of the cage, thank goodness ;)

As any good space sim fan knows, X Rebirth came out today ;) I decided that, for the sake of research, and...well, because I love space games, I should try it out :D I intended to play only a few hours, but that's not how it works with an Egosoft game - and who was I kidding :roll: I spent the whole day in that lovely universe. But to call it unproductive would be totally incorrect!

If you want a review of the game, don't look here. I don't think I've played long enough to give a real review, but I do feel that I've picked up an immense amount of knowledge that can be applied to LT. Overall, though, I found it a really engaging experience. The atmosphere is hands-down the best I have ever seen in a space game, by far. I imagine it may still retain that title even after SC, ED, and LT are all out :think:

Now. A few lessons learned.

XR claimed to be a real economy, but it's pretty clear that this is a partial truth at best. All I have to say about that is: how can anything hold value when every item (even the valuable ones) can be found in absurd densities floating in the middle of space, just waiting for you to pick up? I probably shouldn't pick on this, because it's clearly one of the most glaring balance issues at the moment. But I went from not knowing how to make more than a penny to...collecting a million credits worth of floating goodies in about fifteen minutes, just by using my long-range scanner :shock: Who the heck dumps entire bank accounts full of credits into floating containers in space :lol: The underlying lesson here has been reinforced in so many ways: if you want things to "balance," don't inject "gamey"ness into the reality. You can build all the real economy you like, but if you inject gamey mechanisms to benefit the player...doesn't it defeat the purpose? Maybe I'm being too purist here. But I think the best way to create a game with a balanced, dynamic, and engaging notion of value is: do it the real way. All the way. Let's see if that works :)

On the UI front, XR has me wanting more than ever to explore a new, intuitive, node-based solution. The XR UI is, in my opinion, (and the opinions of a whole bunch of other people) the most dire failing of the game. It tries to be minimal and immersive, but ends up being opaque and frustrating. Is there not a minimal and immersive solution that is also clear and elegant? Surely. We need to find it!

As I played, I couldn't help but be bothered by how "opaque" AI is. Not in XR in particular, I mean, but in any game. I kept thinking to myself - "how smart are the NPCs? Are they living their lives like the LT NPCs?" I'm fairly certain that the answer is no. But can I be sure? How would I know that the NPCs were as smart as in LT? :think: This question is unsettling to me because it points to a truth that I don't want to admit: it's hard to perceive the quality of high-level AI (note: I'm not talking about maneuvering, that's significantly easier to perceive). It'll require a good bit of playtime and interaction before you will ever begin to understand that the LT AI is as powerful as it is. I mean, sure, the AI will be responsible for the construction of the artifical components of the universe. But to a player who does not know that, it does not matter - it might as well have been hand-made.

What I'm getting at is that, it's absolutely critical that the rest of LT be engaging enough to make someone want to play for a long time. Just flying around should be fun, grabbing a gun and nailing asteroids should be fun (we all know it already is :lol:), etc. The game should be fun at all time scales, otherwise this fancy AI is in danger of not even being perceived. LT is built on a thousand-and-one cool technical feats. But the real trick is to bring those feats through - to make them so unequivocally beneficial to the game that a player can't help but notice how happy they are about the presence of that feature. Challenge accepted :geek:

Graphically, XR has really excited and loaded me with inspiration :D :monkey: It's a gorgeous game, there's no debating that (well, at least the space-side graphics). The dust and feeling of moving through dust is absurdly good. I spent literally 20 minutes or so just moving back and forth, trying to understand how the illusion was created, but still can't unravel the mystery. Well-played, fellow graphics programmers :geek: I have a few ideas that I'd like to try, but the old particle system dust in LT must go ASAP. The flecks of light that elongate as you accelerate are also a classic effect that I need to implement. It really helps give meaning to the motion XR. I noticed that the game seems to be applying color grading to the entire screen based on the region. Cheap tactic, but looks great and...I might need to try it :) And, finally...my dynamic lighting must go :( Well, it must die and be reborn (ha! :roll:) I can't keep kidding myself with indexed forward anymore. It's not fast enough to push the absurd kind of light complexity that XR pushes, and I can't help but notice how much of a visual impact that has on everything. It's beautiful. I need to go back to deferred and do everything in the most correct, performant way possible. I need to push hundreds of lights...LT deserves that kind of beauty :)

Of course, graphics Josh is still locked in the cage, so I can't act on these instincts just yet. Maybe next week we'll let him out for a day or two, given that it's a special, inspirational occasion of sorts ;) But not today, not tomorrow, and not the next day :monkey:

Well, that was a heck of a productive day of gaming :lol:

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of November 10, 2013

#7
Saturday, November 16, 2013

Node-based interface. Oh you node-based interface :) :) :)

Yep. I started today. I'm probably already past the point of no return. I want a really, really beautiful architecture that will make building the interface for this game totally trivial. There's really no other way to live, right? :monkey: I think I'm off to a really solid start :)

A surprising quality that I've found of specific layouts of node-based interfaces is that they have the potential for experts to learn to navigate vast, vast amounts of information with far more speed and precision than traditional interfaces. What's really interesting is that, in some sense, it's actually a gesture-based interface! Imagine it. A node expands its children radially, then to select one and drill further in, you move your mouse towards that node. In turn, that node expands its children, and so on. Since all of it is radial and automatically-laid-out, what ends up happening is that your cursor traces a gesture through the interface. Once you're several nodes deep, you'll see the path that you took to get to the node. It's actually an amazing property of a graphical layout. A very simple, easily-repeatable "gesture" can easily get you four or five nodes deep in a graph with a branching factor of 8. That's a selection out of 8^4 possible nodes...i.e., it's equivalent to selecting one element out of a list of 4096 elements. With a simple gesture. Show me a linear interface where you can select a single element out of thousands in under a second ;) Thanks to this awesome property, you'll quickly learn the "gestures" for common actions and be able to perform them extremely quickly. Yet, at the same time, since the interface is node-based (not gesture-based, per se), it's still very easy to tell what's going on as a beginner, and you'll have no trouble with it.

Ah, and, I guess it also goes without saying that this interface is perfectly-adapted to gamepad / joystick play as well :thumbup: That's a great bonus!! But make no mistake, it's not the primary motivation ;) In fact, nodes can't auto-expand with a gamepad, so mouse users will still be at an advantage thanks to the aforementioned gesture property.

Really excited to see where this work leads me. I have a feeling it's going to be one of those massive conceptual simplifications. If that's the case...well...let's get some gameplay done and then ship this puppy :D (Ok, obviously it's not quite that simple but...having the interface "solved" in a generic way will be another tremendous step towards release!)

NOTE : Interface work, when it's primarily concerning layout and new architecture, is not considered to be Graphics Josh! So we're still in the clear! ;)

[ You can visit devtime.ltheory.com for more detailed information on today's work. ]
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of November 10, 2013

#8
Week Summary

Definitely a great week for AI :) Although I wasn't really planning on scrapping the old algorithm, I'm glad I did. The new one is so elegant...and having the best AI possible is going to be worth it :geek:

I'm also very pleased to say that I successfully upheld last week's promise of no graphics! It wasn't easy, especially after playing Rebirth and seeing all of those gorgeous graphics. But I did it! :) :monkey:

Accomplishments
  • Hosted the 2nd-ever LT Hackathon, during which a powerful new AI was born!
  • Implemented a new mechanism for AI hypothetical reasoning that's faster and more powerful
  • Implemented a new mechanism for AI action suggestion / exploration that requires no heuristics
  • Implemented NPC personality traits distribution
  • Developed theory for unified transfer units, implemented them!
  • Started work on a unified, node-based interface
  • Managed to keep graphics Josh locked happily in his cage :)
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Online Now

Users browsing this forum: No registered users and 5 guests

cron