Hello everyone.
Alright, so this project is a network server with a client API, mostly inspired by Wyatt's thread of what is wanted in a new NetPlay system, however I'm not doing the Play system, I'm doing the Net. Hmm.
First screenshot (Running in the background of an instance of Battle World RPG)
I now have both a client and a server running in the background of BWRPG, so the next step is to get them both swapping variables, then it's back to architecture design (Suggestions please!)
Current Progress:
Todo:
!Feature Wish-List is being built! Reply to this thread with what you want out of server software, imagine you want to make an MMORPG or online FPS game, what features do you want? This will help me design the architecture to be flexible and give me some test cases. Even if you're not making an online game currently, any suggestions of what you would want as either the developer or the player would help.
I'm developing a local server-client system right now, for offline single player, and then later I'll be plugging in BSDsock and WinSock which will, if done right, enable online multiplayer.
So things that this project will produce:
The plan is that someone can write a hook system that pushes variables between their development platform and the client API.
Example:
Someone could write a system that pushes RPG maker's RGSS variables to and from the client API, so the client can tell the server what state RPG maker is in for that player and then the server can run a script/library/dll/something that knows how to process that variable, before sending it back to the client who will push it back to RPG maker.
Actual:
I'll be using this in my custom RPG engine to write the singleplayer + multiplayer framework, so a lot of the systems will be based around my primary need for a single-player, offline server model for managing maps and battle scenes, later on I'll be adding real-time multiplayer where players can connect to a network server and join a custom map.
Planned Features (List to be expanded upon below)
Nice things to have
Serious things that need considering
Because the server software is open for modding with custom scripts, there will be servers who could modify the game in harmful ways, so there might be a server with a custom DLL that asks you to register, but they might write code so the email, username and password you write is store in plain text for them to read, or even worse, a server that asks for your email but then automatically pushes it to their web-server to sell to spammers.
What kind of games could use this?
The RPG genre is what I'm going for, so it will be built for RPG games, that includes action RPG (Multiplayer Zelda?), dungeon RPGs (Diablo), MMORPGs (World of Warcraft or Ragnarok), latency compensation will be added (It's a requirement) so it can still work for FPS games or MOBA games.
Generally, I'm designing it so it can be used with any game you want to make, be it 2D, 3D, a multiplayer text adventure, a fast-paced FPS game or an RTS, so if you can script it to use the API, it can be done.
Maximum player connections at the moment is65536 256, if you're building an MMORPG that will have more than 65536 256players then I suggest splitting up the load with multiple servers.
EDIT: It's now 256 until the system is running fine, then I'll bump up the specs to a higher number.
Don't expect
I won't be personally writing an RGSS plugin for RPG Maker, I'm going to see if I can work with a scripter later on to write a basic system for multiplayer RPG Maker maps.
EDIT: I have been testing out hooking with RGSS, I can probably create an API for it, but hooking it with RPG maker I'll leave for the next guy to do.
I am building a sand-boxed, single player iteration first, meaning no networking for the first version, this is to build up the architecture. Network sockets will be added afterwards, so no instant miracles, this requires thought and planning.
Important note:
This system will most likely be used as part of my university projects when I return to university, as such an open source version is improbable, which is why I am going for a library/API approach to hooking it up.
Example Config file-format
Cool ideas:
Please be aware that this networking engine is going to be core to Battle World RPG's level, world, scripting and eventing systems, it's development and testing will be based around Battle World RPG's development road-map and currently I'm at the point where the client|server is required, this project may be affected by development direction changes with Battle World RPG.
Alright, so this project is a network server with a client API, mostly inspired by Wyatt's thread of what is wanted in a new NetPlay system, however I'm not doing the Play system, I'm doing the Net. Hmm.
First screenshot (Running in the background of an instance of Battle World RPG)
I now have both a client and a server running in the background of BWRPG, so the next step is to get them both swapping variables, then it's back to architecture design (Suggestions please!)
Current Progress:
Todo:
- Network Engine architecture design, read the red text below
- Variable stack
- Console logging
- Config reader
- UDP packet sending
- Port to BSD Sockets
- Packet architecture
!Feature Wish-List is being built! Reply to this thread with what you want out of server software, imagine you want to make an MMORPG or online FPS game, what features do you want? This will help me design the architecture to be flexible and give me some test cases. Even if you're not making an online game currently, any suggestions of what you would want as either the developer or the player would help.
I'm developing a local server-client system right now, for offline single player, and then later I'll be plugging in BSDsock and WinSock which will, if done right, enable online multiplayer.
So things that this project will produce:
- Multi-platform server - Windows, Linux, Mac OS X
- C++ (And maybe later C) client library
- C Windows DLL (And maybe later a Linux SO and OS X DYLIB)
The plan is that someone can write a hook system that pushes variables between their development platform and the client API.
Example:
Someone could write a system that pushes RPG maker's RGSS variables to and from the client API, so the client can tell the server what state RPG maker is in for that player and then the server can run a script/library/dll/something that knows how to process that variable, before sending it back to the client who will push it back to RPG maker.
Actual:
I'll be using this in my custom RPG engine to write the singleplayer + multiplayer framework, so a lot of the systems will be based around my primary need for a single-player, offline server model for managing maps and battle scenes, later on I'll be adding real-time multiplayer where players can connect to a network server and join a custom map.
Planned Features (List to be expanded upon below)
- ☑ Config file reader - Used first for loading map data
- ☐ DLL Loader - For defining how the server deals with variables, one could write a DLL Loader that gets information from a web server
- ☐
Lua scriptAngelscript interpreter - Can be used in stead of the DLL Loader for the server logic, or used only for simple stuff like dialogues and menus - ☐ Movement prediction (Anti-lag)
- ☐ Player management (So the Root admin is the server itself, able to kick anyone, all other management levels are custom designed, so you can have classes like admin, moderator, super mod, player, newbie, your best friend)
- ☑ Variable read/write - Read and write player data, server state, stuff like that.
- ☐ Hearable, spacial hulls for selecting which players get packet updates
Nice things to have
- RCON - Remote connect from another computer or as another client, perhaps log in via your smartphone to check on your server, who knows? Maybe this will have to be custom coded.
Serious things that need considering
Because the server software is open for modding with custom scripts, there will be servers who could modify the game in harmful ways, so there might be a server with a custom DLL that asks you to register, but they might write code so the email, username and password you write is store in plain text for them to read, or even worse, a server that asks for your email but then automatically pushes it to their web-server to sell to spammers.
What kind of games could use this?
The RPG genre is what I'm going for, so it will be built for RPG games, that includes action RPG (Multiplayer Zelda?), dungeon RPGs (Diablo), MMORPGs (World of Warcraft or Ragnarok), latency compensation will be added (It's a requirement) so it can still work for FPS games or MOBA games.
Generally, I'm designing it so it can be used with any game you want to make, be it 2D, 3D, a multiplayer text adventure, a fast-paced FPS game or an RTS, so if you can script it to use the API, it can be done.
Maximum player connections at the moment is
EDIT: It's now 256 until the system is running fine, then I'll bump up the specs to a higher number.
Don't expect
I won't be personally writing an RGSS plugin for RPG Maker, I'm going to see if I can work with a scripter later on to write a basic system for multiplayer RPG Maker maps.
EDIT: I have been testing out hooking with RGSS, I can probably create an API for it, but hooking it with RPG maker I'll leave for the next guy to do.
I am building a sand-boxed, single player iteration first, meaning no networking for the first version, this is to build up the architecture. Network sockets will be added afterwards, so no instant miracles, this requires thought and planning.
Important note:
This system will most likely be used as part of my university projects when I return to university, as such an open source version is improbable, which is why I am going for a library/API approach to hooking it up.
Example Config file-format
Code:
npc
{
x = -96.000;
y = -128.000;
angle = 225;
model = "models/players/soldier.obj";
texture = "SOLDIER";
script = "dialogue/npc/soldier1.script";
}
Cool ideas:
- Writing up a new multiplayer API for emulators - a new kind of Kaillera
- NetPlay++ - RPG Maker NetPlay with a new network architecture and a C++ portable server
- Porting an open source software to use this networking engine
- A community of DLL/Scripters who create custom scripts for server management that can be used for any game engine that uses this networking engine or create DLL plugins for different game engines so they use this networking engine
Please be aware that this networking engine is going to be core to Battle World RPG's level, world, scripting and eventing systems, it's development and testing will be based around Battle World RPG's development road-map and currently I'm at the point where the client|server is required, this project may be affected by development direction changes with Battle World RPG.