Hi All,
I’m a T3D user in the obvious situation and one of the candidates is preverbal gorilla in the room; Unity.
For starters, my game is a multiplayer RPG. Please, I don’t need a lecture ; not a multi-thousand player MMO, but I’d like to be able to handle 100 concurrent users. The second thing is that I’m the author of Angela, a ruleset processing engine written in Python. Angela is very close to being ready for an alpha release; hopefully before Christmas. My plan was to use Angela do the heavy lifting in the RPG rules domain and to use with Torque as the “front” server. The players would see a pure Torque environment (their client and the dedicated server) and Angela would communicate with the Torque server. The plan was not to modify T3D too much. Movement and collision would happen at the Torque level. Torque knows nothing about the game rules, it handles the scene graph, client communication and rigid body physics.
I’m not planning on pushing the graphics to the limit. In fact, I plan to religiously stick to a rule of using only specular and diffuse on the materials of any art assets and no textures, aside from normal and/or parallax maps. I also plan to use a full screen Sobel outline shader. Yes, the art style is solid colors, with black outlines; very modest by modern standards.
Related Question: Is it easy to add a full screen Sobel shader? Is this even possible? What version of Unity do you need?
Melee would be either collision or raycasting based; preferably the former if performance permitted. The procedure for Torque was.
- This would mean that to make a melee attack, you would send a request to make the attack to the server, which would forward it to Angela.
- Angela’s Action Engine server would process the request and decide if you were allowed to make the move
- If it was ok, it would broadcast a stimulus: your toon plays the appropriate animation.
- This command to play animation X goes back to the torque server, where it is processed as a normal animation; albeit with the server side melee resource.
- If the torque server detects a collision, it reports that to Angela as an action and does a quick internal rule check to decide whether or not to put the target into ragdoll mode for a moment.
- After the timeout on the ragdoll, (how many ticks should this be?), the player regains control of his toon and can get back up and resume. Yeah, you are vulnerable during this time and yeah, if that was a killing blow, but Angela is lagging, you can still act until the death catches up to you.
- When the collision action comes back to Angela, it clears the target’s pending action queue (this should be happening while the target is still in ragdoll mode), decides how much damage, if any, to apply to the target and whether or not the target survives.
- Broadcast the perceived results of the hit to nearby control objects. This means, send it as a stimulus to Torque and make it dependent on having the target and or actor in scope. If you have them in scope, you get a text message with the hit results. (you probably saw the ragdoll show anyway)
- If the target dies, send a “stimulus” to Torque to “kill” the target via the usual script means.
Related Question 1:
If I mount an object to another (e.g. sword to a player avatar’s hand) and then that other thing (the player) plays an animation, can I expect the collision box on the sword to still be functional? Or does it surrender its collision volume when mounted?
Related Question 2:
What happens if I have multiple collision volumes on a figure and it plays an animation? Yea, I’m talking about hitboxes.
Unrelated networking questions:
Can anyone who has worked with Torque as well as Unity give me a short “delta” of the two engine’s networking? How does Unity’s raknet scoping/ghosting work in comparison to Torque’s TNL? I’m not asking about pros and cons, but how scoping and ghosting is handled. Is there something similar to mask bits?
Does Unity use datablocks, or something similar like Torque? If not, how does it deal with the situation where a dozen exact copies of something need to have all their info sent to all users in scope?
Thanks,
Cayle