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

Post

Week of September 29, 2013

#1
Sunday, September 29, 2013

Summary

Well, it was a fun weekend...but it's good to be back to the code :D

Over the weekend (during little pieces of spare time here and there), I implemented a quantitative heuristic in the AI reasoning algorithm to allow it to reason more accurately about the effects of actions. The result is that it can now understand the concept of a trade run! The neat thing about it is that I never coded the concept of "trading" into the AI, per se. Trading is just a natural consequence of an NPC's desire to make money, and the realization that a price difference causes a buy action in one location and a sell in another to yield a net gain. Cool :) The reasoning should be even more accurate when I plug the abstract simulator back in, but for the time I've bypassed that piece because I'd rather start from the basics.

I've got a simple mining action working as well - the AI can now buy a mining device and use it to extract ore from rich asteroids. With this implemented, the AI now recognizes mining as a profitable activity and a good way to satisfy the desire to make money. More interestingly, it would also recognize mining as a way to, for example, acquire the raw materials to construct something. I'm trying to cover a lot of ground in a very short amount of time here...now that the AI is working, I really want to see what it's capable of in the context of real gameplay!!

Unfortunately, thanks to the hot mess that is airline companies, I got home about 5 hours later than I was expecting :x :x so I'm now in a frantic AI sprint and really hoping that I can do justice to the monthly update in time!

[ 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 September 29, 2013

#2
Monday, September 30, 2013

Summary

Pretty nice day, despite my failure to uphold the all-nighter-before-dev-update tradition. It's the first month in which I've succumbed to sleep during the process of making the video, but I guess that's excusable just this once since I'm still recovering from a lack of sleep in Vegas :shifty:

After the update, I started working on something that I've been dreaming of for a while: I want to unify AI pathfinding with AI planning. It's one of those virulent ideas that goes from being crazy to nothing short of a compulsive necessity in a matter of a few days :shock: Right now, the AI has a notion of going from A to B, where the invocation of that notion uses A* pathfinding to compute a good route from A to B, as is traditional in games. But this is not really in the spirit of planning: a totally unified system would just give the AI the option to "fly from A to B," the option to use warp lanes, jump holes, etc., and then let the AI figure out a good route based on the same heuristics that it uses to figure out a good plan of action for other tasks.

It's a bit scary, because pathfinding would require a really robust planning algorithm in order for the AI to consistently find good paths, and currently I do not use A* (it's intractable for the complexity of the plans that NPCs in this game will be considering). At the same time, if I could successfully unify pathfinding and planning, it would make a strong statement about the robustness of the master algorithm. It would say that it's really, really good, and I would be able to confidently know that the AI can compute great life plans with the same effectiveness that it can compute navigation paths. Furthermore, I would have the satisfaction of clean and unified code :geek:

So...that's my goal for the moment :)

As was evident from the September update, this AI work has got me really jazzed about the game and I'm looking forward to rolling into October. I have a firm belief that things are going to start happening pretty quickly :) We'll see if I'm right!

[ 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 September 29, 2013

#3
Tuesday, October 1, 2013

Summary

Nice day off, but really felt short :( I guess I slept for a long time :oops:

Sadly, no exciting journeys into Vvardenfell or Skyrim or Rheinland Space today. Just couldn't find time for video games...had to catch up on a lot of real-life things instead. Still, I got to enjoy a good bit of couch and TV time ;)

Now then, I'm brewing a pot of coffee tonight in celebration of...the start of a fresh month! Let the fun begin :D ;)

[ 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 September 29, 2013

#4
Wednesday, October 2, 2013

Summary

Dominating ;) Trying real hard to start this month out on the right foot, and so far it couldn't be going better.

In the early hours, I worked on the flight controls. The lack of smoothness and overall complexity of the related code has been bothering me ever since it was implemented, and I finally did something about it! I reduced a lot of the code, and as a bonus, the steering is now silky smooth. Man, it feels great :D Maneuvering in LT really is a joy (especially in a nimble fighter). Surprisingly, when I go back to Freelancer these days, I find myself missing the LT controls. I guess that's a good thing :D

In the afternoon, I worked on a neat little minimap-type system viewer. Although the intended function was to give me a quick and easy way to peer into the universe and watch it tick without having to pay the price of invoking any 3D graphics, this would also look great on the HUD, or as a separate system map widget. Lots of potential here! It's really cool being able to set up and watch a universe without any of the resources being loaded. I look forward to many hours of spying on unsuspecting NPCs :cool: :roll:

Toward the end of the day, I came back to AI and started trying to tackle research mechanics. After a lot of heavy thought, I made the decision to drop the concept of "technology," and simply roll with blueprints. Although I started out really keen on the idea of the technology -> blueprint -> object chain, a few hours of thought led me to the conclusion that having two phases of research/design adds little value but a good deal of complexity. Now my position is that a blueprint implicitly encodes technology. Someone with a lot of high-level blueprints also has a lot of high-level technology. Technological progression is now a natural result of continuing to improve existing blueprints and using the improved blueprints as inspiration for new ones. I think eliminating this extra level of indirection will streamline the mechanics. Feel free to discuss the decision in this thread if you'd like!

Other than that, I worked on the details of how research will work, and I'm pretty satisfied with the "inspiration" system that I developed. The basics premise is that you select any number of objects that you'd like to use for "inspiration," and the magical research algorithms will take them into account accordingly. Under this system, reverse engineering, improving an existing design, and creating a new design are all unified - it's just a matter of what kind of 'inspiration' you plug in. This also explains how designs will vary naturally from region to region, because the natural sources of inspiration will be different (hence why we will see, for example, equipment being made predominantly of the most plentiful local material in the region).

[ 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 September 29, 2013

#5
Thursday, October 3, 2013

Summary

A full day spent on research, and with less than I'd like to show for it. I'm still struggling to figure out the exact mechanics of research and design.

Much to my embarrassment, I've gone back on yesterday's statement that tech and blueprints should be unified :oops: My position today is that tech should exist, but the mapping from tech to blueprint should be very simple, and technological development is really where all the interesting stuff happens. Although I liked the idea of having only blueprints, I realize now that it does not afford enough control.

Today my position is that technology exists, and "research" can take any number of inspirations from any number of sources. Research is really the "creative" part of the whole process. "Design," on the other hand, simply takes a single technology and uses it to produce a blueprint. So if you want to mix faction X and faction Y's ship technology, you must do so at the level of technology. In other words, you would need to use blueprints (or better yet, technologies) from both factions to produce an "X & Y" technology. This technology would encapsulate the blending of technologies. You could then use it to produce a blueprint for which the item would be a natural blend of X and Y. This means that as you develop, you will produce better and better technologies and blends of technologies, from which you will design better and better blueprints, from which you will construct better and better items. But most of the progress will be at the top level - the research level.

I believe that this system affords the most control, while still maintaining a good bit of simplicity :think:

It's entirely possible that my stance will change again tomorrow :oops:

[ 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 September 29, 2013

#6
Friday, October 4, 2013

Summary

Pretty nice breakthrough on research today :D I think I'm comfortable with the idea of having both technolgy and blueprints. But! I've figured out a nice simplification to the research process that makes the two seem unified, while still maintaining the benefits of having them separate :)

I started to think of research in terms of a tree. Derp, I mean obviously, 'tech trees' are not new :oops: But I think it's actually insightful to recognize that 'applied technology' can be thought of as the leaves of a research tree, and 'theoretical' technologies are the internal nodes (because they lead to other technologies). Internal nodes yield other technologies, while leaf nodes yield blueprints! So you can, for example, research 'propulsion engineering,' and it may unlock specific new areas of research like 'thrusters,' 'jump drives,' etc. But researching 'propulsion engineering' itself is unlikely to yield a concrete design for anything, since it's a general field. Think of it as purely-theoretical research. Now, since 'jump drives' is a leaf node (or 'applied' technology), if you research it, you will not only increase the tech level, but there's also a chance that you'll uncover a new jump drive blueprint. So now you don't actually have to choose whether to design or research, you just choose which tech you want to research, with the understanding that only some fields are capable of yielding blueprints. Really like this simplification! :)

Practical people will want to drill down quickly to applied tech and just keep grinding out blueprints with it, while explorative people will want to pump the theoretical fields to try to find new areas of the tech tree. Some of the tech tree will be hand-specified, but some will be procedural, so there'll always be more room to explore. You can also specify multiple nodes of your tech tree to research at the same time, with the understanding that your research power is divided evenly among the active nodes (no surprises there).

As for mixing technologies, it's perfectly natural under this scheme: if you've selected multiple nodes for research, there's a chance that you'll uncover a new technology which is the combination of the active ones. If that technology happens to be an applied tech, then you'll be able to get a blueprint out of it!

All-in-all, I'm feeling great about this advancement! It feels almost as simple as a traditional RTS tech tree, yet it has all the power and flexibility that you'll no doubt be expecting from LT ;) Now...just need to work out all ten billion of the details :shock:

[ 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 September 29, 2013

#7
Saturday, October 5, 2013

Summary

Finally starting to implement some research. This is it guys. This is where it all begins! Lot of pressure, lot of questions. But it's a start :)

I worked for a while on a data structure / file format that I'm going to use to write the tech tree. The tech tree's structure will be entirely encoded in this simple, plaintext format (externally), so at least the tech tree can be modded. My goal right now is actually to develop an ultra clean-and-simple file format that I can use to encode any type in the engine. If I succeed, I'll be able to move a lot of the LT data into external files, making modding a much more realistic possibility! :thumbup:

I'm making great progress on something I call a "string tree," which is an elegant format for generic data storage. I've been through the usual candidates..XML, JSON, TOML, and YAML...but I really believe they all fail to convey the fundamental simplicity of data. Bytes and relationships. That's all data is. I'd like a format that exposes the true simplicity of everything going on in the LT engine. Something where you'll open up a file in notepad and immediately understand how Limit Theory works, and how you can change it in whatever way you'd like :)

In relation to this, I started working on a reflection system for the engine. Speaking broadly, this means that the code will be able to retrieve information about itself. Interestingly, this could be used to create an automatic linkage between string trees and internal types that would allow me to quickly make modding a very real possibility! I'm envisioning a world in which I can load any type automatically from a string tree using the reflection system. If that works out, I'll be encoding everything in easily-editable external text files, maybe even including things like the procedural algorithms. That could be huge for modding :) Ultimately, the core code will never be moddable because it's raw c++. But the core code is really flexible. It's the data that defines most of the behavior, and I think exposing all of the data that goes into the algorithms / game logic will be enough to allow substantial modding. From a practical standpoint, it also allows me to change pieces of the game rapidly.

Exciting stuff happening all around! I probably need another week or so before research is really far along enough to have the AI creating stuff. It's honestly a really hard problem to solidify all of the mappings from the earliest tech all the way down to the concrete objects. But I'm working toward it, and I have a feeling that the solution is going to bring a lot of cool machinery along with it (string trees are already a great bonus, and this reflection system is poised to be an awesome side-effect!) :geek:

[ 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 September 29, 2013

#8
Week Summary

General Sentiment

Really another exciting week! Loving the way AI is shaping up. Toward the end of the week we started to get into research mechanics, and faced a bit of conceptual trouble..but a lot of progress has been made and we're getting ever-closer to seeing the start of the universe. There's going to be some resistance as I come up against the problem of defining the way in which all objects are created by research...I mean, that's pretty much the meat of all of the artificial content in the LT universe. Everything starts here. It's a tough problem and it's going to completely shape the game, so I can't rush it. But once this is over...we'll have all the tools we need to build a universe (or many)!! :)

Major Accomplishments
  • Implemented quantitative AI heuristics
  • Implemented simple mining mechanic
  • Rewrote camera & flight control for significantly-smoother handling!
  • Started to work on unifying AI pathfinding with planning
  • Started conceptual work on research mechanic, developed "research tree" theory and research / design unification
  • Started to work on the non-procedural part of the tech tree
  • Created a widget for observing the game world without loading graphics
  • Created "string tree" file / data format for easy editing and loading of data in text form
“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 3 guests

cron