Improbable: enabling the development of large-scale simulated worlds(cdixon.org)
cdixon.org
Improbable: enabling the development of large-scale simulated worlds
http://cdixon.org/2015/03/24/improbable-enabling-the-development-of-large-scale-simulated-worlds/
9 comments
[deleted]
The post is a bit dishonest regarding prior funding and risk.
http://www.theguardian.com/technology/2015/mar/24/andreessen...
http://www.theguardian.com/technology/2015/mar/24/andreessen...
> Improbable was started three years ago […]
That sounds like a wonderful project. Alas, not a lot of details on their website/blog. I found this talk on their Facebook page:
https://youtu.be/1fpaoKLxSE4
That sounds like a wonderful project. Alas, not a lot of details on their website/blog. I found this talk on their Facebook page:
https://youtu.be/1fpaoKLxSE4
Any idea how this works, what technologies, ideas they are using for their spatial logic?
Another project with similar ideas is http://www.paralleluniverse.co/ . Wonder how it compares ?
(pron you around, have you heard of Improbable before?)
Another project with similar ideas is http://www.paralleluniverse.co/ . Wonder how it compares ?
(pron you around, have you heard of Improbable before?)
I do not know the details, but I do have experience designing spatial game/simulation engines like this and a lot can be inferred from what they have shared. They talk about Scala.
Spatial simulations like this are pretty simple to implement on a custom basis, though I would do it differently than paralleluniverse.co. The dynamic resource scheduling on the servers is the hard part. When I designed simulation systems, the code for the spatial part was semi-custom every time because there was little overhead for that part. Simulations/games use cases allow you to take a lot shortcuts and liberties with the spatial processing and representation that do not work for, say, spatial analytics of the physical world using real-time sensor data.
Dynamically balancing real-time spatial skew under load and failure is tricky. This is a problem that has been solved by a few people before but it is not a trivial piece of engineering and is not really found in the gaming world. The seamless nature of the logical spatial world is a necessary side-effect of how you solve the dynamic rebalancing problem while the system is fully online. That said, it is much easier to implement for a game engine use case than the general use case because the load characteristics are more predictable.
It will be more interesting to see how they make money. I looked at starting a company doing exactly what they are doing a few years ago, we had all the tech for it, but no matter how we looked at it the scalability of the revenue model was pretty suspect. I do wonder how they plan to address that.
While they speculatively suggest using it for more traditional simulation use cases, this type of technology has relatively little value there for reasons somewhat orthogonal to the technology itself (something that is not obvious from the outside looking in).
Spatial simulations like this are pretty simple to implement on a custom basis, though I would do it differently than paralleluniverse.co. The dynamic resource scheduling on the servers is the hard part. When I designed simulation systems, the code for the spatial part was semi-custom every time because there was little overhead for that part. Simulations/games use cases allow you to take a lot shortcuts and liberties with the spatial processing and representation that do not work for, say, spatial analytics of the physical world using real-time sensor data.
Dynamically balancing real-time spatial skew under load and failure is tricky. This is a problem that has been solved by a few people before but it is not a trivial piece of engineering and is not really found in the gaming world. The seamless nature of the logical spatial world is a necessary side-effect of how you solve the dynamic rebalancing problem while the system is fully online. That said, it is much easier to implement for a game engine use case than the general use case because the load characteristics are more predictable.
It will be more interesting to see how they make money. I looked at starting a company doing exactly what they are doing a few years ago, we had all the tech for it, but no matter how we looked at it the scalability of the revenue model was pretty suspect. I do wonder how they plan to address that.
While they speculatively suggest using it for more traditional simulation use cases, this type of technology has relatively little value there for reasons somewhat orthogonal to the technology itself (something that is not obvious from the outside looking in).
Very interesting stuff. Thanks for responding.
I've thought about this stuff, not as much as you, obviously.
But wonder what kind of shortcuts do you mean. Perhaps that a game world is not necessarily completely uniform and entities are clustered in hubs/plazas/cities rather than say an array of sensors that might be distributed uniformly. So then the world is really a graph of large nodes and edges are portal betwen them.
I guess for a uniform static distribution it is easier as can pre-divide the world into a grid and each server is reponsible for an area. But if distribution is dynamic it will sort of be based on some kind density or clustering. Like say during a particular time a lot entities start gathering in one place (a virtual sporting event) so then there would be a lot of small cells with a server responsible for each cell.
I've thought about this stuff, not as much as you, obviously.
But wonder what kind of shortcuts do you mean. Perhaps that a game world is not necessarily completely uniform and entities are clustered in hubs/plazas/cities rather than say an array of sensors that might be distributed uniformly. So then the world is really a graph of large nodes and edges are portal betwen them.
I guess for a uniform static distribution it is easier as can pre-divide the world into a grid and each server is reponsible for an area. But if distribution is dynamic it will sort of be based on some kind density or clustering. Like say during a particular time a lot entities start gathering in one place (a virtual sporting event) so then there would be a lot of small cells with a server responsible for each cell.
I first heard of them a couple of months ago. I have no idea how different/similar our technologies are. Almost all of our stuff is open source, though...
> But it is still difficult to write software that makes efficient use of this abundant computing.
Really? I'm curious. I would think that there isn't much simulated worlds in games because 1) it costs a lot to produce content for such worlds 2) most of the time it's kind-a useless for the gameplay anyway 3) when it's not, it requires actual simulation ideas which are hard to find and develop. In short, "it's difficult to use the available computing resources" would be the least of the problems I think. Is there a game out there using their tech?
Really? I'm curious. I would think that there isn't much simulated worlds in games because 1) it costs a lot to produce content for such worlds 2) most of the time it's kind-a useless for the gameplay anyway 3) when it's not, it requires actual simulation ideas which are hard to find and develop. In short, "it's difficult to use the available computing resources" would be the least of the problems I think. Is there a game out there using their tech?
Players are the ultimate spanner in the works. Ultima Online famously had lofty ideals about simulation, particularly of ecology, which were abandoned when players were introduced and they promptly murdered everything.
This looks interesting from the point of view of not having to roll your own dynamic spatial load balancing and DB backend for an MMO. There's not really enough information around to know what particularly is unique about their implementation other than they are licensing it to other developers.
The game using it with the most public facing information is Worlds Adrift by Bossa Studios.
This looks interesting from the point of view of not having to roll your own dynamic spatial load balancing and DB backend for an MMO. There's not really enough information around to know what particularly is unique about their implementation other than they are licensing it to other developers.
The game using it with the most public facing information is Worlds Adrift by Bossa Studios.
The realistic economy of UO failed pretty much immediately as well. NPC shop keepers kept actual hours and would only buy/sell things as they needed. This didn't go over well with the newbie who just sewed together 5000 skullcaps and needed to sell them in the off hours.
I agree that there isn't these things now, but I think of this as an enabling technology which can gateway us in to new things.
As someone who is working on an artificial life simulation, I'm drooling at the chance to use this.
Sounds similar to Lucidscape ( http://lucidscape.com/ ) which is planned to be open source and have run a test simulation with 10 million entities on 828 servers.
"Getting the system to work at scale under real-world conditions is a very hard problem that took the Improbable team years of R&D."
Great, it's working at scale? Okay, where can I go join the other million people playing something powered by it? (I'll go easy and assume that scale = 1/10 of WoW MAU)
They're hardly the first MMO middleware company, but they're definitely the first to receive $100M of funding.
Also don't understand why people keep talking about "parallelizable", when the real issue is latency and accuracy of simulation at scale.
Great, it's working at scale? Okay, where can I go join the other million people playing something powered by it? (I'll go easy and assume that scale = 1/10 of WoW MAU)
They're hardly the first MMO middleware company, but they're definitely the first to receive $100M of funding.
Also don't understand why people keep talking about "parallelizable", when the real issue is latency and accuracy of simulation at scale.
[deleted]
congrats, their way of hiring is pretty slick. Well done.
I had a crappy experience with their hiring. After delaying my application for months (while they worked on a 'standard test'), they eventually sent me a woeful programming task ("implement a single function in a language of your choice and describe how/why you implemented this way").
I did so, and submitted it. They then emailed me back I had been rejected without any feedback at all, and didn't send me any when I asked for some.
I did so, and submitted it. They then emailed me back I had been rejected without any feedback at all, and didn't send me any when I asked for some.
A year or so later, they'd gotten actual offices and had become something of a phenomenon. People were quitting Google to join them. A pretty famous game developer (creator of Day-Z) was in their office working on his next game. It seemed they'd managed to reach their ambitious technical goals, which was really, really strange and unexpected, but it still didn't click with me that they were doing well, and they were among the most rapidly growing companies in London. I liked the people a lot however, and continued to hang around their offices on Friday just to chat, taking very little interest in their technology.
No point to this story, just that spotting a great company can be hard, even when it's right under your nose. Even more so when it doesn't fit your mental image of what a great company should look like (i.e. not in London, not making video games, etc.)