So, All my friends who used to play D&D with me are long gone; as such, I’m working on a client that I can use for long distance games. Things like voice chat and video will be handled by another program so I don’t have to worry about that. But I’d like to have a system rolling to automate dice rolls, handle character sheets, possibly even have interactive maps that my players can see as we go through the campaign.
I’m not specifically looking for scripting on how to get the above going, it’s more that I need to be pointed in the right direction for scripting the network to allow multiple people to see the same thing at the same time as far as the roll outcomes, and maps and such, but be able to privately handle their character sheets and stuff. Of course I also need to add in access to everything by the DM (me) and limited access to things to the players.
I dont’ need 3d models or anything like that. Most of it will be handled through the GUI system.
I can provide more detail if needed, I hope this is making sense. Any scripting ideas/help, or a point in the right direction would be great!
Thanks
I am just starting out in Game Networking and I have to say, it’s a little more complicated than I had expected. Adding those features to your game without networking knowledge and experience won’t be easy. Personally I think your best bet would be to, after you get the majority of your game done (so you have something to show), post for a Game Networker to help you out (Collaboration Section). If you want to do it yourself you should do it for your interest in Networking, not just to get your game done because it will take a lot of work to learn (and there are networkers here to have already learned it!
).
However, if you are still interested in doing your own networking, read the Network Reference Guide, then read the Networking relevant parts of the Script Reference and Reference Manual. If you are creating this for you and your friends then you probably won’t need the Master Server, but if you are creating this for online gaming then you will want to read it. The Networking Example is a good place to see some code in action! Also a very important thing to learn are RPCs.
Well, I think I’m about out of links!
Good luck,
Maybe it may sound a “compromise” but for what you are aiming why not just create a “website” that will handle that? base it on a database (even mysql for example or sqlLite) and just built on top of it your needs. thinking a bit out of the box would handle the “roll dice” part, for example if one player ask a dice roll, all players connected with a client side script will ping the appropriate page and return the “last dice roll” in real time.
I belive that for handling char sheets etc it would be a major pain to use a gaming engine for it… website or “forms” application (even built in gtk2 with MonoDevelop) will be easier to maintain.
Otherwise there is a very “good” demo for a “chat client” in the Lidgren network project, it’s based on winforms, and as far as i remember it would take a few minutes to add a “roll dice” button that will make the computation on the server and return the result as chat message.
Another option is to have a remote database (as before in mysql for example) open to the external connection and write a desktop based client that will just “refresh” it’s data every few seconds from the mysql db and update it with that is needed, easier then a gaming engine for sure.
If you need help let me know and i’ll make you an example.
PS: a few ideas on the website part:
You can create a base “grid” of X and Y squares and put under it any image/picture/draw then the users will be able to click one of the grid boxes and using the same “async” ajax or similar calls all players will see a colored dot where he clicked, this could work and is very easy to achieve:
for example you have a database table where you store the current X, Y of the players, when someone click a grid square then you send an async update to the database and all clients refresh this “table” every few seconds showing the movmement.