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

Post

Week of December 30, 2012

#1
Sunday, December 30, 2012

Summary

More high-level AI work today, including starting to make the battle simulation code to help the AI understand the ramifications of engagements. This is going to be a central part of both the AI code as well as the out-of-system simulation code, so I imagine it'll take quite a while to hammer out this bit...but at least I've started on it.

Most of my time today was spent cleaning up more interfaces and refactoring various pieces of the engine that I felt could be simpler. Love that squeaky-clean-code feeling :geek:

I also had a rather nice idea today concerning solving the problem of proximity queries, which have been bugging me for a long time. Until now, I've been relying on the same structure that the physics engine uses to perform queries of the form "give me a list of objects that are near X." Now, however, I'm come up with a great way of doing this completely independently of the physics engine. Eliminating dependencies is always a great feeling :D Furthermore, the method is highly efficient. The tradeoff is that it isn't necessarily completely accurate - in some cases, it may fail to detect a proximate object for quite some time, while in other cases it may report an object for longer than the duration in which the object is in proximity. The probability of success, however, can be changed via a single number (hint: it's a Monte Carlo method!!! I love MC!!! :) ). Initial tests have indicated that the system is more than fast enough for my purposes, and is working really nicely with the AI collision avoidance system (which, currently, is the main user of proximity queries).

Finally, I started playing around with trying to design a strategic interface (for top-down, RTS-style control). I need to get going on it since we'll want to have it available in the Prototype!

Oh, and I forgot to mention that yesterday, I integrated SFML's audio engine into LT, so we now have sound!

Hour Tally

Coding: 4.50
Internet: 4.33
Testing: 0.83
Total Logged Time: 9.67
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 30, 2012

#2
Monday, December 31, 2012

Summary

Not a whole lot of time logged today since I came out of my coding cave to celebrate the New Year with friends :) But that'll probably be the last time for quite a while... :geek:

Dedicated my time today entirely to the strategic interface, and, I must say, am already very pleased with how it looks! I think I've pretty much nailed the visuals that I wanted. I'm going for the classic sci-fi hologram look, where you can rotate and zoom to inspect the 3D world around you (that which is in radar range). You can actually see all of the same models and such that are used in the game, but I apply a glowing hologram effect to them so the whole thing feels like you're interacting with some futuristic projector on the bridge of your ship (speaking of which...maybe in LT2 it actually will be on your bridge rather than an interface that you pull up...!!). A neat thing that I found works really well is to use this effect for everything except special effects, leaving those unaltered. This means you can still see weapons, explosions, and so on as they would normally look. It really brings attention to whatever action is taking place, and, in my opinion, looks pretty beautiful!

But, now that the visuals are good to go, it's time to do some serious thinking concerning functionality. I need the strategic interface to be the ultimate functional tool for the player - a Swiss army knife of fleet control. How I'm going to pack all that functionality into the interface in the absolute most intuitive way...is still very much an open question. Sadly, I'm much better at designing graphics than I am at designing interfaces...still, time solves everything, and I will be putting a lot of time toward the problem tomorrow!

Happy 2013 everyone! :D

Hour Tally

Coding: 3.17
Internet: 1.58
Testing: 1.98
Total Logged Time: 6.73
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 30, 2012

#3
Tuesday, January 1, 2013

Summary

Another relatively uneventful day, but that's alright...things are about to change. 2013 is here, the holidays are over, and unrestrained LT development is about to begin.

Today I continued on with my strategic interface work, polishing the details and starting to code the mechanics of unit selection. I played around with text buttons, but still can't figure out exactly what I want to appear on the interface in terms of functionality. Again, it's just going to take time.

In other news, added ore to the game and tried randomly spawning some that is attached to asteroids. Looks pretty cool! I'm interested to start playing with the mechanics of mining, which will lead me to playing with the mechanics of cargo and inventory, which, ultimately, will lead me back to planets and the mechanics of trading. Still, that's all a bit far off considering that combat is the focus given the upcoming prototype.

Hoping to log better hours for the rest of the week...time to accelerate! :D

Hour Tally

Coding: 3.15
Internet: 1.96
Testing: 0.62
Total Logged Time: 5.73
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 30, 2012

#4
Wednesday, January 2, 2013

Summary

Too. Much. Code!!! :D Worked so long today I can't remember half of what I did.

In the morning, I worked on various AI things. I implemented formation flying, so that the AI is now smart enough to understand about matching heading vector and speed with it's leader. This allows AI ships to maintain an orderly formation, as opposed to buzzing around their leader like flies. I haven't set up any fancy patterns or anything yet, but that part's easy - now that the AI understands how to maintain a relative position and heading with respect to a group leader, the rest is just a matter of defining the formation layouts and making a system that assigns each squad member a position in the layout. Very easy stuff.

I also worked a bit more on the high-level AI, giving the AI a basic ability to reason about "safety." This allowed me to re-introduce retaliation, but this time in a much cooler sense. The AI once again retaliates when I shoot at it, but the mechanism behind it is completely different, and way deeper. Here's what happens when I shoot at an AI ship:
"Hey, that guy just shot me...he must not like me very much :cry: Ok, well, I'll remember that he doesn't like me. (Later on) Man, I really like being safe. Am I safe right now? Well, there are a bunch of friendly ships around me...so that's good. But wait, what about that guy - yeah, there's that guy that just shot me. He obviously doesn't like me, and he's nearby...that makes me feel not so safe. What could I do to make myself more safe? Oh, well, if that guy were destroyed, I would feel safer. How can I do that? I guess I could attack him. And I could also ask my friends to attack him...that might destroy him, which would make me feel more safe. Ok, let's do that!"
All of this, of course, happens in under a millisecond, and before I've even had time to detect whether or not my shot landed, the entire fleet is shooting at me (yes, now that the HLAI is doing the decision making, the whole fleet is retaliating as a group, because the unit that I attack requests help). Awesome!

I'll just mention the other things briefly: fixed acceleration lanes. Refactored huge amounts of code (almost finished making it squeaky-clean). Made planets way bigger. Worked on strategic interface. Integrated and tested 3D-spatialized sound.

I'm sure I'm missing loads of stuff....'twas a day of many changes, but nothing huge.

Hour Tally

Coding: 7.83
Internet: 3.64
Testing: 2.14
Total Logged Time: 13.61
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 30, 2012

#5
Thursday, January 3, 2013

Summary

Another great day, but this time with more focus...and, oddly, less apparent progress. I had a rush of ideas last night concerning interfaces (not just the strategic interface, but interfaces in general), and started conceiving of some pretty radical notions with respect to interface design. Today, I spent the entire day building a new interface engine, trying to flesh out and concretely realize my ideas. I basically want to make the interface more natural, intuitive, interactive, dynamic, and unified, all at once. Very little is working at this point, and it's going to take a lot to figure out how to make this new approach work. But I think the result could be worth it. I always kind of just assumed that a standard "window-based" approach was the best. But after thinking it through a little bit more, I think we can do better, and build something that feels more like a natural overlay that exposes a dynamic flow of information, rather than a bunch of preset windows.

If I'm successful in re-inventing my UI, it will have a host of implications for other systems. The tactical and strategic interfaces will, more or less, become one. All other interfaces will have to be redesigned, but they should all require less lines of coding, less hard-coded constant numbers, and less endless tweaking to get the layout of everything right. Limit Theory is going to have a huge amount of information that can be both observed as well as manipulated, and I really don't want the game to become a spreadsheet, as a few other space games with large amounts of interactive information have become. I feel like there has to be a way to present that information in a beautiful, simple, and intuitive way that feels more like a game!

As you all have probably figured out by now, simplicity is pretty much my ultimate goal in everything. It's like...my life philosophy (yes, I know, I already explained my life philosophy as "Limit Theory," but if you think about it, Limit Theory is basically just saying "everything is simple, so don't convince yourself it's hard and then not try it"). I have found the simplicity in many aspects of game programming, and it's part of why I've come so far in such a short time. Unfortunately, I have not found the simplicity in interface design...yet. I'm sure it'll take loads more hours, but, like everything else, I believe that interfaces are fundamentally simple, if one can find the right insights. Here's to many more hours of searching for those insights :geek:

Hour Tally

Coding: 5.99
Internet: 2.31
Testing: 1.96
Total Logged Time: 10.26
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Week of December 30, 2012

#6
Friday, January 4, 2013

Summary

A fairly good day for hours, but, again, surprisingly little apparent progress. I spent most of the day continuing the work and design on the new interface. Unfortunately, the work is slow and hard, mainly because I have a very tough time guessing at what will look good, so I more or less have to design by trial-and-error. I'm just not an interface artist :cry: Still, I'm excited to see where this new interface approach will lead me.

Naturally, I also ripped out, cleaned, and deleted plenty of code. I think my nightly commit had something like 130 changed files :shock: Wow. Totally worth it, though, because the engine is really starting to converge on a clean, organized, and succinct bundle of code. Just the way I like it!

I've yet to hit my peak operational efficiency...but I guess that's to be expected. It's going to take a bit more time to get my mind back in the pure-coding mode, but I'll get there. Today, only 12 out of my 16 waking hours were tagged as productive activity, and the proportion of code to other activities is still not high enough. Nonetheless, I'm making progress. I'm sure it'll also improve when I get my shipment of belongings, since I'll have my main dev machine back, and will also have 3x the monitor real-estate for viewing code :D

Hour Tally

Coding: 6.85
Internet: 3.10
Testing: 1.84
Total Logged Time: 11.79
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of December 30, 2012

#7
Saturday, January 5, 2013

Summary

Pretty great day! :) Highest coding hour count so far, and I can feel the mental focus coming back :D

Not surprisingly, cranked all day on the interface yet again. This time, quite a good bit of visible progress...and, most importantly, simplicity is starting to reveal itself! Big things are happening in short pieces of code, and I'm finally starting to come to a better understanding of simplicity in interfaces. I'm pleasantly surprised at how good it looks and feels, given how much of a struggle it's been for me to find a good look. It definitely still looks like programmer art (I mean, LT is pretty much one big lump of that), but with a little more creative juice I think it can work. The good news is that it looks and feels way more natural (and less programmer-ish) than certain space games that are too UI-driven. Most importantly, however, I can see huge potential for doing very cool things with respect to functionality. I can't wait to try some unconventional things :)

The strategic interface will very soon start reaping the benefits of this new interface!

Hour Tally

Coding: 8.38
Internet: 2.97
Testing: 1.38
Total Logged Time: 12.73
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford
Post

Re: Week of December 30, 2012

#8
Week Summary

General Sentiment

Mixed feelings. Great week for the strategic interface and interfaces in general. Still, the interface engine redesign is taking a lot more thinking time than I'd like, and part of me feels like it's too late in the game to be uprooting well-established subsystems like the GUI. Then the other part of me reminds me that it'll most likely save countless hours of dev work in the future...so it's a trade-off that I only hope will prove worth-it down the line. Many such code-simplifying investments have already paid me back many times over (I'm looking at you, component-based entity design!)

Major Accomplishments
  • Conceived of and started work on strategic interface; finished the rendering side, but actual interface is still very early.
  • Conceived of and started work on a new general-purpose GUI (graphical user interface) engine to replace the old one
  • Implemented more of the details of high-level AI, started tackling hard problems like reasoning about safety and fleet combat
  • Ripped out and simplified a whole lot of code (again)
  • First attempt at collision resolution - still rough, but working
Combined Hour Tally

Coding: 39.88
Internet: 19.88
Testing: 10.77
Total Logged Time: 70.53
“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