Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 14 Apr 2013
Offline Last Active Nov 21 2013 08:30 PM

Topics I've Started

Licensing game software as a service

12 November 2013 - 11:17 PM

So I'm working on a game server that will primarily be provided as a hosted service.  But I want to allow as much freedom as I can to developers that want to extend the engine.


Currently the idea is to provide a commercial license with the hosted service.  The copy of the software that runs on our servers uses a commercial license which would only really restrict you to using it on that specific server.


To allow developers to run a local copy during development, we would provide a copy of the software under the Gnu Affero license.  This effectively means that you can develop locally using the entire application source, and you would only have to share your work if you chose to host the game on another public server instead of using our service.  We would probably have commercial licenses as well for that scenario.


My concern is that even though in this specific case there is no danger of having your code fall under the Affero license, misunderstandings and apprehension will drive away developers.


The larger goal here is to stay away from the more common licensing model in the industry where you pay hundreds for a license if you want source access.  I want to scale the pricing in a way that makes more sense for individual developers.  If you can afford $10 a month, you get a hosted service and full source access to customize whatever you want.  


An alternative is to use pretty much the same model but have it all be a commercial license.  It would let you run a local copy of the server for development only.


So anyways, what are people's thoughts on using the Gnu Affero in this case?  Would it drive away developers?






Data compression/optimization strategies

24 August 2013 - 09:38 PM

For games where data throughput and size is an issue, what do most people use for compression?  Is it generally worthwhile using different strategies for say floating point data versus other stuff, or do most just compress everything with something like zlib and call it a day?


The specific case I have is an mmo client/server.   I'm working on the scale of say something like Guild wars II or Eve online as far as requirements.  Right now I'm able to track several thousand objects on the server side and do efficient neighbor queries on them, it's bandwidth that's becoming an issue.  Sending the coordinates of 1000 players to the client is a lot of data, and that's just movement, I haven't even gotten into combat and other stuff that will bump it up even more.


So far this is what I'm doing to optimize location tracking:


-  Use integers instead of floats.  I don't generally need the precision for x,y movement coords.


- Send local grid coordinates not world coordinates.


- base 62 encoding of string id's


- don't send data if it hasn't changed since last update


- partial coordinates.  Only send coordinate values that have changed by a certain threshold.  So a client might get a vector with x being empty,   which means use the last known value.



If anyone has ideas on best compression algorithms, or other tricks to keep bandwidth usage  down, let me know!










Server side physics, what would you want to see?

22 July 2013 - 12:27 AM

I'm working on a server side game engine for mmo games, and have been thinking through what physics features would be most wanted.  The engine is open source but not quite to a first release, this is one of the last pieces to get in place.  I'd appreciate any feedback!


Here is the list of features I have so far, mostly all implemented.


- Fast 3d spatial partitioning, for efficient 'players around me' queries.


This sacrifices some accuracy for performance.  It guarantees you will get every object in range, but you might get a few just outside of range also.   I use 2d grids within grids, and then do some additional filtering on the third axis which is not 100% accurate, but it's fast.



- 3d location tracking for all movable objects.  


Nothing to special here, just the ability to do basic queries on anything in the game world to get distances between objects,etc..



-  Collision detection & general physics


This is one I'm still unsure of how far to go on.  Right now my thought is to have physics for immovable objects.  Ensure players can't walk through walls, things like that.  The approach I'm playing with is to use A* pathfinding on the server and verify that against the client.  If they get into a position that the server finds impossible, they are probably cheating.  But right now I just have 2d pathfinding, still  playing around with the best solution for 3d.


The physics is just to prevent cheating, not replace any physics on the client.


Are there any other must have physics related features that you would need if making an mmo?



server side game object location tracking

18 July 2013 - 12:49 AM

I'm working on an open source server side game engine and am tackling how to track game objects in 3d space.  


The basic idea I am working with is that the server will track moving objects and record their location.   I was thinking about dividing up the space into cubes of equal size, and doing enough math to figure out what cube an object is in whenever I record their current location.  With something like this 'objects near me' becomes an efficient query, as I just get the objects in your cube plus adjacent cubes.


But having spent most of my career working with server side code, 3d math isn't something I've ever really had to deal with, so I'm starting from scratch as to what the best algorithm would be, and what libraries would help me the most.  I'm using jruby,  so libraries in java or C would work, although I'd prefer java.


I was also toying with the idea of using a 2d grid and a 3d space made of cubes.  If I know the location of an object on the 2d grid, I'm thinking I can do some quick math to get objects that are within X number of 3d cubes away by just looking at the z axis of the objects.  So if I have a player in a known cube, and I want to get all other players in that cube and all ajdacent cubes, I could just compare the z axis of all the objects I got from the 2d grid calculation.   It wouldn't be an exact calculation, In order to get all players within range,  I'd end up with some players outside of the range I really want if I use a number large enough to get all players within range.


But maybe I'm overthinking this, and the math  isn't really that expensive to 'do it right'?



Advice on good 3d engine for testing server side code

14 April 2013 - 03:17 PM

I'm working on a server side game engine to handle massive multiplayer, and looking for the simplest client side engine I can find that would allow for easy testing of hundreds of game objects on the screen.   A basic 3d coordinate system and collision detection would be ideal.  I would plug in my own networking library.


I'm fine with graphics that are dead simple, like just using simple shapes for the game objects.  I've been testing using non visual clients so far, and now I want something visual so people can actually see it in action.


I'd prefer java if possible, but if I have to go to C/C++ I will.  The main goal is a graphics engine that can handle a lot of game objects on the screen with minimal rendering lag.


Any advice greatly appreciated!