Return to “General”

Post

Re: What stage is LT currently at?

#466
Kimny wrote:
Personally, McSven is quite right in asking, what kind if tech in C/ assembler could Josh implement to get the performance tweaks he's suggested?
I think that is the more intriguing question. Others have offered nice guesses/assessments of what Josh might have been implementing, but all have mostly focused on the code design patterns, on the programming modularity. While certainly the code design can operate significant performance gains when it corrects previous design mistakes, firstly I doubt that a great coder always focused on optimization like Josh would have made such detrimental performance mistakes in the past.

Secondly, while beneficial to the productivity, I very much doubt that altering the code design, or the modularity alone, would give the orders of magnitude gain that Josh has talked about. I remember, however, Josh commenting that the use of scripting language within the main code has grown to the point of affecting performance, so I would guess that most significant parts of the performance gain came from better integrating LTSL within the main engine, or even from re-writing LTSL in a lighter-weight fashion.
Remember Josh has been at this for years, and there will be some deep lying stuff that makes him feel ashamed about how poorly he wrote it all those years back. Stuff that previously was causing stuff to break. :3
Also the entire engine design is one of the earlier steps he would have completed, long before he knew the full requirements for what he has now.

It's basically going back and rebuilding Noah's ark with modern materials and a propulsion system :3
°˖◝(ಠ‸ಠ)◜˖°
Toba - A Development Dump
Post

Re: What stage is LT currently at?

#467
FormalMoss wrote: Personally, McSven is quite right in asking, what kind if tech in C/ assembler could Josh implement to get the performance tweaks he's suggested?
I remember Michael Abrash joined iD Software for Quake or Quake 2, to help optimise rendering pipelines back in the day.
Abrash now works with Valve last I heard.

So programmers/ techies/ anyone, what do you reckon Josh has done with this latest tech?
What's the mostly astoundingly difficult thing to achieve in a game engine that most programmers would never go near?
C? Not much improvement, honestly, especially given how C++'s backbone is pretty much all C anyway. There are some very minor performance losses from the introduction of generic and object-oriented programming, but it's typically worth the tradeoff. Most major applications are written in C++ because of this. Things like operating systems are written in C because C is closer to the metal, yes, but it's also because different parts of operating systems need to talk to each other a lot and access to data structures and variables in C is pretty direct.

As for writing in Assembly, there could be very large performance gains, but you start to run into issues with differing instruction sets between processors. Most desktop and laptop computers nowadays use the x86 instruction set, but it's possible that there are variations not easily accounted for. It's much better to write in the higher-level language and let the compiler take care of the architecture-dependent (and for other reasons operating system-dependent) bits.

Besides, you'll get better performance from redesigning code to have a better asymptotic runtime complexity (if it can get better -- there are limitations to this) than to go bytebusting down in Assembly-level code.
Silverware wrote:I think what has happened is he has followed the linux philosophy, and broken his engine into many parts, each doing their job independently of the others.

What I keep seeing is that he is making it easier to work on any individual part, and to try and avoid bugs propagating around when trying to fix them, which suggests to me that he has created a very modular breakdown of the old engine.
Something where each module takes a set of inputs and provides a set of outputs, where he can technically rip any of them out, and only break some functionality rather than all of it.
I expect that he has also optimized his compiling so that he doesn't have to recompile the entire engine but only the tiny part of it that needs to be redone (although modern compilers can do this even without a modular system).

But he was mentioning how he had this monolithic code, and how that was interfering with his work. So I expect he has broken it down into a less monolithic state.

While the end result shouldn't be that different to user's or modders, it should happen faster, as he no longer has to fight the entire engine to recode things. It should also provide a capability to replace chunks of the code without having to have the original source code too.

Although this is pure speculation, without knowing what the engine architecture looked like before we can't really make useful guesses.
I'm sure even in the highly-coupled days of LT's engine Josh was using something like make or cmake to compile his code. I mean, it's not like he was writing the whole program in one 70,000+ line .cpp file.

Or at least, I hope he wasn't. :wtf:
Shameless Self-Promotion 0/ magenta 0/ Forum Rules & Game FAQ
Post

Re: What stage is LT currently at?

#468
In my experience, and from studying the experience of others, code redesign is the only reliable way to obtain orders-of-magnitude improvement in performance.
I agree with the general reasoning behind that. The problem is what we are here calling "code design". Sure, redesigning implementation in a smarter way always pays much more dividends than pure punctual optimizations per se (although going heavier on the SIMD instructions can be an exception). Specially, correcting previous code mistakes. What I meant is that, from my experience, I very much doubt that improved modularity and lighter-coupled engine by themselves would give orders-of-magnitude gains - although of course some gains could be achieved.

Then, unless we are talking going heterodox routes (e.g. some data-oriented programming tricks for re-engineering the engine), my bet is still that the mentioned performance gains are more related to the specific forking of the scripting language within the engine.
Remember Josh has been at this for years, and there will be some deep lying stuff that makes him feel ashamed about how poorly
That's something easy to forget :)
I mean, it's not like he was writing the whole program in one 70,000+ line .cpp file.
Or at least, I hope he wasn't.
Don't think he was. See his tweet from Oct 2014: https://twitter.com/proceduralguy/statu ... 6903247872
Post

Re: What stage is LT currently at?

#473
JoshParnell wrote: Best part is, I am now at the point where I can concurrently develop any pieces that I wish, be it engine, game, or the platform on which it all rests.
Just re-reading Josh's post, and I completely missed this line.
So, there is a platform from which LTSL, the engine, and the game are polled periodically?
LTSL is what we know, it's how the hud was created before the re-work.
The Engine, we know of too, as it renders everything for us.
The Game, now why would Josh mention this? My view is that the Game is only concerned with what the Platform gives it? I am thinking "modularity" here.
I see this every day where I work.. there is EPOS software that provides the menu, and when a sale option is selected, it runs a program that just manages the sale.. the opening of the cash drawer and printing of a receipt, is called by the SALES program when a specific result has been obtained, otherwise it is not in use, and the SALES program doesn't know about it until it's required.

So, my question is this:
Q: How has Josh achieved this sense of Modularity by way of the Platform?

Does anyone care to offer any other real-world programs we may actually know of?
Windows 3.11 would be my guess - back when all the executable programs in c:\windows were individual files that knew nothing about anything else unless it was programmed to, but only it being activated.

Code: Select all

Run LT
- open platform
- prepare environment
- What would you like to do:
-- Play LT
-- Screensaver mode
-- Play LT Headless

Play LT:
- Platform initialises LTSL scripts, and verifies Engine is ready
- Game is created by Platform, using inputs from LTSL scripts and Engine
- Platform periodically performs polling of LTSL scripts for changes, and tells the Game to update

Update:
In previous iterations of LT, it was always the engine that was polling LTSL scripts. So when the LTSL got too big, the engine suffered with performing too many actions.
Now, Josh would appear to have a Game, created by an engine that only worries about what to render to Game, which is determined by what the Platform gives it, which in turn is described in the LTSL scripts.

Can someone re-word what I'm trying to say here? :)
YAY PYTHON \o/

In Josh We Trust
-=326.3827=-
Post

Re: What stage is LT currently at?

#474
From what I understand about programming structures and pipelining (which is admittedly limited, since nearly every piece of software I've worked on has been a pedagogical single-executable exercise), I would estimate the structure of the Limit Theory package to be thus:

The game's engine is at the root, where graphics procedures, class definitions for game objects, AI and procedural algorithms, and other LT-specific functions and methods live. On top of that is the main loop of the game, where time and rendering are iterated, AI processes "think", and game objects are generated. This is the game's state, and effectively the level of abstraction your save file would be at, I'd estimate. Above that, the user interface exposes information about the game's state, and provides the user with ways to interact it.

Somewhere between gamestate and UI, the LTSL interpreter plugs in. From there I don't have a great idea of how the main game calls the interpreter, or how often it calls the interpreter. Maybe it's on startup, maybe it's whenever a script is updated (for altering gamestate dynamically via LTSL), maybe it tries to run LTSL scripts every X clock ticks.

It might even be dependent on the type of script. Maybe you can have init scripts for setup that run once on load/game start and also scripts that run repeatedly (like modifying AI-related heuristics or animating part of the UI a different way).

Tangentially related, I do know the Arduino variant of C includes special rules for functions called setup() and loop(). The body of setup() is run once when the Arduino is turned on, and the body of loop() is executed repeatedly until the Arduino is restarted, powered off, or has a new program loaded into memory. It may be possible that LTSL supports similar functionality.

EDIT: From what I understand, part of the slowdown associated with LTSL is due to the fact that Josh was trying to make it do the heavy lifting for certain parts of the game, and interpreted languages (especially the ones at very high levels of abstraction) are much slower than their compiled or just-in-time compiled counterparts.
Shameless Self-Promotion 0/ magenta 0/ Forum Rules & Game FAQ
Post

Re: What stage is LT currently at?

#476
blackdot wrote:does josh's last update mean that he's done with the engine and can now finally concentrate on the content and gameplay? because that's what i understood, but if that's true, i wouldn't expect LT before 2017, right?
Yes, it does sound like the mysterious "platform" is now complete. For the release date, just set it to release in the same week as the next Star Wars film and you shouldn't be too disappointed (Dec 16, 2016).
Image
Post

Re: What stage is LT currently at?

#477
BFett wrote:
blackdot wrote:does josh's last update mean that he's done with the engine and can now finally concentrate on the content and gameplay? because that's what i understood, but if that's true, i wouldn't expect LT before 2017, right?
Yes, it does sound like the mysterious "platform" is now complete. For the release date, just set it to release in the same week as the next Star Wars film and you shouldn't be too disappointed (Dec 16, 2016).
Thanks BFett, adding both entries to my calendar now :)
YAY PYTHON \o/

In Josh We Trust
-=326.3827=-
Post

Re: What stage is LT currently at?

#478
BFett wrote:
blackdot wrote:does josh's last update mean that he's done with the engine and can now finally concentrate on the content and gameplay? because that's what i understood, but if that's true, i wouldn't expect LT before 2017, right?
Yes, it does sound like the mysterious "platform" is now complete. For the release date, just set it to release in the same week as the next Star Wars film and you shouldn't be too disappointed (Dec 16, 2016).
that would be clever in terms marketing :). "All aboard the space train: Long awaited kickstarter game steals Star Wars the show."
Post

Re: What stage is LT currently at?

#479
blackdot wrote:
BFett wrote:
blackdot wrote:does josh's last update mean that he's done with the engine and can now finally concentrate on the content and gameplay? because that's what i understood, but if that's true, i wouldn't expect LT before 2017, right?
Yes, it does sound like the mysterious "platform" is now complete. For the release date, just set it to release in the same week as the next Star Wars film and you shouldn't be too disappointed (Dec 16, 2016).
that would be clever in terms marketing :). "All aboard the space train: Long awaited kickstarter game steals Star Wars the show."
Getting in before anyone else can :)
Image And the beautiful video that goes with it:
https://www.youtube.com/watch?v=XoMN-zg7r3M
The Story:

On Aug 24th 2012 we sent my son's favorite train "Stanley" to space in a weather balloon with a HD camera and an old cell phone for GPS. He was recovered 27 miles away in a corn field. This video documents the journey from liftoff to landing.
PLEASE read below, it answers most questions I get emailed.

My 4 year old and Stanley are inseparable like Calvin and Hobbes. He's been attached to him since he was two, and they play, sleep and do everything together. I animated Stanley's face with After Effects and Photoshop to bring him to life how I imagine my son sees him.

Here's the first video I made of my son and Stanley when he was 2 years old, documenting the beginning of their friendship.
YAY PYTHON \o/

In Josh We Trust
-=326.3827=-
Post

Re: What stage is LT currently at?

#480
I've been a little bored over the last few days and for some reason I ended up typing in "Limit Theory" into youtube and re-watching some of the dev videos and also some of the fan made videos of the prototype. Suddenly I got really interested in LT again for all sorts of reasons. Firstly it's so damned pretty and I mean gorgeous, it really hits you when you watch the videos. Secondly the procedural generation just has such potential. Thirdly it's me against the universe, no worrying about what anyone else is up to. As I say any number of reasons but really the main one is Limit Theory really looks and sounds like a game I want to play.

Online Now

Users browsing this forum: No registered users and 2 guests

cron