• Advertisement

gameplay data in a cloud for mmo?

Recommended Posts

Hi guys,

I was wondering is it a good idea, to keep gameplay data in a cloud. In MMO games you have a lot of different for example weapons.
And balancing the game is crucial. Which means for example balancing unit properties, weapon properties like speed, health, damage etc.

What is the best way to keep those properties? static in an app or in a cloud?

In cloud you can change things in realtime. So if something is overpowered you can nerf it down without doing any app updates etc.  

How you would guys do it?

Share this post


Link to post
Share on other sites
Advertisement

The cloud is just someone else's computer. So when you say "keep gameplay data in the cloud" what you're really referring to is what we mean when we say "store data on the server". Almost all MMO data is stored on the server - the player's computer usually just holds data needed for display and audio purposes, such as graphics, animations, sound effects, music, etc. The main gameplay data such as weapon and skill info has to exist on the server anyway, because the server has to run the game rules and decide who wins and loses (etc). And often it's not desirable to send it to each player because then a cunning player can examine their game data files to discover weapons and skills that they haven't yet uncovered in the game.

However, it is often still necessary to send patches to clients when server side data changes, for several reasons:

  • maybe the code needed to change to accommodate new data
  • maybe the client-side data references server-side data in some way and those references need updating
  • maybe the data needs caching on the client for performance reasons

Share this post


Link to post
Share on other sites

"Gameplay data" is kind of a broad concept, but if we're talking about unit/item properties that might change in the future, I would go for storing them in the game server. And I'll assume that when you talk about "the cloud" you are talking about some sort of game server and you know roughly the purpose and effort that goes into implementing these things.

We're talking about a multiplayer game here, so you'll need to have the data available in the game servers for any calculation that affects multiple players anyway, unless you want to trust the client to do that calculation (hint: don't).

You could, of course, have that data hardcoded in the game client also and use it in the local simulation, but, as you mentioned, it's nice to be able to change that data dynamically, so I don't really see any benefits in hardcoding that data in the client besides it being easier to implement.

Share this post


Link to post
Share on other sites

Hi guys,

Thank you for so fast answer. Yes by cloud I mean a server where we store data in db.
I want to store those properties on server, and in the game they are downloaded and stored in the memory. 

Basically everything would be taken from server and stored in memory, just assets of the game like graphics etc. will be stored normally in the app.

Sound ok? :)

Also I was thinking about be able to add new content for the game lets say a new weapon via in game downloads.

I want to do unnecessary game updates as user likes everything automatically. So maybe there is a way that I can just store assets and properties of new weapon in db and it gonna be downloaded to the game.

Is this a good way to do it? Of course not everything you will be able to do like that, just some parts.

Share this post


Link to post
Share on other sites

Usually with an online game, you don't need to "download" the game data, because the actual game which uses that data is running on the server. Each player just has a client application which provides a view of the running game. It's just like this website - all the data for the threads and the users is stored on the gamedev.net server, and you just use your browser to see pages that the site sends you.

How to update a game that is running is a complex process and there's no simple right or wrong answer there. If you structure the data and code well, then you might not need any patches at all, again just like you don't need to update your browser if a website changes its articles or layout. It's certainly possible to send data to a client when it's needed instead of up-front in a big patch; but if the data is large, you can't send it only at the moment the player needs it, because it would take too long and hold up the game during play. So these are considerations you would need to weigh up.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Advertisement
  • Advertisement
  • Popular Tags

  • Advertisement
  • Popular Now

  • Similar Content

    • By Strifexxx
      Hi guys, check out our new game about sticks. Feedback welcome!
      Download on Google Play: https://play.google.com/store/apps/details?id=com.stickman.destruction.annihilation4
      Youtube:
      Stickman Destruction 4 Annihilation is a sequel to the legendary game of survival, where to make incredible tricks, driving different transport and getting into different crash! The game is made in the best traditions of simulator games with ragdoll physics elements. Make incredible jumps and tricks and destroy the enemy! Your task is make the finish alive or dead!




      Website: http://strifexxx.wixsite.com/cyberpony
      Facebook: https://www.facebook.com/groups/577850349043463/
      VK: https://vk.com/club122273704
    • By EddieK
      Hi I am having this problem where I am drawing 4000 squares on screen, using VBO's and IBO's but the framerate on my Huawei P9 is only 24 FPS. Considering it has 8-core CPU and a pretty powerful GPU, I don't think it is not capable of drawing 4000 textured squares at 60FPS.
      I checked the DMMS and found out that most of the time spent was by the put() method of the FloatBuffer, but the strange thing is that if I'm drawing these squares outside of the view frustum, the FPS increases. And I'm not using frustum culling. 
      If you have any ideas what could be causing this, please share them with me. Thank you in advance.
    • By EddieK
      Hi, so I am trying to implement packed VBO's with indexing on OpenGL but I have run across problems. It worked fine when I had separate buffers for vertex positions, colors and texture coordinates. But when I tried to put everything into a single packed buffer, it completely glitched out. Here's the code which I am using:
      this.vertexData.position(0); this.indexData.position(0); int stride = (3 + 4 + 2) * 4; GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, buffers[0]); GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, vertexData.capacity()*4, vertexData, GLES20.GL_STATIC_DRAW); ShaderAttributes attributes = graphicsSystem.getShader().getAttributes(); GLES20.glEnableVertexAttribArray(positionAttrID); GLES20.glVertexAttribPointer(positionAttrID, dimensions, GLES20.GL_FLOAT, false, stride, 0); GLES20.glEnableVertexAttribArray(colorAttrID); GLES20.glVertexAttribPointer(colorAttrID, 4, GLES20.GL_FLOAT, false, stride, dimensions * 4); GLES20.glEnableVertexAttribArray(texCoordAttrID); GLES20.glVertexAttribPointer(texCoordAttrID, 2, GLES20.GL_FLOAT, false, stride, (dimensions + 4) * 4); GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, buffers[3]); GLES20.glBufferData(GLES20.GL_ELEMENT_ARRAY_BUFFER, indexData.capacity()*2, indexData, GLES20.GL_STATIC_DRAW); GLES20.glDrawElements(mode, count, GLES20.GL_UNSIGNED_SHORT, 0); The data in vertex buffer is ordered like this:
      Vertex X, vertex Y, vertex Z, Color r, color g, color b, color a, Tex coord x, tex coord z and so on... (And I am pretty certain that the buffer I'm using is in this order)
      This is the version of the code which worked fine:
      this.vertexData.position(0); this.vertexColorData.position(0); this.vertexTexCoordData.position(0); this.indexData.position(0); GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, buffers[0]); GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, vertexPositionData.capacity()*4, vertexPositionData, GLES20.GL_STATIC_DRAW); ShaderAttributes attributes = graphicsSystem.getShader().getAttributes(); GLES20.glEnableVertexAttribArray(positionAttrID); GLES20.glVertexAttribPointer(positionAttrID, 4, GLES20.GL_FLOAT, false, 0, 0); GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, buffers[1]); GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, vertexColorData.capacity()*4, vertexColorData, GLES20.GL_STATIC_DRAW); GLES20.glEnableVertexAttribArray(colorAttrID); GLES20.glVertexAttribPointer(colorAttrID, 4, GLES20.GL_FLOAT, false, 0, 0); GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, buffers[2]); GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, vertexTexCoordData.capacity()*4, vertexTexCoordData, GLES20.GL_STATIC_DRAW); GLES20.glEnableVertexAttribArray(textCoordAttrID); GLES20.glVertexAttribPointer(textCoordAttrID, 4, GLES20.GL_FLOAT, false, 0, 0); */ GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, buffers[3]); GLES20.glBufferData(GLES20.GL_ELEMENT_ARRAY_BUFFER, indexData.capacity()*2, indexData, GLES20.GL_STATIC_DRAW); GLES20.glDrawElements(mode, count, GLES20.GL_UNSIGNED_SHORT, 0); This is the output of the non working code:

      From this picture I can see that some of the vertex positions are good, but for some reason every renderable object from the game has a at least one vertex position of value 0
      Thank in advance,
      Ed
    • By smit patil
      Can I use SFML to create a android app and is it good idea to do so ? I am so confuse right now to choose between SFML and SDL to learn . I liked SFML cause it is more Object oriented but Don't have android support(yet) on the other hand SDL have android support but is C based API.Some post on github tell that it is possible to use SFML in android but my question is that is it good Idea to do so? will app made in SFML C++ perform worse or equal to Java app on android ? I am really noob to Android and Game development.I can Only make some small Android apps using Java on Android and some some Calculator level apps using GTK+ on Linux, So I am pretty noob here. I don't know which to chose SDL or SFML but as My requirement for Android and Linux please also suggest me that should I choose SFML or SDL for learning ?
      Thanks for help in advance
    • By jamespierce
      Screenshot: Pixel Memory
  • Advertisement