New tech - RFC

Started by
15 comments, last by Cornstalks 12 years, 1 month ago
You might look into Virtual Private Servers or adapting Omega to cloud-computing architectures. For relatively little money you could at least do a proof-of-concept where you can scale up and load-test. Many providers have fast backplane networks for inter-server communication. VPS is typically sold month-to-month or on longer terms, but many cloud computing platforms are stictly pay-what-you-use -- so you could spin up a couple dozen large instances inside of a few-hour window if you wanted. Cloud processing also often has dynamic provisioning, which it sounds like Omega could tie into.

throw table_exception("(? ???)? ? ???");

Advertisement
Lol don't try to judge a tool just for the graphics of its demo. Irrlicht can be very powerfull as many other engines. And your OMEGA demo is great. If you are really going to have all that features, that will be the most innovative game engine ever. Pepole just spoken about the chance of distributed games, but you were already writing a distributed game engine ;-) great great new keep working on that. Of course is not scalable to other non-window machines (so will be hard to see it on linux or mac for now right? if not impossible).

Peace and love, now I understand really what it means! Guardian Angels exist! Thanks!

Ravyne:

I have a VPS and I tried running omega on that. All the amazing things omega does is only possible with a low-latency network. It requires dedicated machines or the whole thing poops out. It took two dedicated servers (hosted by voxel and the most I can afford). Thanks for the suggestion though!

DemonRad:

Wow! Finally! Now I know there are indeed people out there who can see the worth of the engine despite the lack of a good rendering side!

I really needed that encouragement, thank you. Now where's the rest of you all?

Of course there's still the obligatory "if" in there. I do need to prove it will scale up like I say. I hope I can.

One interesting note about scalability -- and I think this may indicate that omega is inherently parallel -- is that I only have 2 machines (8 cores) to run my cluster, but even running 16 nodes (2 per core), I see each node using 1/2 the CPU than they did with an 8-node cluster.

I'm an inventor who can code, not a coder who can invent -- so I'm not an expert in anything, least of all cluster computing. However, instinctively, I feel that having more nodes than cores and still seeing it scale up is a good indication that it's massively parallel.

(Edit: Missed your last question, here's the answer:)

Portability of the client is very high, actually. I haven't tried it yet since I can't handle rendering in Xna, let alone OpenGL or whatever else. However, the omega libs are all pure CLR assemblies. Only Zmq and Xna aren't pure. Zmq is server-side only, the clients use normal sockets, so that's not an issue. And Xna would be replaced in a port (or used because of portability, I dunno), so in the end, Omega itself is 100% pure managed assemblies.

I've been looking around, and I found something called "Mono". That makes porting .Net relatively trivial. In fact, I've done Android development, so I'm now looking at "Monodroid". If I could get help with the rendering on android part, I could port omega to android. Also, monodroid lets you build for iOS too apparently.

Since omega uses so little of the client cpu, the demo I have now on PC would easily run on a phone/tablet. I'm still looking into it (I'm just one man, after all), but it looks like targeting Xna initially and using .Net managed code was a good plan for the portability ease.

If the question was more about distributing the load to Mac/Linux -- that tells me I'm not explaining omega very well at all. Omega doesn't ship work to the clients. If anything, it ships the work from the clients. The cluster is a tight group of identical machines. As I said, the omega client is using less than 1% of my CPU. Clients connect into the cluster and they can share the game space with other players -- and games can benefit from all the other cool stuff omega does.

Keep it coming yall! Encouragement, questions, or comments. I'm eating it up!

Cheers,
Dave
I must admit, I'm not asking out of purely academic interest. I have a quite advanced planet renderer (there's been about a year's work since the video), and I'm sort of looking for something meaningful to do with it smile.png

You cleared up some of the points that were mentioned on the website, but I still don't know what services Omega provides.

I assume it provides per-player visibility determination? Does it provide distributed physics simulation or collision detection? Does it provide persistent storage for player attributes? Does it provide a framework for user authentication and account management?


Now, I can't prove that this system will scale up like that. I can only say that I've tested on two low-end xeon machines, and run 2/4/8/16 node clusters. I can say that omega scales up perfectly, and the overhead is too small to detect.

You have to understand, without a better idea as to your simulation architecture, I am a little skeptical of this claim.

For a heavyweight simulation, scaling to 16 nodes is not too dificult, but scaling into the hundreds/thousands of nodes is a whole other ballgame.

If however, Omega is effectively just a distributed spatial partitioning structure, with a little bit of visibility/physics/ai tacked on, then scaling to a large number of nodes is fairly trivial - and in that case, I'm not sure what you are offering over what I can write myself.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]


I must admit, I'm not asking out of purely academic interest. I have a quite advanced planet renderer (there's been about a year's work since the video),

The video was impressive. I'd love to see an update to it!

and I'm sort of looking for something meaningful to do with it smile.png

Right here baby! :D

You cleared up some of the points that were mentioned on the website, but I still don't know what services Omega provides.

I assume it provides per-player visibility determination? Does it provide distributed physics simulation or collision detection? Does it provide persistent storage for player attributes? Does it provide a framework for user authentication and account management?

Visbility: Yes, it provides the renderer (or whatever local logic you have) with a set of lists of objects that are "visible" -- though, there's other things you could use LOD info for, such as for long-range object detection to load local assets before they are actually visible.

Physics: No, in omega, physics is like rendering, it's game-specific. So you plug in your physics like you do with rendering.

Collisions: Yes, this is the entry-point to the physics. I tell your objects the who where and when of collisions and your objects react to them -- be it exploding like in my demo, or bouncing around with physics logic.

Persistence: Not yet. This is as far as I've gotten. I need a backing store, but I have plans. I was just hoping to get funding, so I wasn't the only person working on this -- it's become a huge system and I'm tired.

Authentication: Not yet. It's a prototype. Stuff like a backing store and adding ssl to the sockets is ancillary work to the core I have so far. The hard part was doing what I've done.

[quote name='OmegaEnabled' timestamp='1330121717' post='4916344']
Now, I can't prove that this system will scale up like that. I can only say that I've tested on two low-end xeon machines, and run 2/4/8/16 node clusters. I can say that omega scales up perfectly, and the overhead is too small to detect.

You have to understand, without a better idea as to your simulation architecture, I am a little skeptical of this claim.

For a heavyweight simulation, scaling to 16 nodes is not too dificult, but scaling into the hundreds/thousands of nodes is a whole other ballgame.

That's why I need help. I need to prove it scales up further. It will...

If however, Omega is effectively just a distributed spatial partitioning structure, with a little bit of visibility/physics/ai tacked on, then scaling to a large number of nodes is fairly trivial - and in that case, I'm not sure what you are offering over what I can write myself.
[/quote]

Hmm... I suspect if it was that easy, then my claims wouldn't be so revolutionary. "Spatial partitioning"? You mean like is my system nothing more than a distributed oct-tree? Yes, it is much more than that. You've got to do a lot more than just put objects in a tree to distribute a game in a general way (without knowing the content of the game itself), and allow all of the tens of millions of objects to potentially interact with any other object in the billions-of-meters-wide space.

I won't get into the secret sauce, but if it was that easy then we'd be playing something like "Mass Effect Online" where every planet is unique and engaging the mass-drive doesn't bring up a load screen, you actually travel a billion miles to get to your destination. Meanwhile, the 1000 other players are all doing their own thing on other planets, killing other AIs, in the same game space you are in. If you can do that, the world is waiting and I have to ask why would you make me do all of the work? :D

So, I'd love to see if we're a fit, but if you feel you can do what I just did -- and apparently nobody else has been able to do -- then I wouldn't blame you if you did it yourself.

But here's the thing: I just came up with a new idea for a way to render planets last night. I'll be working on that for a bit. Even if my way is as revolutionary as omega, I would still prefer if I was working on it with someone, rather than alone. I don't know about you, but I'm exhausted. I could use some collaboration in my life right about now.

Cheers,
Dave
Let me try it this way. Here's a situation that illustrates how omega would be beneficial to your game. For a moment, put aside the doubt that omega works. Assume I've proven to you that it will scale up as far as you need it to.

Let's say you wanted to turn your planet renderer into a game. You used omega to build a 4-player survival-mode game that takes place on your planet, each round at a different random location. Let's say it requires 1 node to handle the load of a single individual session.

Now let's say someone loved it and said let's make it a 16-player game, how much would it cost?

The answer is: as much as 3 more nodes cost. You don't have to change anything in your game code -- you would probably just have to raise your lobby server's max player count from 4 to 16. Since you'd have more players, you'd probably want more monsters, so you'd have your lobby server set the cluster up with a higher monster count. If you had a lot more monsters, you might actually need 4 or 5 nodes, but the point is, it's simply a matter of hardware assets.

Then let's say your game hits it big and your company is doing very well. You decide to make your game an mmo with thousands of players. How much will that cost?

The answer is: as much as the hardware for enough nodes costs. You still don't have to change your game code -- unless you want to change the game rules to allow for that many people. For example, instead of survival-mode at a random location, maybe players can explore the entire world as they see fit, and bump into monsters as they travel.

Then let's say your player base explodes and you need to set up separate "realms". Why? Just create more planets and put them all in the same single game space -- again, it's just a matter of how many nodes the cluster will require to handle the extra load of all those players and objects. Then you could allow players to travel between the worlds -- stargate style or via transport ships, your call.

I hope that helps. It might not illustrate all the benefits of omega, but it should give you a sense of how it completely changes videogames and videogame development.
I'm not trying to gang up on you here - one of my hobbies of late is writing parallel simulations in Erlang, and running them across the 40 node cluster here at the University smile.png
In the interest of keeping this (very engaging) topic alive:

What happens if we have a 1,000 user simulation, and they all decide to park their spaceships on top of each other? I can't quite wrap my mind around how you expect this to scale linearly - it's easy enough to distribute simulation if we can neatly partition users between available nodes, and inter-user interactions are localised. But users (and simulations) don't tend to be that well behaved...

Along the same lines, do you have some sort of provision to handle the case that the visibility query returns 1,000 items, but the mobile client is only capable of rendering/simulating 100 items?

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

I've been following this thread as it's slowly developed, and I have to say, I'm still wondering exactly what it is Omega does. The video showed several planetary systems, none of which really seemed to follow the laws of physics and be organized in protoplanetary disks. You talk about the capabilities of engines (handling many players, update speeds, universe size, etc.) without any mention as to the games those engines are running (and yes, that makes a huge difference, as two games using the same engine can have bottle necks at two different places) and why specifically Omega can do everything, and how I can expect Omega to be useful to me whether I'm making a high-speed MMOFPS or an MMORTS. I see it's got some collision detection, but what primitives/meshes does it support? Is visibility determined by the view frustum, or are things inside/outside of the view frustum ever reported as "visible"? Does Omega allow hot deployment of modules? How does it differ in features from other module-scaling solutions, like Apache Karaf? What are the limitations of Omega? What does it do for me, and what does it not do for me?

I'm not really wondering how Omega does what it does, but what it does. A large, detailed feature list is a must. If you can't clearly explain what it does (whether because it's too secret or too difficult), I can guarantee you won't ever get an investor (and probably not a quality partner). I see you've listed some things, but they're either vague (distributing the game without knowing anything about it... what is it even distributing?) or already solved problems (like double precision...).

And let me say this last thing in total honesty: I am not in any way trying to discourage you. These are the honest questions I think everyone is trying to understand in this thread, and particularly questions people with money want answers to. The clear answer of what Omega does. You make it sound like the panacea to all problems, but then I realize I don't even know what problems specifically it's solving.
[size=2][ I was ninja'd 71 times before I stopped counting a long time ago ] [ f.k.a. MikeTacular ] [ My Blog ] [ SWFer: Gaplessly looped MP3s in your Flash games ]

This topic is closed to new replies.

Advertisement