Multiplayer First Person Shooter Framework for Sale.

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
Post Reply
dudeabot
Gnome
Posts: 334
Joined: Thu Jun 28, 2007 2:12 pm
Location: Brazil
x 5
Contact:

Multiplayer First Person Shooter Framework for Sale.

Post by dudeabot »

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:

Image

Features
Integration with Raknet
:arrow: Headless Servers-> Can runon servers without graphic cards, and doesnt need physx installed as 2.8.3 just needs dlls placed on directory
:arrow: Position and Orientation Interpolation, and transformation History runs smooth on laggy enviroment.
:arrow: Server is authoritary about hit detection(but not about movement)
:arrow: 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
:arrow: Stable Ragdolls
:arrow: Character controller
:arrow: Mesh Cooking functions
:arrow: Loading cooked meshes from hard drive

Navmesh navigation with Detour and Recast
:arrow: Loads binary file previously generated using recast Appplication

IA controlled bots
:arrow: Spawnpoint controlled
:arrow: Navigates through different floors
:arrow: 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.
maylivios
Gnoblar
Posts: 18
Joined: Tue Jun 29, 2010 4:28 pm
x 5

Re: Multiplayer First Person Shooter Framework for Sale.

Post by maylivios »

What a deal!

I'm gonna buy it for sure. I'm specially interested in the physics code.

Please PM with the link.
User avatar
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.

Post by Herb »

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!
dudeabot
Gnome
Posts: 334
Joined: Thu Jun 28, 2007 2:12 pm
Location: Brazil
x 5
Contact:

Re: Multiplayer First Person Shooter Framework for Sale.

Post by dudeabot »

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!
Hello!
- Is the code commented well?
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.
- Could you comment on what tools you use for level design? And how you're using recast with the level tools?
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.

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:

Image
Image

the code then loads the binary file and gets the information for the navmesh.
- 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?
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
- 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?
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.

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);
		}
I should add these things on a wiki :)

thanks for the questions.
User avatar
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.

Post by Herb »

Thanks for the info dudeabot. I prefer the raknet bitstream objects as well, so that's good. :wink:

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!
dudeabot
Gnome
Posts: 334
Joined: Thu Jun 28, 2007 2:12 pm
Location: Brazil
x 5
Contact:

Re: Multiplayer First Person Shooter Framework for Sale.

Post by dudeabot »

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 :)
dudeabot
Gnome
Posts: 334
Joined: Thu Jun 28, 2007 2:12 pm
Location: Brazil
x 5
Contact:

Re: Multiplayer First Person Shooter Framework for Sale.

Post by dudeabot »

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

Code: Select all

ageiaSDK->getFoundationSDK().getRemoteDebugger()->connect("127.0.0.1");
Image

Image
User avatar
fixtone
Gnoblar
Posts: 19
Joined: Tue Jan 24, 2012 1:32 pm
Location: Barcelona
x 2

Re: Multiplayer First Person Shooter Framework for Sale.

Post by fixtone »

Helow dudaebot! I am very interested buying the engine, especially in regards Phyx.
I sended an MP to know as we do.

Thanks!:)
dudeabot
Gnome
Posts: 334
Joined: Thu Jun 28, 2007 2:12 pm
Location: Brazil
x 5
Contact:

Re: Multiplayer First Person Shooter Framework for Sale.

Post by dudeabot »

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.
Post Reply