Return to “Announcements”


Re: The End

The guy spent the last…six years? of his life on this project; you can at least allow him to choose
My point is if he is no longer plan to continue to work on the game for financial reasons or/and health problems and there will be no one to maintain the repository and accept pull request and build the source and share the binary so people can play the game (even if it not complete) without knowing how to compile it for them selfs then MIT is the best way to go if Josh is about to put the source out there and walk away. Otherwise, 6 years of work is wasted completely. I've seen this happening to so many great projects only because the devs didn't want to give away years of hard work but also never come back to it to continue.

But I have no way to know that what he plans to do with the source other than he is about to share it, so my apology for my words there.
Hope for the best.

Re: The End

0111narwhalz wrote:
Fri Dec 07, 2018 6:31 pm
ddabrahim wrote:
Fri Dec 07, 2018 5:17 pm
The only thing I don't understand, why Josh was developing a custom engines from scratch?
There are so many engines and frameworks out there that could have been perfect.

I may be wrong, but I got the impression that existing, publicly available engines simply cannot do what needs to be done for a game as ambitious as LT. Josh's earlier engine iterations couldn't do it either. We thought the C-Lua iteration could, and it looked like it all the way up to the end, but something went wrong. I don't know what it was, but I hope for the community's sake that it wasn't a repeat of the FPLT.
Not really because it was "ambitious", but more because it had entirely different needs and there weren't any game engines out there at the time that could remotely handle what he wanted.

The tl;dr is simply that what Josh wanted was so niche that there wasn't a game engine out there that caters specifically to what he wants to do. And what does he want to do? Pretty simple: He wants a very large number of objects, powerful AI, lots of auto-LoD, procgen tools, and pretty texture graphics. In exchange for this he was willing to mostly drop physics, high-poly counts, advanced lighting and shadowing, and decent sprite handling.

This is the exact opposite of what most developers want. Your average developer is content with (at most!) a couple hundred objects loaded in at a time, very basic AI, little to no LoD, no procgen. They do, however, want lots of physics, high poly counts, and advanced lighting and shadowing - and especially decent sprite handling, because most newer developers find 2d much easier to work with than 3d, making it a more popular option overall.

What Josh needed simply didn't exist. It's no surprise he had to write his own engine. Star Citizen is trying to do the same thing and look at what their team of hundreds has managed to do with CryEngine. (I mean, just look at that framerate!) As a single coder, Josh needed high accessibility... and engines with high accessibility are typically a lot slower... unless you designed it yourself, of course. ;)

Please keep in mind that Unreal Engine 4 didn't come out until 2014 (two years after the KS) and Unity was a sluggish mess back in 2012. CryEngine 3 had terrible performance too. These are probably the biggest factors in "why did Josh not go with a ready-built engine", but assuming we ignore that and ask "Why would someone make a custom engine for LT today":

(Grain of salt before I begin: this is all hearsay. I've not personally used any of these engines. I've just talked to people who have and gotten their opinions over the past... six or seven years. Some of it may be slightly outdated.)

  • Unity: Unity is written to be as generalized and accessible as possible: the "general case" engine. This means it's sacrificed other things to get there, such as performance and flexibility. Take a look at KSP for a decent example. If you make a single rocket ship too large, things start to act... strange. The framerate can slow to a crawl, too, especially if you're running on a lower-end computer. And the graphics? Certainly not anything to write home about. While Unity can be pretty, it doesn't do "pretty" and "performant" at the same time, and if you're trying to write a lot of AI code in addition to high use of the physics engine... haha, nice try sonny boy, but it ain't gonna fly. (Not to mention thousands of moving objects at once! KSP can struggle with the parts of a single spacecraft.)
  • CryEngine: Poor documentation, lack of learning materials, clunky architecture for basically everything, archaic technical art pipeline by modern standards. It does one thing really well: Outdoor terran environments. Everything else isn't worthwhile unless you really want to pull it to pieces, and even then you're in for an uphill climb. Taken a look at Star Citizen recently? Even with a single station at minimum graphics it can pull my FPS down to < 5, and they have a team of hundreds. A single guy making the same thing isn't gonna happen.
  • Unreal Engine: Absolutely not something you want to use if you're a single coder (aka Josh) because there are so many facets that it takes a team tackling different areas. Very steep and lengthy learning curve. Game data tends to be bloated, so games using Unreal tend to take up a lot of harddisk space; procgen really isn't something they were going for at all, especially not procgen textures - lighting needs to be baked as well if you have any sort of attachment to framerate (making it much more unsuitable for Limit Theory).
  • Godot: Very limited use and difficult to find tutorials of any sort. Render is written specifically to be compatible with much older OpenGL and web support; graphics engine is a lot more limited than other engines. Multipass rendering (essential for LT no matter how you slice it) requires some difficult and costly hacked-together solutions. Josh would probably have to custom-write/rewrite a large portion of the engine just to make things look half the way he wanted - and given the tiny community and lack of documentation, this is a very tall order. The Kickstarter would probably never have happened in the first place.
  • Monogame: Best at 2d. Platformers, top-down roguelikes, and isometrics are what it does best at. With a good deal of effort, you can get some 3d going too, but support for this is very limited. Non-windows IDEs are difficult to use, aren't free or open-source, and can do weird things at times. Very little documentation. Tiny community.
  • Urho3D: Little documentation, and the engine code is poorly commented. Any changes you make require it to be recompiled through CMake or similar. Community so small you're not going to find anything to get it to work at all. It was "inspired by" Ogre, which is an engine designed purely as a renderer and had poor performance on large sets of objects to begin with, and struggles with things like complex AI. Obviously not ideal.
  • NeoAxis: Only on Windows. Zero Mac or Linux support at all, last I heard. The community is dead and gone, and never coming back: the creator of NeoAxis silenced them (yes, destroyed his own community) back in 2016 because he couldn't handle criticism (even constructive). There have been no updates of any kind. NeoAxis might as well be considered dead. Apart from all that, and the documentation, it's terrible at things like AI to begin with.
  • Xenko: Haven't even heard of it. With a precursory google search I can't find much in the way of documentation or even people talking about it. Doesn't look like something oriented towards what Josh wanted to begin with anyway.

As to "where Josh went wrong" at the end that made him start redoing the engine: As I see it, it's pretty simple, honestly.

Bigger grain of salt than the rest of this post! I have no direct confirmation of exactly what went on, and only able to assemble a picture of what happened based on what I saw in the push/pull logs and the conversations I'd held with both of them much earlier this year.

Adam and Josh are two entirely different types of programmers. Josh is a graphics programmer. Adam is an engine programmer. Josh just wants things to go fast, even at the expense of physics - he even turned off physics collisions entirely for most of the dev videos! Adam, however, approaches it from a different standpoint: to him, physics are important. Second, Adam likes to use pre-built libraries and tools, whereas Josh wants to make his own. This was a common theme throughout LT's production cycle.

Some of the first major stuff Adam did with Limit Theory was all about engine work. He found different resources online and tried putting them into LT, with the goal and making collision detection work "decently enough". And it did! Unfortunately, collisions were still... strange. Collision detection does not a physics engine make, and if you hit an asteroid, there's no telling what direction you would've bounced off of it. Without a physics engine, you can definitely tell when one object collides with another object (for example, shooting a weapon at an asteroid), but if you want to model a ship hitting an asteroid, or two ships colliding, or semi-realistic docking? You need a physics engine too. This is something that I imagine bugged Adam a fair deal, seeing as he's an engine coder.

Enter the Bullet Physics Library: a modular, pre-built physics engine that you could plop down into the custom engine of your choice. It's built to be generalized and accessible, and, as is a common theme in this post, generalization and accessibility do not play well with performance. Adam started implementing it back in... June? July? Somewhere around then, I think. About that time most other forward progress on the game seemed to grind to a halt. I don't know anything specific about what happened, so again - grain of salt - but I get the feeling that Josh found that Bullet Physics played havoc with LT's framerate - especially with the large number of ships and asteroids that Josh wanted to have.

And what does Josh do when he finds out the engine is running too slowly for what he wants? He doesn't change his requirements to suit the new restrictions. He refactors.

Unfortunately, I've not gotten to hold a conversation with him in a long time, so I can't do much more than speculate about what went on between him and Adam, and why Adam left. I don't think speculating about that sort of thing will help anyone.
Have a question? Send me a PM! || I have a Patreon page up for REKT now! || People talking in IRC over the past two hours: Image

Re: The End

kostuek wrote:
Sat Dec 08, 2018 1:46 pm
So this is kind of an Adam's fault now? Sorry, but that's pretty cheap.
Not remotely what I said or meant. :P Please don't misunderstand: I am not pointing fingers here. I'm only trying to answer the question of "Why was Josh refactoring again?" After all, Josh himself said that the reason he stopped was because of financial difficulties.
Have a question? Send me a PM! || I have a Patreon page up for REKT now! || People talking in IRC over the past two hours: Image

Re: The End

This is a thread for saying goodbye to Limit Theory, so I'm not going to say all the things I'm thinking. I said my goodbye upthread.

All I will say here, with respect for Josh as a person, is that I don't think the problems that ultimately scuttled this project were technical.

Limits do exist, because nobody's perfect.

Re: The End

Talvieno wrote:
Sat Dec 08, 2018 11:27 am

And what does Josh do when he finds out the engine is running too slowly for what he wants? He doesn't change his requirements to suit the new restrictions. He refactors.

i think the biggest disappointment of all is that something which started on the premise of "Limits are universally self imposed" ended with the conclusion that "Limits exist regardless of how much effort we put into overcoming them."

To be fair, I don't think the limits which ended up being the final straw were the same ones to which most of the effort was allocated. Maybe there's a lesson in that.

Re: The End

Talvieno wrote:He wants a very large number of objects, powerful AI, lots of auto-LoD, procgen tools, and pretty texture graphics. What Josh needed simply didn't exist. It's no surprise he had to write his own engine.
I was trying to think of any title that involves a lot of moving AI objects on the screen that powered with a public engine and can't find anything out of my head. What he was trying to do was really ambitious but I don't think it was necessary.

It is very similar to what Egosoft is trying to do with the X series and what they have done to make the universe feel alive is to make each station produce something but in order to produce the station does need resources and equipment that need to be produced by another station or mined and actually delivered by either an NPC or you. If they run out of resources or equipment is damaged that can be damaged by bullet or collision, production stop which affects the entire economy depends on the resource the station is producing and trade routes because if the station does not produce they also not using resources so they stop buying. A very simple way to get a virtual economy going that you can influence. And then, in X games we have only a few actual AI ships that doing their own business and moving around with purpose which is not scripted, they choose what they do and why. Just like you, they can deliver cargo, trade, do mining and do missions which can be to fix something, find something, deliver something and they go and actually pick the mission and do it. If you know which ship it is, you can influence the outcome by destroying the ship or stealing the cargo..etc. If you pick a mission you may find your self an AI have done the job before you because missions are not exclusive to you, it open to all AI also and missions are also generated based on real events. If something need to be fixed, it is need to be fixed because damaged by a bullet the police or the pirates shot for example or due to collision. And there is a few NPC that is scripted like police, smugglers and pirates which have a single and simple purpose only so they don't actually need an AI and the rest is a mindless NPC just moving around on a path to fill the space some may have illegal cargo to randomly trigger the police when they scan the ship or valuable cargo to trigger pirates when they scan the ship to add some more life to the scene. Of course you can also scan them and choose to steal cargo, steal ship..etc but they are mindless basically, just moving around. And it works, feels alive without simulating hundreds of AI ships.

Regarding moving objects, collision and physics, in the X games most of the time you are the only one who moves on collision, you just can't push another ship or asteroid away and again it works because other ships are moving, when you hit them they stop, maybe start floating a little but I don't think any physics would be involved and only you move away. Yes not realistic but who cares and the asteroids are way bigger than your ship so not to push them away when you collide is also ok. Asteroids also don't rotate and float around, they are static just sit in one place but again, it feels okay, I look at them only as long I do mining or travel and I'm moving when I do that so the fact the asteroids don't move is really not that important.

As I'm playing an X game I really don't feel the need to simulate hundreds of moving objects and AI in order to feel the universe around me alive. Simulating an entire universe without limits was not what made me interested in Limit Theory but the atmosphere the elegant simplicity of the procedurally generated stations and ships and nebulas. Just looks wonderful on the videos and I was really hoping to experience that. And again, a living and breathing economy and universe around me was also really interesting but I'm certain the simulation of hundreds of moving AI objects around me and the entire universe wasn't necessary to achieve this.

I also remember in a video he was mentioning he did want to implement procedular story, to simulate the evolution of an entire universe for hundreds and thousands of years and when you start the game and see a station, the station will be there not because of a random number but because a faction needed in a war hundreds of years ago to supply ammo. I mean, it sounds truly exciting but cmon we are talking about a game meant to be done years ago for dual core CPU's (this is what I had when I discovered LT) . It was not simply ambitious but insane, I just really don't understand what he was trying to achieve. He was trying to create life? Seriously guys, no offence but honestly I think Josh was playing god. It was not a game for him.

Anyway, I really hope if the game goes open-source, someone will take the procedural ship, station, nebula generation and make a less ambitious game out of it with real AI driven economy as Josh wanted but on a more realistic scale.

Re: The End

ddabrahim wrote:
Sun Dec 09, 2018 4:36 am
Talvieno wrote:He wants a very large number of objects, powerful AI, lots of auto-LoD, procgen tools, and pretty texture graphics. What Josh needed simply didn't exist. It's no surprise he had to write his own engine.
I was trying to think of any title that involves a lot of moving AI objects on the screen that powered with a public engine and can't find anything out of my head. What he was trying to do was really ambitious but I don't think it was necessary.
Hate to say it, but it *was* necessary. Why?

Because that's what the premise of the project was. A lot of the issues you have trouble with are ones that were specifically addressed and were specifically *the* selling points in the Kickstarter.

* TONS of ships in a battle at once
* Able to work on low system requirements (which also is why he needed his own engines since almost all the ones you listed were not able to provide for bullet point above while on low system reqs)

As for X, he SPECIFICALLY, didn't want to go the route of using a high-level scripting language in order to preserve as much speed as possible.

Ultimately, any gripe you have with why things were done a specific way, it's all documented somewhere in the forums. This statement isn't meant to be a cop-out or mean to send you on chasing down answers. All I'm trying to say is that at this point, there are no new questions. And try to believe me when I say that we've gone over it all before.

If you want to ask any question that has decent merit, the better question is; Why didn't he switch tracts once this one started showing it wasn't going to pan out? Losing the low system requirements and specific capabilities that his engine would provide would have definitely helped, but I think by the time that was on the table, it might have already been too late.
Early Spring - 1055: Well, I made it to Boatmurdered, and my initial impressions can be set forth in three words: What. The. F*ck.

Online Now

Users browsing this forum: No registered users and 1 guest