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

Post

Week of December 23, 2012

#1
Sunday, December 23, 2012

Summary

Switching internal physics engine from OPCODE to Bullet. Initial performance tests are good, but it will require a lot more work to support 100+ ships in the same arena. Collision resolution is still not implemented. Unfortunately, a lot of time spent playtesting today due to debugging physics. Also polishing up my cool/secret new method of faking infinite resolution on textures. May write a paper on it, as it's a pretty sweet thing that I've never seen done before in the literature!

Loads of time spent on the forums today, though I think it's important to continue being unusually active for a while after the KS.

Hour Tally

Coding: 3.26
Internet: 3.54
Testing: 1.82
Total Logged Time: 8.61
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 23, 2012

#2
Monday, December 24, 2012

Summary

Spent a lot of time at family Christmas gathering. Started on third (or is it fourth?) rewrite of CSG engine, in the never-ending quest for a fast and robust CSG algorithm. Got farther than I ever have before, and (praying that this isn't going to jinx it..) should have the best solution yet in the near future. This system is critical for generating asteroid bases and carriers, but it would also be great to be able to use in the ship generating algorithm. Could afford a lot more flexibility in the ship shapes that the generator is able to create. Hoping for the best!!

Hour Tally

Coding: 5.02
Internet: 3.59
Testing: 0.94
Total Logged Time: 9.55
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 23, 2012

#3
Tuesday, December 25, 2012

Summary

Merry Christmas! :D This year, I asked Santa for the strength and wisdom to build a fast and robust CSG algorithm. Apparently I did something bad this year, because I didn't get it. Although my implementation is significantly better than the previous attempt, it's still too slow for large poly counts (it would not be able to build an asteroid base, for example). Even worse, I've found that it's not robust. I'm going to do a bit more experimentation to figure out where the issues are, because this is supposed to be a fairly robust algorithm. Still, I've spent enough time on this for now, and am laying it aside. CSG is one of those things that I'm just going to have to keep revisiting until I finally get it.

Other than that, I "seriously" started the high-level AI engine today, and am making great progress. The structure is quite beautiful and clear, yet should be very powerful, and I'm excited to see where the code leads me. Tomorrow I'll finish refactoring the low-level AI to be cleaner, then will hook the two engines together and start playing with the results, hopefully watching as my NPCs acquire sentience and form evil plans to take over the universe.

Hour Tally

Coding: 5.79
Internet: 3.27
Testing: 1.69
Total Logged Time: 10.76
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 23, 2012

#4
Wednesday, December 26, 2012

Summary

Awesome progress on the HLAI engine today! Am really starting to love the architecture, and appreciate it for how logically it models the real world. Naturally, it remains to be seen how well it will work in practice, but with this advanced of a model, I'm not too worried about it. Also made great progress on overhauling the LLAI engine to be more logical and structured. It's not done yet, and I haven't been able to put the AI to work in game yet, but I'm sure that will come soon, and when it does, seeing this AI engine grow is just going to be too much fun. It's also going to integrate almost effortlessly with the entire mission system, to the point that missions will be, more or a less, a natural consequence of the HLAI. You know you've done something right when the complexity of multiple systems just starts tumbling down :)

I guess my excitement is a little heavy right now...hopefully I haven't come off as too proud of myself :? But man, I'm sorry, I'm just so excited about AI in LT. I think it's going to push the limits of game AI. Ok. Done with the unrelenting idealism....until tomorrow, of course ;)

Hour Tally

Coding: 4.96
Internet: 1.49
Testing: 0.06
Total Logged Time: 6.50
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of December 23, 2012

#5
Thursday, December 27, 2012

Summary
Great numbers for today, even though it didn't feel like a particularly awesome work day. More progress made on high-level AI, although am mentally stuck on a few big issues, but they'll just require more thinking time. Low-level AI has been almost completely rewritten, and now integrates tightly with the HLAI. Initial tests are going well. AIs aren't making life plans yet, but the HLAI primitives are clearly working and playing nicely with LLAI.

Lots of other code has been torn out today in a search for simplicity, which is going quite well :) The hardpoint system is now completely general (not at all tied to ships/stations/whatever owns the hardpoints), and quite clean.

In other news, started laying out factions in code today, and am excited to see where that leads me.

Finally, am starting to look seriously at the Boost C++ libraries, because I'm tired of my own loading/saving solution making my code unclean. Boost serialization is not quite as fancy or powerful as my system, but, again, I am searching for simplicity, and Boost may be the simple answer.

Onward to clarity and simplicity!!!

Hour Tally

Coding: 6.94
Internet: 4.68
Testing: 0.84
Total Logged Time: 12.45
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 23, 2012

#6
Friday, December 28, 2012

Summary
More great progress on high-level AI today! Solved a few of those roadblocks that I was stuck on yesterday, including both the ability to efficiently reason about a speculative world (what you might call 'dream'), as well as the ability to model a probabilistic world (i.e., recognizing that the outcomes of actions are not certain). I think we'll be in pretty good shape to start seeing some real intelligence after I finish implementing these concepts!

Yet again, I went on a rampage of tearing out and simplifying code...and it looks like this is just going to be the beginning. I have an addiction to ripping out and rewriting code. It just feels so good :shock: Especially when the new code is half as long. Bloated code beware...you will be hunted :twisted:

Also integrated and tested boost serialization library today. Overall, not impressed with the clutter of boost's interface, but...if it works, it works. And it does. And it claims to handle multiple inheritance...so, respect where respect is due and such.

[rant] Oh, and I would like to formally give a shout-out to whoever designed "boost/config/auto_link.hpp." Really, to put it in Han Solo's words, "what a wonderful smell you've discovered"! Because, as if it isn't bad enough to specify linkage details via a pragma, you also decided to completely hide it by building the link library's name out of macros, so that it doesn't show up in any sensible search of the code. Brilliant! Only took me half an hour to figure out why my executable kept trying to link against a library that was, not only not specified in the linker command line, but also not specified anywhere in the code (thanks to you and your lovely macros). Cool stuff. :| [/rant]

Hour Tally

Coding: 4.60
Internet: 3.18
Testing: 0.47
Total Logged Time: 8.25

PS ~ Tomorrow's log will be released mid-Sunday, because I will be without internet tomorrow afternoon and night.
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 23, 2012

#7
Saturday, December 29, 2012

Summary
Another family Christmas gathering today, this time with no Wifi, sadly. Nonetheless, managed to get a fair amount done on high-level AI. I finished implementing all of the basic concepts that power the high-level AI, and have started testing it with great success! I've implemented a basic reasoning algorithm that allows the AI to think about how to achieve its goals, and take action to do so.

As a very basic test, I changed the tactical interface to use high-level AI commands rather than low-level. Whereas the old interface sent commands directly to the AI (when you clicked attack, it told the AI "attack this target"), the new interface simply gives the AI goals to achieve, but does not tell them what to do. This is really a much more elegant approach, as it affords the AI a lot of creativity in determining how they want to carry out their task. Now, when you click "attack," you are basically telling the AI "I would like for that target to be destroyed." The difference is subtle, but has very heavy implications. Notice that the second form of the order says nothing about what the AI should do. It's not a command, really, it's more of a wish. So in order to translate the "command" into an action, the AI actually must use the high-level reasoning system, and think about how it will achieve the player's desires.

The end result? The exact same thing as before :roll: When I tell the AI to attack a target, it attacks the target. Woo! Nonetheless, there's a lot more happening now, and, in the future, we will see very cool consequences because of this. Now, the AI is actually saying "hmm, ok, the player wants that target to be destroyed. How can I make that happen? Well, to destroy something, you can try attacking it...I wonder, what would happen if I attacked that thing? Oh, well, I might destroy it, and that would be good, because the player wants that...ok, yeah, I'll do that! *attacks target*" For now, it's that simple. But in the future, the AI will have a notion of difficulty, so that it will be able to judge how good of a chance it has at destroying a certain target. If you tell it to attack something that it has no chance of defeating, it's probably going to try to come up with a different plan than direct attack, because it recognizes that doing so will most likely not result in the goal you wanted it to achieve, and, moreover, will probably result in death.

I also implemented a system for allowing the AI to query and request the help of nearby friendlies. This is pretty cool, because it will allow the AI to be intelligent about attacks. If you tell a fighter to attack a capital ship that it has no chance of defeating, it may request the help of nearby friendlies for the duration of the engagement to improve the odds of success.

Overall, I really couldn't be more excited about AI in LT :D

Hour Tally

Coding: 4.60
Internet: 1.54
Testing: 0.73
Total Logged Time: 6.86
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of December 23, 2012

#8
Week Summary

General Sentiment

It was a fantastic week for AI. I'm really excited about how the high-level AI system is progressing :) The week was pretty light on coding hours and a little too heavy on internet hours, but, then again, it's still the holidays. I imagine next week will be better.

Major Accomplishments
  • Replaced OPCODE with Bullet; resulted in faster collision detection, and will have much more flexibility in the future thanks to Bullet's full feature set
  • Conceived of and implemented all high-level AI primitives
  • Re-wrote low-level AI system to be cleaner and more complementary to the new high-level AI
  • Ripped out and simplified a whole lot of code
  • Integrated Boost::Serialization for saving/loading
Combined Hour Tally

Coding: 35.60
Internet: 21.28
Testing: 6.54
Total Logged Time: 63.42
“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 7 guests

cron