Yet another game project (AKA noname)

Hi dudes

This is my first post, so anyway… we have around two months on a game project.

The base idea for the project is a multiplayer RPG (not massive) because we liked that Secret of Mana could be played multiplayer… but when multiplayer the gameplay was not that good haha.

Well the idea is a 4 player RPG with a story and everything, we have the characters, the personalities (at least main ideas) and we are breaking our heads thinking in balancing the different abilities, weapons, etc. so there is interactivity between them (combined attacks, remember Chrono Trigger / Cross?) and that any character chosen is fun and there is no boring character to play with.

We have already some advances. The game can already be played multiplayer (the 4 users can be playing) there are some enemies (box-shaped hahah), there is a fairly good collision detection (no physics) and they all can kill the enemies with swords and bows that they take, there is a simple but effective AI for our stupid-enemies right now, there are basic items like potions, etc.

This is our first project using internet resources, so I would be glad if any of you would have any suggestions, comments, or experiences with networking games. We are currently using JGN as the network solution (thanks darkfrog).

We are using this client-server, so I can put the server in my computer, and launch a client on my computer to connect, then the other dudes connect from their homes. I made a console that shows message sent/received from the server, measuring time, bytes sent, etc.

But I would like suggestions for example:

  • Divide your world in areas so you can easily decide which information no to send to the clients from the server
  • If an enemy is X distance away, do not bother sending the info about him to the clients
  • Send information about position/rotation of enemies to the clients every 200ms and use prediction to continue moving the enemy in the client side

    Or I don't know, tips like that, even if they are simple to understand or not, I have realized that sometimes a little change has great effect on resources usage.

    Thanks from Mexico. ahah.

Sounds awesome! I've always loved multiplayer rpgs. The Vampire Redemption and Neverwinter Nights games were great examples. I especially loved that a player could take the role of DM (or Storyteller, in case of Vampire) and actually get some pen and paper roleplaying involved. Sometimes I feel there's not enough role playing in computer roleplaying games. Would you consider doing something like that? If not, maybe that'll be my next project after Hard Boild is wrapped up…

I don't know much about networking but I believe your hinting at dead reckoning, which I believe JGN is especially built to handle, isn't Darkfrog the one who was working on physics reckoning? Perhaps someone more experienced should step in here.

I am also currently making a multiplayer rpg, but not using jME.  :smiley:

Here's some tips on dead-reckoning and extrapolation:

How you would synchronize the time, so that all Timestamped messages are valid (on the client):

JGNClient client = ...
// ...
// ...
client.connectAndWait(serverReliable, serverFast, 5000);
MessageClient server = client.getReliableServer().getMessageClient(serverReliable);

And now you can access the timestamp in the message (on the server):

float timeOff = (System.currentTimeMillis() - msg.getTimestamp()) / 1000f;

Then you just update the state of the player so it's timeOff seconds forward.

Extrapolation is another method of making the networking smoother, basically you store the last direction the player walked on and continue to walk in that direction until the client sends a message saying to reset the direction. This way you "predict" where he would be has the direction not changed.

Hey, good luck with this project, welcome to the forums, and it is very nice to see someone from Mexico as well around here! Where are the screenshoots or videos? Even if it is just boxes, I would like to see something  :wink:

    I suggest you create a tree containing the characters and enemies based on porximity. That way you will only have to do AI computations and send their info to clients whenever they can be affected by it.