Hello everyone, after some time developing SecondThreat game I decided to release the multiplayer framework. I cant continue developing it as it would require many more assets to make a complete game. The code is fully functional and runs well with Visual Studio Express 2008 and Ogre 1.7 (should run with no problems with newer versions though). If you have questions you can PM here or post in this thread. I hope this project helps anyone wanting to develop a multiplayer game.
You can test before buying: http://www.gjteam.com.br/SecondThreat.exe and here are some screenshots: http://www.gjteam.com.br/Screenshots.rar
Finally the mandatory inlined screenshot:
Features
Integration with Raknet
Headless Servers-> Can runon servers without graphic cards, and doesnt need physx installed as 2.8.3 just needs dlls placed on directory
Position and Orientation Interpolation, and transformation History runs smooth on laggy enviroment.
Server is authoritary about hit detection(but not about movement)
Server simulates animation, so the hitbox stays synched even without ogre running besides! I stripped the core functionality of Ogre to load meshes and execute animations without needing to initialize Ogre. The animations are simulated the same way on the server, and the hitboxes attached to bones are always updated.
Integration with Physx 2.8.3
Stable Ragdolls
Character controller
Mesh Cooking functions
Loading cooked meshes from hard drive
Navmesh navigation with Detour and Recast
Loads binary file previously generated using recast Appplication
IA controlled bots
Spawnpoint controlled
Navigates through different floors
Uses character controller
Soft shadows, SSAO and NormalMappedSpecularAO (Shaders by nullsquared) integrated
Quality system (ranges from 0-3), 0 being the fastest and simples configuration, and 3 being the highest quality.
Simple Weapon Class (reloading, shooting, etc)
Ragdoll enemies
Bullet decals
Hitboxes synched with bones
And more: MyGUI for gui , Animation System (uses technofreak for blending animations), OgreOggSound, Automatically create hitboxes based on bones information...
Im selling all of this for just 20$ via Paypal, I think it will save a lot of time for people tackling those same issues.
All the arts assets are provided as example, please dont use it for commercial purpose, just testing. You can use the code as you like though.
Multiplayer First Person Shooter Framework for Sale.
-
- Gnome
- Posts: 334
- Joined: Thu Jun 28, 2007 2:12 pm
- Location: Brazil
- x 5
- Contact:
-
- Gnoblar
- Posts: 18
- Joined: Tue Jun 29, 2010 4:28 pm
- x 5
Re: Multiplayer First Person Shooter Framework for Sale.
What a deal!
I'm gonna buy it for sure. I'm specially interested in the physics code.
Please PM with the link.
I'm gonna buy it for sure. I'm specially interested in the physics code.
Please PM with the link.
- Herb
- Orc
- Posts: 412
- Joined: Thu Jun 04, 2009 3:21 am
- Location: Kalamazoo,MI
- x 38
Re: Multiplayer First Person Shooter Framework for Sale.
Looks tempting!
Had a few questions below maybe you could answer:
- Is the code commented well?
- Could you comment on what tools you use for level design? And how you're using recast with the level tools?
- Does the framework from both the client and server support a threaded approach? For example, can AI be calculated in a different thread than the render thread?
- Finally, how is the networking with RakNet setup? Using their BitStream class or serializing out the structs? Are you using the Replica3 plugin for the player objects, or doing it manually?
Thanks for any answers you can provide!
Had a few questions below maybe you could answer:
- Is the code commented well?
- Could you comment on what tools you use for level design? And how you're using recast with the level tools?
- Does the framework from both the client and server support a threaded approach? For example, can AI be calculated in a different thread than the render thread?
- Finally, how is the networking with RakNet setup? Using their BitStream class or serializing out the structs? Are you using the Replica3 plugin for the player objects, or doing it manually?
Thanks for any answers you can provide!
-
- Gnome
- Posts: 334
- Joined: Thu Jun 28, 2007 2:12 pm
- Location: Brazil
- x 5
- Contact:
Re: Multiplayer First Person Shooter Framework for Sale.
Hello!Herb wrote:Looks tempting!
Had a few questions below maybe you could answer:
- Is the code commented well?
- Could you comment on what tools you use for level design? And how you're using recast with the level tools?
- Does the framework from both the client and server support a threaded approach? For example, can AI be calculated in a different thread than the render thread?
- Finally, how is the networking with RakNet setup? Using their BitStream class or serializing out the structs? Are you using the Replica3 plugin for the player objects, or doing it manually?
Thanks for any answers you can provide!
Its is commented (just not very much), there are some few parts in portuguese which i am converting to english. Everything else is in english.- Is the code commented well?
For 3D Modelling of the enviroment it was used 3DsMax. For scene setup i used Ogitor and my own tool that you can download for free here in the forum: http://www.ogre3d.org/forums/viewtopic.php?f=11&t=48385. For mesh visualization i used OgreMeshViewer, but there more updated solutions. For mesh handling (resizing, upgrading, optimizing etc) i used meshmagick.- Could you comment on what tools you use for level design? And how you're using recast with the level tools?
For recast, the obj is loaded inside recast Application and after all the parameters are configured, the binary file is exported. If you keep all the positioning the same (at origin) and scale, it should work flawlessly.
here are some screen of the recast configuration:
the code then loads the binary file and gets the information for the navmesh.
Its not multithreaded, but should be no problem if you keep track of what is being threaded. For example, here is a good resource for Raknet: http://www.jenkinssoftware.com/forum/in ... pic=4782.0- Does the framework from both the client and server support a threaded approach? For example, can AI be calculated in a different thread than the render thread?
I have tested all of these solutions(not sure if it was replica3 or 2 though). And ended up using bitstream. I didnt feel very confortable using replica manager as I had to make a lot special case handling -and some parts of it looks like magic-, but it looks like a great solution for some games. Also between using structs and streams, the docs say streams are faster, so i went with that Its great to have deep control whats being sent or not. But it does consume your time for each action of the game that needs to be serialized.- Finally, how is the networking with RakNet setup? Using their BitStream class or serializing out the structs? Are you using the Replica3 plugin for the player objects, or doing it manually?
For example, Replica may the only feasible way to go if you have a game like MMO, where you have tons of elements that need to be synchronized, as it does this almost "on the fly".
Here is a snippet for the player Respawn function, on Server:
Code: Select all
SystemAddress playerId;
Ogre::Vector3 position=Ogre::Vector3::ZERO;
RakNet::BitStream respawn(packet->data, packet->length, false);
respawn.IgnoreBits(8); // Ignore the packet ID
respawn.Read(position);
RakNet::BitStream sendRespawn;
sendRespawn.Write((unsigned char)PLAYER_RESPAWN);
sendRespawn.Write(position);
sendRespawn.Write(packet->systemAddress);
sendToAllPlayers(&sendRespawn,RELIABLE,packet->systemAddress);
printf("%s respawned\n",players[packet->systemAddress]->getName().c_str());
if(players[packet->systemAddress]!=NULL){
players[packet->systemAddress]->respawn(position);
}
thanks for the questions.
- Herb
- Orc
- Posts: 412
- Joined: Thu Jun 04, 2009 3:21 am
- Location: Kalamazoo,MI
- x 38
Re: Multiplayer First Person Shooter Framework for Sale.
Thanks for the info dudeabot. I prefer the raknet bitstream objects as well, so that's good.
Just to clarify, what is the "obj" that you load into the recast application? I use Ogitor as well, and I'm trying to figure out how you're taking a scene with terrain and objects and having the stock recast application make use of that (and how that obj file is generated). Is the obj file generated in your tool and not Ogitor? I've been trying to get my recast - Ogre integration working, so this interests me. Thanks again!
Just to clarify, what is the "obj" that you load into the recast application? I use Ogitor as well, and I'm trying to figure out how you're taking a scene with terrain and objects and having the stock recast application make use of that (and how that obj file is generated). Is the obj file generated in your tool and not Ogitor? I've been trying to get my recast - Ogre integration working, so this interests me. Thanks again!
-
- Gnome
- Posts: 334
- Joined: Thu Jun 28, 2007 2:12 pm
- Location: Brazil
- x 5
- Contact:
Re: Multiplayer First Person Shooter Framework for Sale.
When I said onj, i really meant the .obj format
anything that can be converted to obj format will work out of the box, so if the terrain can be serialized to a obj object, that should work as well
then you just load the binary file generated by Recast, and pass the points, and it will return a number of points for your object to travel.
of course you could convert the ogre mesh directly, so its a step less. but also one more dependency
anything that can be converted to obj format will work out of the box, so if the terrain can be serialized to a obj object, that should work as well
then you just load the binary file generated by Recast, and pass the points, and it will return a number of points for your object to travel.
of course you could convert the ogre mesh directly, so its a step less. but also one more dependency
-
- Gnome
- Posts: 334
- Joined: Thu Jun 28, 2007 2:12 pm
- Location: Brazil
- x 5
- Contact:
Re: Multiplayer First Person Shooter Framework for Sale.
Just one moer thing that ill be documenting as well, which is really a feature of physx. But anyway, using the Physx Visual Debugging application that ships with PHYSX SDK its possible to record a scene then playback it. Its useful for debugging if the hitboxes were located where it was supposed to be, and the physics in general. You can also see the hitboxes moving with bones.
to enable/disable just call/comment this line
to enable/disable just call/comment this line
Code: Select all
ageiaSDK->getFoundationSDK().getRemoteDebugger()->connect("127.0.0.1");
- fixtone
- Gnoblar
- Posts: 19
- Joined: Tue Jan 24, 2012 1:32 pm
- Location: Barcelona
- x 2
Re: Multiplayer First Person Shooter Framework for Sale.
Helow dudaebot! I am very interested buying the engine, especially in regards Phyx.
I sended an MP to know as we do.
Thanks!:)
I sended an MP to know as we do.
Thanks!:)
-
- Gnome
- Posts: 334
- Joined: Thu Jun 28, 2007 2:12 pm
- Location: Brazil
- x 5
- Contact:
Re: Multiplayer First Person Shooter Framework for Sale.
Im updating to Ogre 1.8 and MyGUI 3.2
the changes are on SVN, (i think i contacted everyone about svn but ask me for the invite if you still dont have it)
Just created this forum as an alternative for questions:
http://gjteam.com.br/forum/
as always any questions are welcomed.
the changes are on SVN, (i think i contacted everyone about svn but ask me for the invite if you still dont have it)
Just created this forum as an alternative for questions:
http://gjteam.com.br/forum/
as always any questions are welcomed.