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

Post

Week of October 27, 2013

#1
Sunday, October 27, 2013

Another good day of work on the editor :) I've got pointers working - including abstract base classes - which means there's now an ability to change the shape of the data graph. Super cool stuff.

I continued to work on usability, trying to figure out how to present visual cues to make navigation as quick and easy as possible. I think I've made a lot of progress in that area - I can actually now navigate the data faster than I ever expected to be able to :) The biggest helper was highlighting the entire subtree of the active node, which gives you a visual cue indicating which part of the data you're about to descend into. With that in place, it's really easy to cycle through siblings until you see the part of the graph you're interested in light up, then you know it's time to descend. I think we'll all be able to get very fast at this type of navigation with a bit of practice, so I'm already convinced that visual data editing is not clumsy or slow.

Having not finished vectors yet, I'll admit that I didn't get quite as much done today as I wanted. Probably due to the fact that some family was in town for the weekend and I spent some time with them for a good bit of the day :monkey:

Still, the plan for tomorrow remains: tech tree or bust! :geek: Really need a miracle to build the whole universe before the monthly update :laugh: Obviously that's not likely, but I would really like to have a visible tech tree and AI research implemented ;)

[ 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 October 27, 2013

#2
Monday, October 28, 2013

Ok, look, I tried really hard to build a tech tree today. I did! But vector manipulation within the data graph editor (which is essential for editing technologies / tech trees) turned out to be harder than I anticipated. Technical excuse: editing a parametric type like a vector requires type information of the parameters, meaning manipulation isn't as straightforward as other, non-parametric types.

However, today, like many days this month, brought with it some powerful new technology. I decided that the right way to support vector operations is by exposing member functions to the reflection system. Oh boy :shock: We already had type reflection, then we gained function reflection...and now, good lord, the man has member function reflection! :D It's super-cool. Let me tell you. Member function reflection can be used to augment the LT data editor in a really neat way: whenever you select a node, the editor can show you a list of member functions (pieces of code that are specific to that type of data) that can be applied to that node. We're not just talking about editing raw data, we're talking about executing code from within the editor! So the LT data viewer is basically a console on steroids.

A preliminary test with vectors turned out successful! I exposed a few member functions to the engine, like push / pop / clear (in layman's terms, these are the fundamental operations that are used to manipulate "lists" of objects in the engine). A contextual panel pops up whenever you select a vector, and you can use it to directly invoke those functions. The graph also updates in real-time if the structure changes due to the operations. It's all pretty sweet :) I have to say, this is truly some awesome technical machinery. The engine is exposing member functions of a parametric type (in c++ terms, "templated"), via a runtime reflection engine. Not bad for a game engine, folks. Not bad at all :thumbup:

Ok, let's talk practical ramifications. Who cares. You should care!!! Why? Well.......I've just built a scripting language!!! No, seriously. I've got code, I've got data, and I've got objects and contextual functions on objects (member functions). I'm just a short hop away from exposing these via UDF and having fully-editable snippets of external code :geek: But, as you already guessed, that's not going to happen. Oh no. We won't be writing scripts here. After all, why walk when you can ride? (e-cookie for getting the reference :D) Why write text when you can write nodes? That's right gentlemen. I believe we'll be scripting via the LT data graph editor.

Code, data.
Data, code.

:shock:

:ghost:

PS ~ I guess it should be more than a PS, but I've already ended that log on a pretty good note. But let me also mention that I developed a new layout algorithm for the data viewer today that looks awesome!!! It conveys structure, pattern, regularity and scale of data while still looking clean, orderly, and...most importantly...pretty :squirrel: It looks like something you would see in some sci-fi hacker movie. Except that it's actually functional :D Editing bytes has never been so glamorous :cool:

[ 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 October 27, 2013

#3
Tuesday, October 29, 2013

Not much time to talk today, I've really got to pull some stuff together here before the update! :)

Among the various excitements of today, I continued to make great strides with the data editor - introducing more layout tools and better handling of pointers and pseudo-pointers. I substantially improved and simplified the polymorphic reflection system, in the process fixing many in-game types that previously failed to expose reflection data. I can now peer into every object type, from weapons to systems to asteroids (note: keep in mind that "peering into" is now also equivalent to being able to load and save!) I repaired the Windows build, which was, thankfully, only slightly out of shape this month.

Lots done, lots left to do...not much time! :shock: Tomorrow's going to need to be a crazy day. Ah well, I've got plenty of coffee at the ready!!! ;) :monkey:

PS ~ Looks like devtime is screwed up again...for some reason it's not automatically updating to show this week and is stuck on the last one :( Guess I need to open another support ticket. Sorry about that!

[ 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 October 27, 2013

#4
Wednesday, October 30, 2013

Ahhh!! Almost forgot the log :shock:

Sooooo many changes today, absolutely impossible to remember all of them. Hardly even the same game that it was yesterday ;) A small taste:
  • Created new UI widget for smooth lines, now all graph-based widgets have pretty edges that connect the nodes (including the data editor + tech tree)
  • Created new UI widget for drawing a nice techy grid, perfect for the background for the data editor & tech tree widgets
  • Overhauled a lot of the UI graphics, including but not limited to icons, buttons, and cute circular thingies
  • Created a new interface that overlays some interactive widgets directly on the world and allows me to click to bring up the data graph for nearby objects. Ability to directly hack into the world in awesome sci-fi style? Check.
  • Fixed the precision of mappings between world objects and widgets (no more latency)
  • Built more modifiers
  • Wrote algorithm for applying positive & negative modifier to a tech
  • Vastly improved performance of data graph by hierarchical culling of nodes / branches
...that's probably about half of it. No time to remember the other half :shock:

And!! I'm only getting warmed up....I'm not even on my 5th cup of coffee yet!!! :shock: :shock: :roll: :lol: :ghost: :ghost: :ghost:

See you on the other side!!! :wave: :wave: :wave:

[ 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 October 27, 2013

#5
Thursday, October 31, 2013

Hiiii :D Please excuse the tardy dev log - I just woke up from an epic (and much-deserved) slumber ;)

Yesterday was absolutely insane. In a good way. Managed to get a whole lot done before the video, and, much to my amazement, nothing went wrong in the process of making it! In fact, everything went remarkably well! I got the (massive) video recording right on the first try, and then I got the (equally-massive) narration right...also on the first try, and in one piece!! Very cool :D On top of that, my body cooperated with the all-nighter without any fuss whatsoever (though it did have a bit of help from Sir Caffeine).

The reaction to the video was really, really nice, and it makes me feel very happy to see how much people are liking the progress :clap: At the same time, I feel a little guilty, because I know that, to some extent, I pulled a "blind them with shiny stuff" maneuver there toward the end. Not in an intentionally-malevolent way, but you have to admit that the data editor is...flashy :roll: The truth, however, is that we're still sorely lacking in gameplay, despite the cool tech. Obviously I'm working up to that, and I keep saying "the tech will help me build the gameplay"...but it's about time I put that to the test. I'm hoping to have a lot to show for this month. :geek:

As for my day off today...eh, I may watch a TV show or two, but I'd rather just work. Really don't have any time to spare. Maybe I'll work on something "fun," though :) I keep having the urge to redesign the website to look half-decent. Maybe I'll try my luck with that.

PS ~ I totaled seven cups of coffee yesterday. I'm not proud of it but....it worked :squirrel: :squirrel: :squirrel:

[ 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 October 27, 2013

#6
Friday, November 1, 2013

Wow, I've seriously got to get better at not falling asleep randomly without having written a dev log :shock: :oops:

Anywho, I'd classify yesterday as a "good, half-work day" :thumbup: I spent the most time working on the website. Although I don't have the new one ready yet, I made a lot of progress, including sinking my teeth into the new host that I will be moving to (given the heartaches we've had with 1&1), trying several CMSs and finally choosing one, finding the right template for the job, and starting to create the content. I'm excited for the change because it's going to bring ltheory.com into the modern age and finally make it look like a professional ordeal :) The site probably still needs a few days of work though, and performing the final switch to the new host isn't going to be a piece of cake, so I wouldn't expect to see it very soon :monkey:

Other than that, I spent a whole lot of time on this massive post, and also some time concepting new ideas for the ship generating algorithm.

Today it's back to 100% work and I'm excited for it! Really think November is going to be serious business :geek:

:wave:

[ 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 October 27, 2013

#7
Saturday, November 2, 2013

Interesting day :monkey:

In the morning, I set up a new linux environment on my Macbook. The interesting thing about this is that Intel graphics chips (like the HD Graphics 4000 in my MBP) use the open-source Mesa drivers on Linux. I had never tried to run LT on these drivers before, so it was a neat new challenge. The drivers greeted me with a fair bit of resistance, as they don't support EXT_gpu_shader4, a (fairly-basic) OpenGL extension that was previously required to run LT.

After a few hours of work, I was able to remove that dependency from LT, so now it only requires vanilla GLSL 1.2 with no extensions. I think that's actually a pretty low requirement for a game that looks as good as LT ;)

The good news is that, on paper, the game now runs on the Mesa drivers. The bad news is that the game can't really run on the Mesa drivers :roll: Although it can run the simple things like the LT interface, it would seem that these drivers have an incredibly-bad shader compiler. So bad, in fact, that I waited about 15 minutes for the compilation of the asteroid-generating shader to finish, but it never did. So I gave up. Sorry Mesa-using folks, but there's really not much I can do about that. Shaders taking 15 minutes to compile is...not my fault. That one's on the driver people, and until they figure out how to make a decent compiler, I'm afraid there's nothing I can do to make the game run on those drivers :( Not a happy ending, but I'm pleased that I managed to remove the gpu_shader4 dependency :) You know, it's strange - Intel obviously knows how to make a good shader compiler (I have no trouble with the Mac or Windows Intel drivers)...so they should really help out Mesa since they're using it on Linux. Be a dear and give them your compiler, Intel!! They need it :shock:

Next up was a major change to the graphics pipeline: gamma-correctness. It's one of the major buzzwords afloat in the graphics industry these days (alongside "physically-based shading" and "path tracing" :roll:). The gist of it is that a major gamma correction at the end of the pipeline causes lighting calculations to be done in a "linear" space, which is, oddly enough, not what happens if you don't pay attention to gamma. Supposedly one's eye is highly-sensitive to such things, and perceives linear-space lighting to be more realistic :think:

Converting to a gamma-correct system requires rebalancing all of the lighting shaders, since the correction has the effect of brightening and washing out the whole scene. However, after several hours of rebalancing, I was pleased to see that the effect delivers on the promise of higher realism! It's subtle, but the game definitely looks better all-around :)

I kept moving forward with research as well, but this log has gone long enough! :wave:

[ 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 October 27, 2013

#8
Week Summary

General Sentiment

I guess the week was just too awesome to summarize, which explains why I'm coming back a week later to do the job :D There's no doubt that the data editor was both the star of this week's work as well as the star of the dev update. Actually I was a bit surprised at how much people liked it! Definitely makes me think seriously about the future of node-based interfaces in LT.... ;)

Major Accomplishments
  • Lots of improvements to the data editor, both visually and functionally
  • Added member function reflection to the engine's reflection capabilities
  • Implemented linear-space lighting (aka gamma-correct)
  • Removed dependency on EXT_gpu_shader4; got the non-3D parts of LT working on Mesa drivers
  • Started building a new LT website
  • Highly-successful 10th monthly update! :)
“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 2 guests

cron