BGE Networking

Here’s a tutorial series :slight_smile:

[BUGFIX]
An off by one error in the unpacking code for an attribute caused the wrong roles to be assigned to an object. This meant that physics wasn’t working correctly.

Good work Goose!

:smiley:

Could this support verse style interactions?

Are you making the 3d interwebs ? :smiley:

Not quite :slight_smile:
This is just game networking. It’s flexible though :slight_smile:

Found an error; calling endObject doesn’t end the object. Hopefully just an issue with how I’ve subclassed the GameObject

It appears that the patch I’ve written had an incorrect function definition for the update_logic_brick call, so I had to make a new patch. Also, I hadn’t actually attached the patch files!

I’ve added mouselook support, as well as fixed a number of replication bugs (attributes).

I’ve forgotten to mention the following;

  1. You can’t coerce types (integers are treated as integers, and floats as floats, so you’ll get errors trying to set them).
  2. You can’t set attributes to None. This means you should create a placeholder None type for that value, or use another attribute as a set flag.

I’m hoping to use BGMC Samantha as a test bed for this project. Let’s see where it goes.

Patch is still out of date, I need to upload it.
I’ve added preliminary event support. This will be more useful later on when scoring players.

At this point, certain events (ReplicationNotifyEvent as one example) may be reverted depending if needs require it.

I remember animations being a troubled area with multi-player for BGE,(armatures, shapes, ect) is this going to be addressed in this project? And what is your appraoch to do so (if this already hasn’t been added)?

Here are my questions. Is this Asynchronous?

If I have thousands of information strings or data being sent every couple of seconds, we both know socket alone couldn’t handle it and would miss information. So my question is, does all the information get stored somewhere until its used? I have my own asynchronous server/client that works fantastic, the only problem is, I need to run an extra EXE first to and run and then run the blender game inside that exe. So its like I have a double EXE on one game, this crashes all the time when I close the game.

My second question is!! If I send 1 gigabyte of data to one client, does your client know how to store individual lists of items and wait until the whole package is received before having the information placed in Queue?

If you have both of those things accomplished…then omg please let me know.

Again I accomplished those things with 2 executables…Which I really wished I didn’t need to do.

The main issue you face here is bandwidth. If you are able to send such volumes of data then congratulations already! All data that can be sent is default types, non mutable (with the exception of strings) you could add support for lists of a fixed type. Adding variable types would add further overhead.

Sent from my Nexus 7 using Tapatalk 4

When I implement animations, it will likely be a straightforward system. They should not have issues if done correctly. The main consideration is whether the animation frame should be synchronised to remote peers. I’ve currently decided against this, as I can’t imagine many occasions that this couldn’t be overcome without it.

Added an “Event system” for events such as actor damage, actors killed and so forth.
Cleaned large parts of the code base
Added support for setting Attributes to None (and RPC arguments), though this is untested.
Added some debug visualisation tools.

Fixed dysfunctional corrections - delta time wasn’t being passed in as the correct argument.
Removed the status lookups for inputs. Now a Boolean value is returned directly.
Fixed corrections being sent for moves that are “old” relative to the last
correction.
Renamed actors.py to replicables.py in line with the convention.
Renamed WorldInfo.actors to WorldInfo.replicables, reason as stated above.
Added optional UnrealiableSocket socket class
Moved socket out of Network class inheritance and into attribute
Removed backup for old files (should remain in change log for SVN if needs be)
Fixed physics differences between Server and Client worlds
Fixed potential duplication in client entities on slow connections

Do you think you could easily do tremulous now in your multiplayer server?

Easily and possible are different things. You could create a first person shooter :slight_smile:

Wow! Great work as always!


Added server browser to demo

Great to see so much progress on this lately!
The code of your demo looks quite polished and sophisticated. Once I have a couple of hours, I will see if I can get it working on my machine at home.
Let’s see if we can make a node-based interface one of these days.

Todo:
Handle connections by ID and not IP
Add non blocking HTTP request support.

Download link for patched blender build:

Svn link:
http://code.google.com/p/py-auth-server