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


Week of May 18, 2014

Sunday, May 18, 2014

Huntin' it down. That solution. The one that solves everything, you know? I've got the scent and I'm tracking it. Maybe just a few miles away at this point. I can smell it. The sweet smell of elegance :D

Some scattered thoughts from my hunt:

Properties, not tags. A set of functions that map an item to T. Most Ts are integers, some Ts are objects. Every item knows whether it supports a given property.

Simple, implicit valuation functions. Mostly simple constraints (mathematically, single pulses). "Property X must be between Y and Z."

Valuation on relative properties, not absolute. Just like research, valuation operates on 'modifiers,' not absolute numbers. I want to spend 20K on a new transfer unit. Implicit in the 20K is the approximate magnitude of the attributes, I don't need to say that. What I do need to say is that I care more about range than rate, so I am only interested in transfer units that have 1.5x to 2x relative range. Again, this goes hand-in-hand with how research operates.

Just a few thoughts from the day, but together they're promising big things. Give me another day or two... :geek:
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Re: Week of May 18, 2014

Monday, May 19, 2014

Oh goodness. I'm in deep now. But only in a good way :)

Property Engine

Over the past two days, I've been working on what I believe may be the final bit of serious architecture in the game engine. I know, I know...more architecture? Hey, what do you think lets me push so much productivity? It isn't the coffee (well...not 100%, at least :roll: ) ;)

Properties. Generalized market orders got me thinking about how various objects in the game have various 'properties' or 'attributes' associated with them. Those can be generalized, unified, and exposed to the engine to automatically allow the AI to reason about any game object, as well as to automatically construct interfaces that make sense for any game object. It's not conceptually very distant from the reflection and meta-information system that I put together quite some time ago (which has, in case you're wondering, paid tremendous dividends ever since!) But there's more to it than just enumerating the variables that live inside an object. There are computable properties - things require some data crunch to get a result. Distance to X, for example, is a computable real-valued property (but it's not a variable). Ultimately, a property is a function mapping a T1 to a T2 (that's my way of saying type one, type two). Reflection just enumerates all the elements of a T, but properties are something else. They almost live externally to data, yet they allow one to look inside the data using different lenses. You can then take those lenses and use them to automatically build AI & gameplay functionality, while remaining totally oblivious to the actual type of data. This is the spirit of proceduralism in the most extreme flavor!

What I'm doing at the moment is building the properties architecture. It's tremendously fun, given my obsession with data :geek: I can feel the elegance of this...I really can.

I anticipate one more day of work before it's ready to roll out. And when it's ready, I've got big plans. Automatic creation of interfaces that are far more intuitive than the current 'grid of nodes.' One aspect of this is general (yet simple) market orders. List views with automatically-populated fields for easy navigation of large amounts of data (lists of your assets, cargo contents, ship memory contents, etc.) Unlike a variable, a property, if treated as a first-class object (again, living 'externally' to the data), can have context. For any given property, we can say how we'd like this property to be displayed in interfaces, what its sensible values are, how it influences valuation, etc. That's going to have awesome consequences. Guaranteed. :monkey:


Stay with me folks, I swear I'm not quite off the deep end. I'm on to something here, and it may be one of the last pieces of the puzzle. Maybe. :geek:
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Re: Week of May 18, 2014

Tuesday, May 20, 2014

Yes!! The elegance! I have found it :geek:

Today I finished the first pass of the property engine. It's a lovely thing. It's like a beautiful marriage of information and meta-information...just what I've always dreamed of :P :roll:

There's so much generalized yet contextual data now available to anyone who wants it. UI, AI, gameplay...all systems can grab as much data as they like through the beautiful properties interface :D

I explained it yesterday, and, as I implemented it today, there's not a whole lot to talk about. I'm going to spend tomorrow exploring the ramifications and usage, hopefully including a basic version of generalized market orders. Looking for that last bit of high-level AI, you know :)

Wish me luck! But who are we kidding. With tools like this, do I even need luck?? :lol: :geek:
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Re: Week of May 18, 2014

Wednesday, May 21, 2014

Rawrg. I feel like I'm a failure :( I have this lovely property system. But the generalized market orders? I don't know. Every time I take a long 'theory walk' (wherein I stroll around while probing the depths of LT) it seems my opinion of how best to handle non-specific transactions and data changes. One day I'm all about demand-side generality. The next day I'm all about supply-side simplicity. I've tackled a lot of really difficult design decisions over the past two years, but...that top's absolutely destroying me. Some consistency would be nice, but it's just not happening this week :|

And today? Surprise surprise. I'm back to supply-side simplicity. I just keep thinking about how stability and equilibrium are key to the whole high-level AI, and how that's incredibly difficult to maintain when we start trying to introduce parts of the market that are inherently non-specific. Does that make sense? Yes, it does in my brain. I can see the tangled mess of pros and cons daring me to settle on one implementation. In the end, whatever I choose will be a compromise. From this angle, it's just impossibly-difficult to see a clear winner.

I swear I'm going to pull this week out of the gutter, even if it takes the life of every last ounce of brain tissue to my name :x I will find that moment of clarity. In the mean time, please buckle up and accept the captain's sincerest apologies for the turbulence. I will get you there in one piece, I promise.

PS ~ On a brighter note, I'm halfway through a nice listview layout that leverages the property system to display lots of contextual info about any given set of items (like ship cargo, database, or market!) Hurrah for the silver lining! :)
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Re: Week of May 18, 2014

Thursday, May 22, 2014

Today I just couldn't bear another day of disappointment, so I decided to take a little break from the metaprojects AI / general market orders / data / everything else that kills my brain :D


Instead, I opted for a! No, not in the form of graphics Josh fun, but rather, in the form of...doing a bit of dogfighting :D It's been a while since I actually participated in LT combat myself, and I know I still need to give a little love to the dogfighting AI as well as the HUD. Doing so afforded a nice break from the conceptual gauntlet of the past few days :shock:

Dogfighting is fun. I'm not going to lie, there's just something about the balance of the thrust and torque in a small fighter, the ratio between ship speed and bullet velocity, and the general beauty of the LT universe that makes for a darn good time.

That being said, it's still lacking the raw fun quality of those Freelancer dogfights, mostly because the AI is not yet as interesting. I also feel that I'm lacking HUD feedback. IIRC, in Freelancer there were a number of subtle cues that added to the visceral quality of dogfights. Markers indicating the direction of any projectiles that hit you. Arrows pointing in the direction of off-screen ships. Animation of the cursor when hovered over an enemy. I'm working on getting these kinds of details into the HUD so that we can feel more engaged during battles.

In case you're wondering, no, I didn't win very much today :lol: I'm having just a tad bit of trouble getting the lead indicator integrated back into the HUD, and without any lead indicator or auto-aim, I'm just...well...a bit inadequate at aiming :oops: Suppose I've been practicing on large, stationary targets for too long. Sorry, asteroids :( To be remedied shortly!! :cool:

Fleets and Formations

With the revisitation of combat, I feel it's finally time to formalize and finalize fleets and formations. I'll need to give a little more thought to the theory, but we've already established a lot of good content on the forums back in the day (especially around the time of the prototype). I suppose, at this point, I'm most interested to see what I can do with coordinating fleet AI :)


I'll be honest, I think I'm going to continue for another day with this fun combat work :D I need a mental break before I go back to...the beast...

“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Re: Week of May 18, 2014

Friday, May 23, 2014

Finally getting a few kills here! ;)

With improved combat flight patterns for the AI as well as working HUD lead indicators, dogfighting is once again enjoyable. Honestly, I think I did too much playing today and not enough coding...hence the slightly-underwhelming devlog :oops: That's always the dangerous part about play-testing fun features :lol: Ah well. Not much point in making games if you can't have fun with them on occasion :D It's always nice to have a day of lots of actual LT playing.

Although I'm not planning to take another day on combat, there's still one major feature of dogfighting AI that I'd like to get sooner than later: ducking for cover. Ducking behind asteroids / stations is a very real tactic that can be used to great advantage in an LT dogfight (I do it frequently). I'd really love for the AI to be able to intentionally veer off toward the nearest large object in order to break line-of-sight. Luckily, I can use the same proximity query architecture that the collision avoidance uses, so implementation shouldn't be a problem ;)

No more playing around tomorrow. Back to the hard stuff. I'm feeling rejuvenated and ready for the last 100 meters :geek: Wish me luck...:ghost:
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Re: Week of May 18, 2014

Saturday, May 24, 2014

Alright, feeling better about life and making strong progress once more! :D

Missions as Generalized Market Orders

Are you ready for me to take a shot at conflating every high-level concept ever? :roll: Data, generalization, and missions. Believe it or not, I think I'm prepared to roll them all into one.

My thoughts go as follows: what is a mission? It's a call to action. What's the point of data? It allows us to easily track action in a physical way (discovering, attacking, defending, etc.) Why are generalized market orders necessary? Because action is unique and cannot be adequately reasoned about without looking at more general properties of the action. Are you with me? :geek:

So. A mission is: 1) a pool of money 2) a summary of the objective of the mission 3) a precise encoding of those objectives in generalized data form, 4) a mapping between those objectives and the pool of money.

That's just a sneak peak. More on this tomorrow when I have it fleshed out ;)

Object Templates

Today I'm excited to introduce and implement a new (fairly simple) high-level concept to the game for empire management: object templates, for automatic purchasing / outfitting of assets.

At present, an object template encodes an object type, a list of equipment types, and a list of cargo items. In the near future, a list of crew types will be added. The template allows us to store a 'configuration' for a type of asset that is already outfitted, crewed, and in posession of whatever cargo we want it to have.

Templates were introduced primarily to assist in AI expansion metaprojects. Expanding a project simply becomes a matter of defining one (or more) template objects for the expansion, and then using cashflow to fulfill the creation of those templates. Right now the expansion AI uses only a single template for any given project, but in the future we can introduce the flexibility to use multiple templates (and perhaps to create them in a specific ratio). For example, it will be useful to allow the AI to say that it will outfit 10 fighters for every 2 frigates for every 1 cruiser, which would yield a nice fleet composition.

For the AI, teching-up and choosing the most economical outfits for any given ship now becomes a simple matter of occasionally comparing the existing templates against the local market to see if there are any better configurations.

As for the player's ability to employ templates, I'm thinking we can allow both a facility for automatic template fulfillment as a part of any given project (i.e., the player can define a type of mining ship that will automatically be created continuously using some % of the project's profits), as well as a facility for one-shot purchasing of templates (unrelated to projects).


I don't know about you, but I'm feeling good about this week. Let's kill it :)

PS ~ Yes, crazy early dev log tonight because I have plans with family for the rest of the night :)
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Re: Week of May 18, 2014

Summary of the Week of May 18, 2014
  • Property engine theory & implementation for generalized market orders!
  • 'Research as physical items' theory + implementation
  • Implementation of object 'templates' for easier continuous purchasing / creation of outfitted assets
  • Brief foray into AI dogfighting, continued work on combat AI
  • Implemented lead indicators in nodal target UI
“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 1 guest