Notifications
Clear all

Limit Theory: An Infinite, Procedural Space Game

Page 5 / 8

Pinback
(@pinback)
99 Star General Site Moderator
Joined: 7 years ago
Posts: 9085
 

Well I guess we will find out over the course of the next year.


ReplyQuote
IronHound
(@ironhound)
Warrant Officer Registered
Joined: 14 years ago
Posts: 337
 

Please read this post by Josh. 

 

If you still are not convinced that Josh is working on LT then I'm not sure what to tell you.  We all want to play LT now, and we all want to see the features completed.  With Josh, we are going to get the finished product once he has found the fastest and most time efficient way to code LT.  Keep in mind that this also makes it easier for the end user to modify the game once it has been released.

 

 

Would you like me to go hunt down the big-worded posts with bolded and italiced words from Malevolence and Bit Odyssey? It means nothing when you havn't put out updates in a while. The project may not be dead, but it isn't coming out in 2016. I'll eat my words, but I'm also so sure of this, I'd put money down on it. I'm not a blind believer, and I know a burnout when I see one. However, I respect your faith, and wish you the best.

 

...just don't take it too hard when it all falls apart. 🙂 We are in a GOLDEN age for indie space sims. Astrox, Star Nomad 2, SR2 HD, Elite, Star Citizen, Star Sector, No Man's Sky, etc. etc. etc.


ReplyQuote
 Anonymous
Joined: 54 years ago
Posts: 0
 

Josh went though 6 months of burnout and mental health issues in 2015.  I'm not claiming that LT will come out this year (2016), but I do believe that Josh is now working in a healthier environment and in a healthier work week than he was in the past.

 

If LT falls apart I will have lost a game which looked great, but also gained a handful of friends which I will be keeping in contact with.


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

Finally a post from Josh:

 

So yesterday I had written a rather lengthy response / update to this thread trying to clarify some of the questions popping up about the old vs. new underpinnings of LT...then I had to move locations, and when I hit submit my internet was gone and, naturally, phpBB doesn't save the form state so when I hit back my response was also gone (so I gave up). Gonna try again today, using the clipboard more frequently

Here's a basic rundown of what was and what is, why we're in much better shape than before, etc 🙂

Old Setup:

  • Engine and most gameplay components written in C++ (~100+ source files since I like to keep things separated). Used some heavy-handed C++ constructs, adding to compile-time.
  • Despite being separated in terms of files, engine components were highly-interconnected, as I wasn't good at modular structuring when I started this journey.
  • LTSL implemented via compilation to expression tree (like an executable AST), scripts executed via this tree -- a fairly slow but clean approach
  • High build times due to interconnectivity and 'monolithic' structure (LT engine implemented in a single DLL / dylib / .so); even making changes to an isolated feature required an annoying amount of link time
  • Above problem led to higher use of LTSL for more and more features, eventually leading to exposing the performance limitations of LTSL...this ultimately backed me into a dark corner

New Setup:

  • Minimal 'platform' written in very light C++ (basically C; no usage of the 'heavy' C++ features, no usage of C++ standard library); platform contains core graphics / audio / system functions (i.e. the microcomponents of the engine)
  • Everything else, including higher-level pieces of the engine as well as gameplay, written in a specific subset of an existing high-level language (i.e., an industrial-strength one 😛 ). The platform configures, injects functionality into, and then starts up the language's environment. LT is then started in the HLL.
  • Wait! Engine functionality written in a high-level language??? Sounds like another performance disaster / LTSL situation waiting to happen! -- probably what you should be thinking right about now. This is where 'magic' happens. The platform on which everything rests allows for something rather awesome -- it allows for pieces of the HLL code to be transformed into native machine code that executes as fast as anything that was pre-compiled into the platform. The awesome part is that the code can remain written in the high-level language, it just needs to adhere to a few things, and mark itself as wanting to execute 'natively,' and the platform automatically takes care of the rest.
  • Ultimately, this means we have both performance-critical and non-performance-critical code written in the same language but executed in different ways. So the beauty of it all is that I don't need to guess whether or not some AI routine or PCG algo is going to be slow...if I run the game and it's slow, all I have to do is mark it (this is done in the language itself, via a mechanism I added), and next time it'll be converted to pure, optimized machine code that runs natively, just like all of the old LT used to run. There are a few drawbacks for code that wants to do this (namely, it can't use the full featureset of the HLL, otherwise it wouldn't be possible to convert it to low-level). But overall it's an awesome setup that makes development so much more tractable AND makes sure that we're ready to handle performance issues if and when they arise.
  • Due to this structuring, engine and game code can be developed independently. Entities needn't be rendered in 3D just to see basic information about what they're doing, what's in their inventory, etc. The old testbed approach is just magnified 100x here, because we can play with even more minimal pieces of the game thanks to not having a monolithic engine.

Please excuse my poor articulation of that all....I'm so caught up in the code right now that I think my english is degrading 😛 At any rate, the point is, this restructured foundation for LT solves both the performance issue and the development complexity issue (good lord, I can't even tell you how many lines of code are saved writing entity logic in the HLL!)

Yes, details are intentionally withheld until all is ready to be revealed 🙂 For now, though, I hope some of you can take peace in knowing that the platform is finished enough to be able to work on both game and higher-level engine code. All three of these things can be worked on concurrently. And gameplay code is being written - far more quickly than used to be possible It is currently first priority, as I want to know as soon as possible which pieces of gameplay code will require the platform's 'magic,' and then test to verify that it does indeed remove performance bottlenecks as I expect (naturally this testing has already been done (successfully) on typical performance-benchmarking code, just not with LT gameplay code yet). Having written a good bit it already, I can tell you guys that, all this technical stuff aside, the single best part of this new approach is that building LT actually feels like building LT, not like thinking about the best way to implement each tiny piece of it. In that respect, a HUGE burden has been lifted from both myself as well as future modders!

I told you all I was going to play it stealthy until I'm ready to show everything, but there's a little peak at the structure so that you all don't have to guess as much (although now I'm sure I've left new things to guess at...


ReplyQuote
Pinback
(@pinback)
99 Star General Site Moderator
Joined: 7 years ago
Posts: 9085
 

Anyone know what the current state of the game is?.


ReplyQuote
Cody
 Cody
(@cody)
Captain Registered
Joined: 7 years ago
Posts: 1958
 

Nope! I occasionly post in the LT forum's off-topic section, but don't bother with anything LT-related.

Oolite Naval Attaché


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

They say Josh is still working on it. I truly hope he finishes it at least get it to a releasable state for the kickstart backers. The LT scripting language he was working on was amazing and you could possibly just finish the game using that if it was finished. But it is a shame this went dark for the most part because it was looking to be a great game. I know Josh had health issues and maybe some still. But he also collected over $100k, so this game needs to be finished.


ReplyQuote
 Anonymous
Joined: 54 years ago
Posts: 0
 

They say Josh is still working on it. I truly hope he finishes it at least get it to a releasable state for the kickstart backers. The LT scripting language he was working on was amazing and you could possibly just finish the game using that if it was finished. But it is a shame this went dark for the most part because it was looking to be a great game. I know Josh had health issues and maybe some still. But he also collected over $100k, so this game needs to be finished.

Hello again.  Since Josh doesn't make official updates a topic has been made by one of the moderators which follows Josh's latest LT related posts which can be found here.

I'm hoping that Josh finishes development by the end of this year, but with the lack of information it is difficult to make a judgement.

 

Hi Cody, nice to see you over here as well.


ReplyQuote
Cody
 Cody
(@cody)
Captain Registered
Joined: 7 years ago
Posts: 1958
 

I'm hoping that Josh finishes development by the end of this year, but with the lack of information it is difficult to make a judgement.

 

<waves> I have my doubts about that. Josh seems too wrapped-up in the 'beauty of the code' - dangerous!

Oolite Naval Attaché


ReplyQuote
IronHound
(@ironhound)
Warrant Officer Registered
Joined: 14 years ago
Posts: 337
 

Hello again.  Since Josh doesn't make official updates a topic has been made by one of the moderators which follows Josh's latest LT related posts which can be found here.

I'm hoping that Josh finishes development by the end of this year, but with the lack of information it is difficult to make a judgement.

 

Hi Cody, nice to see you over here as well.

 

 

Not a chance in hell. He's made nothing resembling anything even remotely gameplay like. If he had even a few screenshots the fanbase wouldn't be crawling up his ass lol. As it stands ya'll got suckered.

 

If he releases the game before I die of old age, I'll admit you where right. If he releases the game this year, I'll happily buy you a space sim off of Steam. That's how certain I am this is beyond dead. Dude is in way over his head, with nothing but his ambition. I can get a loan and buy a ship too, doesn't mean I'm ready for the ocean, or to build one from scratch.


ReplyQuote
Pinback
(@pinback)
99 Star General Site Moderator
Joined: 7 years ago
Posts: 9085
 

Will be interesting to see if anything is heard from him in the next couple of months or will it be another wall of text.


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

Finally a update from Josh, let us know what you think and enjoy the read:

Hello and good evening lovely Limit Theorists!

Warning: please ensure that your seat-belts are fastened, cockpits fully-pressurized, and pulse weapons overloaded to at least 110% of standard operating power. It's going to be a long ride through this sector.

~ Introduction ~

First off, I've got to start by saying that this post is coming to you several months too late, but, as I'll discuss later, I'm taking serious steps to ensure that I change my communication habits. I'm sincerely sorry for not being on the forums for several months; I know, coming back and reading some of the intermittent posting, that it's taken a toll on many of you guys' outlook on the game. With this post, I aim to lift that outlook, but also to open up the hood and talk about why things are the way they are at the moment.

Before we get down to it, a word about my previous updates and the community's response. If you're one of the many posters who has said something to this effect, know that I've heard you when you said "no more vagueness," "concrete details," "more than promises/empty words," etc. I got it, my previous updates were not satisfactory, but give me a chance to prove to you that I can, in fact, change 🙂 On the other hand, a forewarning: to those who have demanded "pictures/videos or LT is kill," let me tell you up-front that you're going to be disappointed. I'll explain in detail why that's not what development is about right now, and this is the part where you all are going to have to meet me halfway in understanding that progress and pretty screenshots are NOT equivalent -- a mistake to which I've fallen prey for much of LT's development.

The fact that development is not fun, pretty, or exciting (at least to most) is part of the very reason for which I haven't been excited to talk about it, and have even avoided doing so. For years I had beautiful things to throw up in the air and say "LOOK WOT I DID!" and receive praise for making things shiny. Man I miss those days so, so much...but the problems I'm dealing with currently are far more pressing to LT being released than more visual candy. I simply have to push through the problems I'm about to explain if you want LT to be finished. And I have every intention of LT being finished. There will be more pretties, more videos, etc., but let me be very clear: that won't happen before I get past the current roadblock.

~ Development: Where We've Been, Where We Are, Where We're Going ~

To understand why development has taken the bizarre course that it has, I must take you back all the way to just before the Dark Days, when the 'Road to the Beta' was in full-swing and Josh was burning his candle at 17 different ends. Things seemed to be moving quickly and beta seemed within reach. Then, all of the sudden, the Dark Days were upon us. What exactly happened, other than stress and an unhealthy lifestyle pushing me over the brink? What happened is that I was backed into a corner from which there was no easy escape. I had been backing into this corner for quite some time without realizing it.

LT was, at that time, a massive codebase. Not massive in relation to how much it did, but still massive with respect to your average programming project. With both C++ and GLSL included, the code was pushing dangerously-close to 100,000 lines. Interestingly, 100K lines is a bit of a special number in programming. It's one of those rule-of-thumb things, but a large number of programmers, now including me, have found it to be roughly accurate: they say that a skilled programmer can manage about a hundred thousand lines of code. What do I mean by that? Think of it like RAM: your computer has a certain amount of RAM. When a program tries to use more memory than you have RAM, typically the program will still function via an OS mechanism called 'paging,' wherein hard drive space is used to effectively extend the limits of RAM. Problem is, doing so comes at a huge cost (less so with SSDs, but still a high cost): RAM accesses now may take orders of magnitude longer due to needing to page in/out memory from/to disk. Sure, your program will still run, but the moment you hit your RAM limit, a typical program will almost immediately incur a huge performance penalty. And so it is with programmers! Good programmers have a 'RAM' of about 100K lines of code. Beyond that, the difficulty of understanding and maintaining said code quickly becomes disproportionately hard, leading to a harsh dropoff in productivity.

So, I was starting to approach the limits of my programmer RAM. My solution to this problem (as well as modding) was LTSL. LTSL made things gloriously easy to understand, and, for a while, made development gloriously fast in comparison to how C++ development had been. There was a brief period of time wherein I found myself basking in the sun and all was right with the LTverse. LTSL was making development a joy, I was able to keep everything in my mental RAM thanks to the compactness of the language...things were great. Until, one day, they weren't.

You see, while I had successfully evaded one wall, another was sneaking up on me, and I would soon be caught between a rock and a hard place. LTSL, like all non-compiled scripting languages, was slow. Not terribly slow, but certainly slow in comparison to C++. This was the price I had to pay for offloading gameplay code to LTSL. I didn't anticipate that the price would be too much. On that point, I was quite wrong. It was a rather sudden thing, due to the nature of Limit Theory -- there's so much going on at all times...so many game entities, so many UI components, so much AI, so much physics, so much rendering -- speed degradation of only a small bit of code can cause a frightening FPS hit, since that code may be running every frame on every entity that, just for example, emits an EM signature that can be picked up via scanner. As I pushed into my beautiful new world of C++ & LTSL, I was also pushing closer to the invisible wall of performance problems, and then, one day, I hit it: FPS was down to ~20 even in situations where a relatively small amount was going on (i.e., even without LOD system simulations active, without distant AI, etc.) I knew I was in trouble, because I knew it was just the tip of the iceberg, and that performance was going to quickly go to hell in a handbasket if I continued using LTSL, my saving grace. On the other hand, my inability to mentally manage and make progress on a near-100K LOC codebase in C++ awaited me if I were to turn back. In either direction, I faced a sharp drop-off, either of productivity or performance. I was in a truly impossible situation, and for once, my Crazy-Solution-Generator-3000 failed me. Cornered and out of options, with a community expecting an imminent RTB post, my kernel crashed. And it crashed hard.

Therein lies the rub, the truly monumental challenge at the heart of building LT (a challenge so formidable that I've given it the title of The Fundamental Problem of Limit Theory; FPLT for short): the completion of Limit Theory demands the utmost efficiency in both run-time performance (a la C++), AND development cost (a la LTSL). These two interests, as most programmers know, are in oppisition to one another in the world of development. In general you can have one, not both. But, you see, with an enormous amount of gameplay logic to crunch on an enormous number of entities, and only one programmer with one mental RAM bank on which to make that all happen, Limit Theory requires both. Voila, FPLT.

~ Solving the Fundamental Problem of Limit Theory ~

While I've worked on a lot of areas of LT over the past two years (since the Dark Days), >95% of my effort has been devoted to solving FPLT. This has made for a very, very frustrating two years as I've bashed my brain against the hardest problem of my programming career. I've explored numerous solutions. Each prospective solution requires a tremendous amount of effort to even get to a point where I have a simulation large enough to know whether or not said solution will be viable (i.e., I have to build a large-scale, component-based entity simulation with AI to know whether a solution is both compact and performant enough to be an answer to FPLT). So far, the answer has been 'no' to each. Despite all of my accumulated knowledge of code, performance, etc., it's still far too difficult for me to simply intuit whether the prospective solutions will be viable, hence why testing is the only option. It's been a slow, painful process of trial-and-error.

I promised details, so let's talk about some of my concrete work over the past two years. I've seen posts implying that I haven't been working, and honestly, I can't let that rumor stand. I've been working entirely too hard to get no credit for it, so I'm finally ready and willing to pony up the gruesome details, even though it goes against my long tradition of feeding you all nothing but unicorns and cupcakes 🙂 So here it is...the good, the bad, and of course, the ugly. Put your gloves on.

First, naturally, there was an attempt to rescue the existing LT by amping up LTSL with a performance overhaul. A practical move at the time. It was a relatively fast failure. I optimized, I changed the way LTSL runs, I molded the memory access patterns from 'my RAM is crying' to 'it could run on punch cards!' Still, I could see that the numbers weren't going up. The gulch between the statically-compiled and intensely-optimized C++ and the runtime-compiled LTSL evaluation engine was too wide to make a dent. Despite my efforts, I'm a bit embarassed to admit that I wasn't ever able to improve LTSL's performance dramatically over baseline, even after blasting it with some of my best optimization cannons.

With the most practical option shot down, I switched attack vectors and tried what seemed to me the next most practical: splitting the C++ into smaller bits to make it more manageable. I split up what was a 'monolithic' engine, compiled all into one library, into component pieces compiled into different libraries (libltcore, libltrender, libltui, libltai, etc.); this was an attempt to increase both runtime efficiency and my ability to keep all code in RAM. This attempt, luckily, only cost me a few months, as I quickly learned that code is code, and the programmer RAM limit applies no matter how you divvy up the lines. Another solution shot down, another lesson learned.

I then moved on to a more dramatic change, recognizing that, clearly, the C++ core was simply too big. I was going to have to reduce. Thus ensued one of the most dramatic shifts in LT's development history, as I carefully plucked pieces from the existing codebase and brought them over to a new, 'minimal' C core library. The general idea was to do the really performance-critical stuff in C, do the rest in a still-fast but high-level language (side note: I say C because, by this point in my programming life, I had basically abandoned most C++ constructs, so moving completely to C was not a big issue -- C libraries are friendlier when it comes to linking with the outside world, which is what I was planning to do with respect to the high-level language). My language of choice? Python. It took quite some time, but I eventually engineered the salvaged 'minimal' core of LT, which was a very reasonable 20K lines, along with a cluster of (concise and easy-to-write) Python scripts that could leverage the LT core library for all of the performance-critical and gpu-related stuff. It was quite beautiful. Of course, I knew what I was getting in to: Python is slow. On the surface, it might not look too different from the old LTSL solution. But, unlike LTSL, Python has a massive ecosystem surrounding it. For performance, there's pypy, Cython, Psyco, Pyrex, etc. Much to my chagrin, none of them suited my needs (pypy looked promising, but simply didn't give a big enough speed boost). So I pursued a custom JITing solution. I wrote an intermediate-representation, an AST translator that took Python code to my IR, and an emitter that took my IR to C, which could them be JIT compiled in-memory and executed as machine code by the wonderful TCC. It was a beastly feat of code. In the end, it broke my heart when this solution also failed, not due to performance reasons, but because, as it turns out, compiling Python to a static language (or an IR intended for emission to static language) is indeed near-impossible. Too difficult for me, at least. My JIT worked for simple and moderately-complex logic, but it simply couldn't handle the 'meaty' gameplay logic of LT, as the problem of type inference and other fun things started to become intractable.

On the bright side, not all was lost with the valiant Python attempt. I did lose quite some time (perhaps on the order of six months) to it. From it, however, I had gained the minimal core onto which I have continued to build (with minimalism!) to this day. The C core will be part of the solution to FPLT. I now have that piece of the puzzle. For the other piece, the 'driver' that will control the core, I'm still searching.

That brings us up to the present. At this time, my current attack vector is twofold.

I've been building a solution involving LuaJIT for several months now and am nearing the point where I can do a feasibility test. While I've learned to temper my expectations and wouldn't say that I'm confident that LuaJIT will be the answer, I can say that it's by far the fastest scripting solution I've found. My initial tests, indeed, the only reason I began pursuing a solution in Lua (which wasn't really on my radar), demonstrated that LJ achieves incredible speeds on limited-scope performance tests, even nearing the speed of my own, hand-written C. That's not terribly surprising, since LJ is a genuine JIT, meaning that it's effectively turning Lua into assembly/machine code. It seems to be darn good at doing so. That being said, we'll see how it goes with a full-blown test. I have my reservations about Lua being garbage collected, and I fear that memory access, if anything, may make LJ infeasible. Nonetheless, LJ itself is a formidable feat of engineering, and even if it doesn't end up solving the second piece of the FPLT puzzle, I have a feeling it may still contribute somehow to the final answer (this has happened with so many other 'failed' ideas throughout the course of LT that these days, I almost expect a failed attempt to end up being useful in some way in the future).

On the other front, I've been building a solution that involves generating C++ via a meta-language based on Python. This would provide a means of performing a lot more of the game logic in ultra-fast compiled code without me having to write 100K lines. In order to get LT working in as few lines as I did previously, I had to use a HUGE amount of complex C++ trickery. While it meant far fewer lines to keep up with, it also made the code more complicated and, in a few cases, sub-optimal in terms of performance. With a meta-language, we can easily solve these problems: I don't care how much code is generated, I only care how much I have to write to generate it. So, for example, whereas setting up the component-based entities in the old C++ engine took several layers of advanced C++, making the component logic hard to understand (boy was this a nightmare with the 'market' component...), I can generate equivalent code in far fewer lines of simple Python. As a bonus, the generated code compiles and runs faster because it's not having to use trickery to reduce code size...I can get Python to spit out tens of thousands of lines in milliseconds, based on ~100 lines of my meta-language. This solution is only a few weeks old, and is sort of a 'nuclear' option in the event that the LuaJIT solution doesn't work out. I'm fairly sure that I can get this approach to work, because it's kind of brute-force. I'd rather be able to find a more elegant way, but if this is what it comes down to, so be it...above all else, I just want to get Limit Theory released at this point, and I'm willing to use whatever I have to use to get there. (By the way, this is totally differenet from the other solution involving Python. Whereas the idea there was to convert Python to machine code on-the-fly, the idea here is simply to use Python as an easier way to write / automate the writing of C++. Kind of like...writing the code...procedurally!)

So there you have it...the past two years of my life. Has it been shiny? No. Has it been as exciting as the first two years of LT dev? No. But the hard truth is that Limit Theory is an exceptionally-ambitious project, especially considering that we can't just brute force the development with a massive team and all the standard big-budget amenities. Yes, I was young and optimistic when I called it 'easy.' My mistake 😕 LT is a hard problem. At the center of it all lies FPLT, which encapsulates the problem of needing to build something complex with minimal resources. It's a solveable problem; of this I'm certain. The solution? No, of this I'm not yet certain, but, as I hope to have demonstrated by laying all of my attempts out on the table in detail, I really am attacking it with everything I've got. I can't sugarcoat this situation as I've tried to do in the past, because it just leads to disappointment, so let me be perfectly honest: I don't know when I'll overcome FPLT. I sure as hell hope that it's soon, because two years is already an exceptionally-long time to be beating one's head against the same problem. What I do know is that every failure gets me closer. I learn more about what works and (perhaps mostly..) what doesn't with respect to performance in large-scale simulations. I learn more about low-level performance both of static and dynamic langauges, which helps me to evaluate future solutions. I become adept with more languages, more technologies, hence have an ever-expanding arsenal with which to blast away at development problems (FPLT can only take so much DPS before it breaks. It's a tough tank, but every month my DPS output goes up. It's only a matter of time...) In the mean time, I continue to develop the LT core C library as much as possible to ensure that when I do come to the right solution, all of the underlying machinery is in place for me to quickly and easily plop the existing LT functionality into the mold of said solution.

Is anyone still listening?

~ Re-Establishing Communication with the LTVerse ~

Clearly, something needs to be done about my communication habits. Here's the good news: a large part of what's been causing me to not want to communicate with you all is, as mentioned above, the rather unglamorous nature of my work. I wanted to come back to you guys with guns blazing, yelling "YESSS LOOK AT THIS! AND THIS!! AND BETA IS COMING UP!" But I'm ready to accept that I can't work that way anymore. Showman Josh and Perfectionist Josh are mostly dead at this point, and I think you'll all be pleased to hear that Pragmatic Josh is now in full effect. At this point, my mentality on any given day is 'find the shortest path between where I am and LT being released. Follow it.'

So from this point forward, I will plan to use my Sunday evenings to write a dev log -- however brief, unglamorous, or unexciting it may be -- to inform you all of my work over the past week. I'm not yet sure whether I want to do this every week or every other week, so I'll have to start with it and just go with what feels best.

Again, I'm trying very hard to not make the same mistakes that I've been making with communication and end up disappointing you guys. To that end, I'm promising a regular but modest communication, something that will ensure you all that I'm still working to get LT in your hands without requiring as much of my time and effort as the daily dev logs, the monthly videos, RTB, etc. With FPLT I'm taking battleship-sized steps, but with communication we need to start back with fighter-sized steps 🙂

(Oh, and yes, this does count for my first log...I'm not going to post more of my life story today :P)

~ Gratuitous FAQ / Autointerview ~

I thought it might be interesting, if a bit strange, to ask myself questions from the perspective of forumers and squeeze some answers out of myself. In the event that someone actually does ask one of these questions, now I've already provided an 'official' answer. Maybe you will find it enlightening. Or perhaps just strange. Either way, enjoy

Q. Thanks for joining us Josh.
A. Thanks for having me, imaginary forum member. What can I answer for you?

Q. Well, I read your post. I honestly did. But all I really heard was 'code code code C++ Python code Lua code JIT beep boop mainframe.' So...what's going on with Limit Theory, you know, that GAME that I'd like to be playing right now?
A. Yeah...it frustrates me too. I don't enjoy working on the technical side of it all nearly as much as I used to; frankly I would much rather be tying off loose ends on the AI, zone control mechanics, simulation LODing, unstable wormholes mechanics, etc. But, as I explained, this problem must be solved before I can finish LT, and I would rather throw myself entirely into solving it than split my time between solving it and trying to write gameplay code when the platform for said code isn't yet a solved problem.

Q. So it sounds like you've made no gameplay progress then.
A. Not true, but it is true that I haven't made nearly as much gameplay progress as you would want from two years of work (see above: >95% effort dedicated to the big problem).

Q. Oh? So then, what part of the game has changed the most since we last saw it?
A. AI has progressed quite dramatically. The top-level AI action ('Action_PlayGame', heh) is much more fleshed-out than before, meaning AI players are capable of literally 'playing' Limit Theory to a greater capacity than before. There are still missing elements, mostly because of missing logic for actions that deal with higher-level concepts like war, research, and construction. There's still a good bit to do here, but, having written some AI now in both Python and Lua, I've gotta say that, if we can get a fast scripting solution to work, AI development is going to go much faster when resumed full-time!

Q. Cool. You mentioned some stuff in the post that kind of scared me and made me think you're basically re-writing LT. Is that the case?
A. Definitely not. I'm changing the foundation on which LT rests, but by no means have I torn down the building. As stated above, the 'core' pieces of LT, i.e., much of the actual 'engine,' is still present in the C library. GPU code is all present and doesn't require porting. As for gameplay code / stuff that used to be in LTSL, I've ported it enough times now to know that it's a quick task. I've said it before and I'll say it again: it's the ideas beneath the code that the majority of the time to come up with. Typing code is easy. Coming up with an idea that will make the code do something wonderful isn't. Very little is 'lost' in this process.

Q. Hrmmm....so then, you've got it rendering and such?
A. Yep, I've got it rendering under both the current attack vector (LuaJIT) and the older one (Python). It's not really a big task with the library in place.

Q. Sweet, so, screenies?
A. Don't...even...!

Q. But I... :3
A. It looks the same as what you've already seen. I haven't worked on graphics! Seriously, the graphics monkey is in the cage. Gameplay, yes. FPLT, very yes. Graphics, no. I literally haven't changed the LT graphics in two years. It's been hard for me to control myself like that, but yes, I'm ready to accept that the current graphics are absolutely good enough for release. LT 1.0 is going to look very much like the latest screenshots you've seen, except with the missing content filled in. No more 'new metal shader version 298.0'.

Q. Fair enough. I'm glad you managed to control the monkey. Speaking of monkies, when beta?
A. When I solve FPLT and steamroll the remaining gameplay content.

Q. Ugh. I hate this 'FPLT' thing. You know, now that I think about it, what if you just ... ? Wouldn't that work?
A. (Depending on nature of ...): No, sorry. / It's a good idea but I've tried it and it didn't work out. / Well, that's essentially what I'm trying to do. / Dear God, why didn't I think of that, you're a genius, FPLT IS SOLVE o/ *hands over bank account while weeping tears of joy*

Q. Okay then...back on-topic, why did you desert the forums?
A. I honestly didn't mean for it to become a 'thing.' It snowballed out of control: I just wasn't on the forums for a while, not for any particular reason, and then one day it was like a 'Josh is gone' thing, at which point I could have chosen to say "No I'm not," which would have pretty much done the trick. But instead I chose to give in to anxiety and was all "oh no, I'm gone!? Well now I have to come back with fireworks! :?" I really regret making that decision and letting it stagnate for so long.

Q. You should, a lot of us pretty much lost faith in you.
A. I understand. To be honest I can't say that I deserve more. All I would ask is that you give LT the benefit of the doubt in the sense that when it comes out, judge it as Limit Theory the game, not as Limit Theory the product of a guy who let you down.

Q. We'll see. What about Kickstarter though? I mean it's been even longer in the dark for them...
A. It's been a general pattern throughout development that I post more frequently to the forums than to KS. Historically, I've only put up KS posts when I felt that I had 'very substantial' material to post. As per above with the whole 'not a glamorous era in development,' I felt that I'd be letting everyone down with a text-based post, even if it's the best way to bring everyone up to speed. Once again, a regrettable choice made by Showman Josh, but now attempting to be set right by Pragmatic Josh.

Q. I like the sound of this 'pragmatic' Josh guy. Maybe he can finally get us a game?
A. Yes.

Q. Again, we'll see. I'm almost ready to dip my toes back into the water, but the truth is, you seem pretty good with words, yet have let us down quite a few times with those words.
A. Which is exactly why I've not sugarcoated this situation. Did you get the same 'thrill' reading all this that you did when I released an update video? Most assuredly not. But what I'm good at is raw honesty, which sometimes makes it hard for me when I honestly believe in my capability to do things at which I end up failing, or when the situation is honestly not so great. But I think you all, at this point, would much rather hear not-so-fun truths than nothing at all, which are the only two choices I've got. Notice the lack of glitter, unicorns, and grandiose promises in this whole thing!

Q. I certainly noticed the lack of glitter. Speaking of which, why on earth did you not provide a TL;DR for what may be your most obnoxious wall of text ever?
A. I considered it. I even wrote a TL;DR. But I realized very quickly that doing so was completely counter-productive to the point of this whole post. I took a lot of time to try to explain the current state of Limit Theory development; to try to get everyone to understand precisely what I'm doing from day-to-day right now and why it's necessary. If someone truly wants to understand it, they need to read this post. If not, then 'LT is not kill' should suffice. I can't explain it all and make my explanation super-compact. I could do that back when everything could be explained with images or videos. I can't do that at the moment.

Q. Indeed. Well, I'm rather exhausted from reading, and it's apparent that you're not going to give me screenies, so I'll end it here. Thanks for the answers, and good luck with LT. I look forward to that (semi)weekly log.
A. Thanks for listening, imaginary forum member.

<3 Josh


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

Here is some videos based on some developer info from the limit theory forums:


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

Limit Theory PAX 2018 Demo

Finally LT looks like its coming together nicely... Yay!


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

Short dev video summary, the author does briefly rant near the end with the lack of real gameplay videos from the devs. Limit Theory is long past the promised release date so I can definitely feel the pain of the backers. In a way I am glad I didn't back this project because it has been 5+ years 🙁


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

Was doing some reading on the LT forums and looks like there is now an actual team behind LT and they are striving for a end of 2019 release of the final game. If this is the case that would be roughly a 7yr development cycle ... Wow!

I definitely glad this project has kept going and there is a release window for the game. I am just glad I didn't kickstart this game, I would have been frustrated like I have been with Star Citizen.

I hope maybe before Xmas we get a video of the progress to date.


ReplyQuote
IronHound
(@ironhound)
Warrant Officer Registered
Joined: 14 years ago
Posts: 337
 

Umm. The forums just mentioned Josh being on his own again...

...so...


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

Oh do you have a link for that Iron Hound, I must have overlooked that. I was just reading a comment that a moderator wrote this year. That would suck if it is true, not saying that one person cannot make a game. But it definitely impacts delivery and expectations a lot.

Personally if that is the case, Josh should really make a solid mod/scripting engine for LT and let the community just make the content and just work on the engine and backend mechanics and economy generator.

Almostpilot, I haven't given up on Star Citizen. I just have scaled back my expectations, they do put out quarterly releases so you can see progress. But I hate the fact they are feature creeping the hell out of the game and making it just drag forever. I usually don't play alpha games and I can see I only walked around in the hanger and flew a little back last year in game and I wasn't too impressed with the lagfest that was SC. I will load it up at christmas and I hope I can see the difference from last year 😉


ReplyQuote
IronHound
(@ironhound)
Warrant Officer Registered
Joined: 14 years ago
Posts: 337
 

Where have Adam and Lindsey run off to?

To the devlogs where its explained

Adam to Blizzard and Lindsey to unknown pastures

^ This is post #9. His 'team' moved on. In that same thread linked. If you could merge these posts that would be great.

Again, I have to reiterate, if your 'team' leaves after a few short months, it says alot about the project and where its going.


ReplyQuote
IronHound
(@ironhound)
Warrant Officer Registered
Joined: 14 years ago
Posts: 337
 

I can't find anything definitive, but here's what I've gathered.

https://www.kickstarter.com/projects/joshparnell/limit-theory-an-infinite-procedural-space-game/posts/2184159

Talks about someone leaving the team.

http://forums.ltheory.com/viewtopic.php?f=2&t=6573

Was from July and mentions Josh being alone again.

This coupled with a quick perusal of recent dev blogs where Josh goes from "we" to "I" pretty well paints a picture of Josh being on his own again. I think it really boils down to one simple fact. Josh has zero desire to produce a game, and every desire to tinker behind the scenes for decades. Thats just my opinion however.


ReplyQuote
DarkOne
(@sscadmin)
Supreme Dark Emperor Admin
Joined: 8 years ago
Posts: 7867
 

Ugh, thanks IronHound. Josh was in that thread in Aug. So it happened fairly recently.

Well I guess only more time will tell with LT to see if it might make its 2019 release....? I did enjoy last year that demo video of the ship random generator it was slick. LT definitely has some tech behind it, but it means nothing unless you get it into peoples hands 🙂


ReplyQuote
CaptainKal
(@captainkal)
Commander Registered
Joined: 7 years ago
Posts: 750
 

There goes the neighborhood. Without commenting further:

The End
Posted by Josh Parnell (Creator)
It is with a heart of lead that I write this announcement. Not in my darkest nightmares did I expect this day to ever come, but circumstances have reached a point that even my endless optimism can no longer rectify. I can not finish Limit Theory.

After six years, I am finally at the end of my means. Financially, I am beyond the initial investment and have exhausted most of my personal savings. But significantly more troubling is that I am entirely out of energy -- emotionally, mentally, even physically. Every year that passes sees me becoming more desperate to make good on the dream with which you all entrusted me, but each such year I grow less and less capable of doing so as my mindset falls further away from that bright, beautiful hope that powered me from the beginning. I am not what I once was.

Despite what felt like an incredible amount of progress in the last year alone, Limit Theory remains frighteningly far from feature completion. It is my own fault, for having underestimated at every turn the amount of work that goes into such a creation. It is my own fault, for having overestimated my own cognitive resilience and for believing that no number of setbacks would ever inhibit my ability to bring a passion project to life.

I don't know how to make this right. For years now, I've been running on pure loyalty to you all -- it has been quite a long time, if I'm honest, since I was actually working from a place of inspiration -- yet even with the purest of intentions and the deepest desire to honor my commitment, I find myself unable to bring about miracles. No matter how hard I try, it's not enough to bring LT to fruition, and this pattern of failure has evicted all self-confidence and hope from my mind, leaving only doubt, anxiety, and despair. Some days I think to myself "how absurd that a game should make me feel this way," and I realize just how unfit I have become to build a source of joy. I wanted so, so badly to make you all proud. To bring you all joy. There are no words to properly convey how sorry I am that I have failed you all.

I imagine I could go on and on with this gushing of negativity -- the years have left me with no shortage of it. But I don't think much good will come of it. Those of you who have followed the project closely, you already know how much I have put into it; how I have given 110% of myself. Trying isn't the same as doing, so I don't expect any thanks for it, but I hope you all do know just how hard I've tried. I've simply got nothing more to give.

So, what now?

Well, I will prepare the source code for release. It's not a working game, and in my frenzy to get things working I've left huge swaths of code in a half-refactored or half-complete state. But releasing it is the least I can do. I don't imagine it will be of any use to anyone, other than as a monument to a failed dream. Perhaps those who are interested in game engines will glean a thing or two from the engine, as it is a fairly solid piece of engineering, much more solid than the Lua game code.

For the moment, though, I wanted to get this off my chest as soon as possible. It has been the most painful, difficult decision of my life, and I'm sure that there will be no shortage of blowback. But I simply cannot continue to destroy myself in search of a feat of which I am not capable. When I began this project, I felt that anything was possible. Here now, at the end, I must swallow the painful reality that: I, too, am human. I am limited by time, I am limited by finances, and I am limited by mental & emotional stamina.

One last time, I would like to thank everyone who contributed. From the bottom of my heart, thank you for believing in Limit Theory. Thank you for giving me the opportunity to try for something wonderful. One last time, I am so sincerely sorry for having let you down. I hope, at the very least, that some of you have enjoyed the ride as I've pitted my brain over the years against one challenge after the next.

I'll be in touch when I have readied the source code for release.

~Josh


ReplyQuote
Blah64
(@blah64)
Senior Chief Registered
Joined: 7 years ago
Posts: 56
 

yep, that makes more sense.

I saw him at PAX South and the game looked pretty rough still.
I didn't understand how he still had funds for himself, much less for the team with him or to afford a booth at PAX.


ReplyQuote
Geraldine
(@geraldine)
Rear Admiral Registered
Joined: 7 years ago
Posts: 3457
 

A sad day when a talented young man like that has to give up on his dream. 🙁
I don't know but perhaps this isn't the last we have heard of Limit Theory. There is a lot of major development houses out there that are keen to get a slice of the space sim pie. Maybe one of those could take up and build upon what Josh started? Stranger things have happened. 😉


ReplyQuote
Page 5 / 8