flodihn

Member
  • Content count

    266
  • Joined

  • Last visited

Community Reputation

281 Neutral

About flodihn

  • Rank
    Member

Social

  • Github
    https://github.com/flodihn
  1. Arcane Engine - 3D MMORPG C# Framework

    Is this somehing usable, when I follow the link the forums seems pretty much empty, there is nothing to download.
  2. SpatialOS single shard MMO

    I was referring to my Raspberry cluster of 4 Raspberry's, maybe that was not clear in my post, sorry about that. But yeah, the numbers heavily depend on the type of game play you have in your game.
  3. SpatialOS single shard MMO

    I am currently building a mini cluster of raspberry pi's. So far I got two of them but plan to expand to four. Each raspberry pi has 4 cores and 1 GB RAM and 16 GB SSD drive. You could easly support 20,000 - 40,000+ concurrent players on that, but it heavily depends on the game design. When doing single shard multiplayer games, it is critical to avoid choke points, such as having one capitol city or one location for the auction house where players tend to group together. I made my own distributed server in Erlang and on an 8 core desktop computer I could support congestion of about 2 groups with 2000 players at the very same spot. This would be similar to players forming a warband in WoW and running around killing stuff. With those 2 groups of 2000 players each, the same server was under heavy load but still responsive, I tried to fire up a third group of that size but then things started to lag badly. In an other test, I spread the players evenly about the world, I had divided the world (1024x1024m) into smaller chunks of 64x64 meters. With about 60 players in each such chunk the server were running smoothly handling around 12,000 concurrent players with latencies between 10 - 50 ms. I have not yet tested the performance on my raspberry pi cluster, but I am working on it now and should have some interesting results to share later this summer. Supporting 100k+ entities were most of them are static or mostly inactive should not be very hard, but it is time consuming to build such software unless you use something already existing.
  4. Database Structure for MMO's

    At one point, I think it would be healthy to experiment with a different approach. Just store accounts and characters in a key/value store, currenlty my favorite storage is Riak. Give new accounts and character a unique id to use as keys, uuid is a good option (https://en.wikipedia.org/wiki/Universally_unique_identifier). Then store all information bound to the account or character as the value in the structured way. My favourite format is JSON. You can link accounts to characters by having a list of characters uuids in the account data. Then, instead of making queries to the database, just load up the JSON into the memory of your server, make alterations in memory and occation dump JSON to the database. It would look something like this: { "account": { "uid": "123e4567-e89b-12d3-a456-426655440000", "phash": "JDUkTW5mc1E0aU4kWk1UcHBLTjE2eS90SXNVWXMvb2JIbGhkUC5PczgweVhoVHVycEJNVWJBNQ==", "email_encrypted": "UkNyOXFaajYvanBkaVJHNXVmZnV6THpHR0pSMDVUU2U=", "email_hash": "17300987ba9482d229e6bc9f3463b4efbdf2564d", "character_uids": ["522e4867-f89e-13d6-b672-422615122561", "612f2357-d21c-23e4-c152-122665727512"], "subscription": "bronze" } } Note that texts that contains weird characters is in most cases best to base64 encode, otherwise jsons parsers might not parse correctly. In this example I would recommend passwords to be hashed with SHA-256 or even SHA-512 and encode to base64 encode before storing in the db (I use bcrypt to generate password hashes). You probably don't want to store people's emails in clear text in your db, so encrypt using a well known method like AES. But now we have the problem that emails probably need to be unique (one email limited to one account), so we can hash it the email and put a secondary index on it (email_hash). This means we could quickly find if an email is already in use in our system. { "character": { "uid": "522e4867-f89e-13d6-b672-422615122561", "name": "foobar", "skills": [{ "combat": [{ "1h_sword": 32, "2h_sword": 12, "mace": 82, "shield": 54 }], "cooking": [{ "pizza": 99, "soups": 23, "grilling": 23 }], "survival": [{ "acrobatics": 56, "swimming": 23, "skinning": 52, "traps": 13 }] }] } }
  5. This is how I would do it.   Make a authoritative server where clients can use a RestFUL protocol to create/join/leave/play a game. I would use json structures to save the whole state of a game. Make a unique ID for each created game session and store in the database. Make the game session have two modes, active and deactived.  When a game session is active, the json structure is stored in the servers memory. If no action from a player happens within a reasonable time, lets say 10-15 minutes, zip the game state, dump it to a key/value database and mark the game session as deactived. When a game session is deactiveced, but a player makes a play operation request, load the game state from db, unzip and mark game session as active. Before starting, I would look up things such as this on the Internet: "restful design best practices", "key value databases", "best restful api frameworks".   PS. also a push notification sent out to all clients when a turn has been completed is probably a good idea, so clients does not have to poll all the time.
  6. Multiplayer live interaction

    Just asking the question makes it obvious you are new to network programming and possible programming in general, but don't let that discourage you.   There are 2 ways you can go about this: Use a networking engine such as raknet (http://www.jenkinssoftware.com/features.html), this will allow you to get up to speed with a working solution as fast as possible. Learn low level network programming from scratch by following a guide such as Beej's guide to networking (http://beej.us/guide/bgnet/). This will take long time until you get a working solution but you get a good understanding about networking programming. If you want to be good at networking programming, you have to learn the low level details at some point.  
  7. I head that valgrind is quite popular, I have not used it myself but I friends that does and praise it. If you want to try it out you can find it here: http://valgrind.org/
  8. Web API for a turn based game?

    What about generating an encryption key on account creation be rather effective method? For example when a player signs up for the game, the server generates an ecryption key for further communication. If the client loses the key, resinstalling the client or whatever, the player would have to linked their account to an email address to verify and generate a new encryption key. This would mean that keys has to be spoofed at the rare occasions of account creation or key regeneration.
  9. You can try to use a static code analyser, it might find some edge cases why your code crashes.
  10. Unity Unity or C++?

    If you are a beginner, I would suggest going with Unity2D and using C# for the coding (I would avoid C++ and Unity's "Javascript"). Programming C# is real coding, you will learn a lot making a game in that.
  11. Game engine architecture

    If you need to some thing great, you probably have to do it 3 times. First time will most likely be a horrible failure, which by the looks of your diagram is indeed the case, but the lessons you get out of the experience are invaluable and will help you create something decent next time. This second time, you will most likely end up with somethiing that works, but is not that great and at last, in your third attempt you will hopefully get it right.
  12. Hello everyone. Perhaps some of you would be interested in reading a blog post i wrote about a game server I have been developing. http://www.flodihn.se/2014/11/11/social-game-30000-players-per-server/
  13. Free pixel art

    I think your initiative is great. However, your art is not very impressive. As a programmer my art skills are not very honed, but these tutorial helped me produce acceptable pixel art: http://www.pixeljoint.com/forum/forum_posts.asp?TID=11299 http://finalbossblues.com/thinking-in-color/ http://files.byondhome.com/TheMonkeyDidIt/BoilerRoomStyleGuide.html I suggest you take 2-3 days reading up on various pixel art tutorials, I think you can improve a lot.   I am attaching some simple pixel art I made after reading the above tutorials myself.  
  14. Hello everyone.   We are trying to set a world record with highest amount of players playing the same FPS on the same map or instance. At the moment we are aiming for about 10,000 people.   We have developed a simple FPS game to facilitate this test.   We are currently testing out our platform and need players who are willing to try out the game at some certain points in time.   Our next player test will happen tomorrow at 6 PM GMT.   Here is a download to the game:  http://www.abydosentertainment.com/WorldRecordClient   Our Twitter: https://twitter.com/AbydosGameDev        
  15. avoid ships colliding?

    I created a long collision box shooting out from the ship, if that box collider with another I knew the ship was in risk of colliding in the future. Then you can take the other ships speed and compare to yours with the length of the collision in mind and you have a pretty good guess if collision will happen or not.   I also used an aura mention earlier but I only used that for evading incoming fire, since is usually only good for detecting things really close.