Seeking advice for backend system design and framework for a new game2019 Community Moderator ElectionWhen should new .NET projects be designed for .NET 4 FrameworkCore Data on client (iOS) to cache data from a server StrategyUsing NodeJS for a big projectTemplate management similar to Shopify - Architecture RecommendationsConnect Nodejs Faye-Client to Rails Faye serverSeeking architecture advice regarding Redis vs RabbitMQ + AerospikeHow to design a news feed system like google reader?Java/Android front-end client and node js backend server?Web socket connection for AndroidApproaches to delegating development to team members

Why is Beresheet doing a only a one-way trip?

The bar has been raised

In the late 1940’s to early 1950’s what technology was available that could melt a LOT of ice?

Is it true that real estate prices mainly go up?

Grey hair or white hair

Replacing Windows 7 security updates with anti-virus?

Why is there a voltage between the mains ground and my radiator?

Am I not good enough for you?

Space in array system equations

Should QA ask requirements to developers?

Why doesn't this Google Translate ad use the word "Translation" instead of "Translate"?

Are babies of evil humanoid species inherently evil?

Good for you! in Russian

Logic. Truth of a negation

Look through the portal of every day

How do I locate a classical quotation?

Should I take out a loan for a friend to invest on my behalf?

Do I really need to have a scientific explanation for my premise?

Who deserves to be first and second author? PhD student who collected data, research associate who wrote the paper or supervisor?

Is Gradient Descent central to every optimizer?

Can you reject a postdoc offer after the PI has paid a large sum for flights/accommodation for your visit?

Aliens englobed the Solar System: will we notice?

Built-In Shelves/Bookcases - IKEA vs Built

PTIJ: Why can't I eat anything?



Seeking advice for backend system design and framework for a new game



2019 Community Moderator ElectionWhen should new .NET projects be designed for .NET 4 FrameworkCore Data on client (iOS) to cache data from a server StrategyUsing NodeJS for a big projectTemplate management similar to Shopify - Architecture RecommendationsConnect Nodejs Faye-Client to Rails Faye serverSeeking architecture advice regarding Redis vs RabbitMQ + AerospikeHow to design a news feed system like google reader?Java/Android front-end client and node js backend server?Web socket connection for AndroidApproaches to delegating development to team members










0















I'm working as a Software Engineer in a gaming company and our product team has come up with a new game for Android and iOS (a casual isometric game like Gardenscapes). Our team has to setup the backend system for the game (yes, it's gonna be a network-based game where client-server communication happens via REST calls). We have experience working with legacy systems but have not really built systems required for game play and related, from scratch. In that regard, we are reaching out to the community seeking the necessary guidelines for building such a system by a budding team such as us...



I've collected a few requirements that I thought would be required to keep in mind to decide on the backend design and the framework to choose:



  • The game is gonna have isometric gameplay and a meta gameplay. As it
    is isometric, it would need real-time updates. - So we would need to add a web socket I believe (any suggestions would be helpful). And
    this also means that there are going to be background jobs which need
    to completed by the server at a later point in time.


  • Game data (or the market data) for the gameplay is going to be
    managed at the server by a live ops team. So, we need an admin tool for this. There are of course multiple entities in the game and are
    definitely going to be related to each other (currently it's mostly
    one-to-many but going ahead there could be many-to-one and
    many-to-many as well). So, I was thinking MySQL would the best
    option.


  • Expected total installs initially (first 3 months) would be expected
    at 1 million and over a lifetime it could go up to 5M. DAU could be around 100K. The game is gonna have a metagame as well, so it is
    expected that a player is gonna spend 50% of the time in meta gameplay
    (no requests would be sent during this time) and 50% in isometric
    gameplay (where there would be requests to the server for updates) in a
    given session. And a session length could be around 30 mins. For
    this, should we be prepared for sharding from the beginning? If so,
    I'd like to understand which is preferred (sharding at the application
    layer vs DB layer) and the reason for it.


I've good expertise in rails (6 years of working experience) and a decent one in server-side javascript (NodeJS, express and some modules attached to these)



My initial inclination was towards rails as I believe it solves the above problems well enough (please correct me if I'm wrong!). Although I really liked the async style of processing in NodeJS (I've developed some APIs on this), I'm not sure it has the feature-rich MVC framework (I've used the only express) such as rails.



Thank you very much for the patience of going through the above request!



Awaiting your valuable inputs...










share|improve this question




























    0















    I'm working as a Software Engineer in a gaming company and our product team has come up with a new game for Android and iOS (a casual isometric game like Gardenscapes). Our team has to setup the backend system for the game (yes, it's gonna be a network-based game where client-server communication happens via REST calls). We have experience working with legacy systems but have not really built systems required for game play and related, from scratch. In that regard, we are reaching out to the community seeking the necessary guidelines for building such a system by a budding team such as us...



    I've collected a few requirements that I thought would be required to keep in mind to decide on the backend design and the framework to choose:



    • The game is gonna have isometric gameplay and a meta gameplay. As it
      is isometric, it would need real-time updates. - So we would need to add a web socket I believe (any suggestions would be helpful). And
      this also means that there are going to be background jobs which need
      to completed by the server at a later point in time.


    • Game data (or the market data) for the gameplay is going to be
      managed at the server by a live ops team. So, we need an admin tool for this. There are of course multiple entities in the game and are
      definitely going to be related to each other (currently it's mostly
      one-to-many but going ahead there could be many-to-one and
      many-to-many as well). So, I was thinking MySQL would the best
      option.


    • Expected total installs initially (first 3 months) would be expected
      at 1 million and over a lifetime it could go up to 5M. DAU could be around 100K. The game is gonna have a metagame as well, so it is
      expected that a player is gonna spend 50% of the time in meta gameplay
      (no requests would be sent during this time) and 50% in isometric
      gameplay (where there would be requests to the server for updates) in a
      given session. And a session length could be around 30 mins. For
      this, should we be prepared for sharding from the beginning? If so,
      I'd like to understand which is preferred (sharding at the application
      layer vs DB layer) and the reason for it.


    I've good expertise in rails (6 years of working experience) and a decent one in server-side javascript (NodeJS, express and some modules attached to these)



    My initial inclination was towards rails as I believe it solves the above problems well enough (please correct me if I'm wrong!). Although I really liked the async style of processing in NodeJS (I've developed some APIs on this), I'm not sure it has the feature-rich MVC framework (I've used the only express) such as rails.



    Thank you very much for the patience of going through the above request!



    Awaiting your valuable inputs...










    share|improve this question


























      0












      0








      0








      I'm working as a Software Engineer in a gaming company and our product team has come up with a new game for Android and iOS (a casual isometric game like Gardenscapes). Our team has to setup the backend system for the game (yes, it's gonna be a network-based game where client-server communication happens via REST calls). We have experience working with legacy systems but have not really built systems required for game play and related, from scratch. In that regard, we are reaching out to the community seeking the necessary guidelines for building such a system by a budding team such as us...



      I've collected a few requirements that I thought would be required to keep in mind to decide on the backend design and the framework to choose:



      • The game is gonna have isometric gameplay and a meta gameplay. As it
        is isometric, it would need real-time updates. - So we would need to add a web socket I believe (any suggestions would be helpful). And
        this also means that there are going to be background jobs which need
        to completed by the server at a later point in time.


      • Game data (or the market data) for the gameplay is going to be
        managed at the server by a live ops team. So, we need an admin tool for this. There are of course multiple entities in the game and are
        definitely going to be related to each other (currently it's mostly
        one-to-many but going ahead there could be many-to-one and
        many-to-many as well). So, I was thinking MySQL would the best
        option.


      • Expected total installs initially (first 3 months) would be expected
        at 1 million and over a lifetime it could go up to 5M. DAU could be around 100K. The game is gonna have a metagame as well, so it is
        expected that a player is gonna spend 50% of the time in meta gameplay
        (no requests would be sent during this time) and 50% in isometric
        gameplay (where there would be requests to the server for updates) in a
        given session. And a session length could be around 30 mins. For
        this, should we be prepared for sharding from the beginning? If so,
        I'd like to understand which is preferred (sharding at the application
        layer vs DB layer) and the reason for it.


      I've good expertise in rails (6 years of working experience) and a decent one in server-side javascript (NodeJS, express and some modules attached to these)



      My initial inclination was towards rails as I believe it solves the above problems well enough (please correct me if I'm wrong!). Although I really liked the async style of processing in NodeJS (I've developed some APIs on this), I'm not sure it has the feature-rich MVC framework (I've used the only express) such as rails.



      Thank you very much for the patience of going through the above request!



      Awaiting your valuable inputs...










      share|improve this question
















      I'm working as a Software Engineer in a gaming company and our product team has come up with a new game for Android and iOS (a casual isometric game like Gardenscapes). Our team has to setup the backend system for the game (yes, it's gonna be a network-based game where client-server communication happens via REST calls). We have experience working with legacy systems but have not really built systems required for game play and related, from scratch. In that regard, we are reaching out to the community seeking the necessary guidelines for building such a system by a budding team such as us...



      I've collected a few requirements that I thought would be required to keep in mind to decide on the backend design and the framework to choose:



      • The game is gonna have isometric gameplay and a meta gameplay. As it
        is isometric, it would need real-time updates. - So we would need to add a web socket I believe (any suggestions would be helpful). And
        this also means that there are going to be background jobs which need
        to completed by the server at a later point in time.


      • Game data (or the market data) for the gameplay is going to be
        managed at the server by a live ops team. So, we need an admin tool for this. There are of course multiple entities in the game and are
        definitely going to be related to each other (currently it's mostly
        one-to-many but going ahead there could be many-to-one and
        many-to-many as well). So, I was thinking MySQL would the best
        option.


      • Expected total installs initially (first 3 months) would be expected
        at 1 million and over a lifetime it could go up to 5M. DAU could be around 100K. The game is gonna have a metagame as well, so it is
        expected that a player is gonna spend 50% of the time in meta gameplay
        (no requests would be sent during this time) and 50% in isometric
        gameplay (where there would be requests to the server for updates) in a
        given session. And a session length could be around 30 mins. For
        this, should we be prepared for sharding from the beginning? If so,
        I'd like to understand which is preferred (sharding at the application
        layer vs DB layer) and the reason for it.


      I've good expertise in rails (6 years of working experience) and a decent one in server-side javascript (NodeJS, express and some modules attached to these)



      My initial inclination was towards rails as I believe it solves the above problems well enough (please correct me if I'm wrong!). Although I really liked the async style of processing in NodeJS (I've developed some APIs on this), I'm not sure it has the feature-rich MVC framework (I've used the only express) such as rails.



      Thank you very much for the patience of going through the above request!



      Awaiting your valuable inputs...







      javascript ruby-on-rails architecture software-design






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 7 at 8:12









      Egon Allison

      5521319




      5521319










      asked Mar 7 at 7:40









      KamalKamal

      12




      12






















          1 Answer
          1






          active

          oldest

          votes


















          0














          SECRETS FOR CREATING A GOOD SOFTWARE OR APP



          CLICK THE LINK BELOW TO GET A FULL TRAINING STEP-BY-STEP



          https://softwaresecrets.com/livewebclass?cf_affiliate_id=1562928&affiliate_id=1562928






          share|improve this answer








          New contributor




          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.




















          • link not working

            – tomrlh
            Mar 7 at 12:41











          • Kind of promotion?

            – I B
            Mar 7 at 12:42










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55038456%2fseeking-advice-for-backend-system-design-and-framework-for-a-new-game%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          SECRETS FOR CREATING A GOOD SOFTWARE OR APP



          CLICK THE LINK BELOW TO GET A FULL TRAINING STEP-BY-STEP



          https://softwaresecrets.com/livewebclass?cf_affiliate_id=1562928&affiliate_id=1562928






          share|improve this answer








          New contributor




          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.




















          • link not working

            – tomrlh
            Mar 7 at 12:41











          • Kind of promotion?

            – I B
            Mar 7 at 12:42















          0














          SECRETS FOR CREATING A GOOD SOFTWARE OR APP



          CLICK THE LINK BELOW TO GET A FULL TRAINING STEP-BY-STEP



          https://softwaresecrets.com/livewebclass?cf_affiliate_id=1562928&affiliate_id=1562928






          share|improve this answer








          New contributor




          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.




















          • link not working

            – tomrlh
            Mar 7 at 12:41











          • Kind of promotion?

            – I B
            Mar 7 at 12:42













          0












          0








          0







          SECRETS FOR CREATING A GOOD SOFTWARE OR APP



          CLICK THE LINK BELOW TO GET A FULL TRAINING STEP-BY-STEP



          https://softwaresecrets.com/livewebclass?cf_affiliate_id=1562928&affiliate_id=1562928






          share|improve this answer








          New contributor




          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.










          SECRETS FOR CREATING A GOOD SOFTWARE OR APP



          CLICK THE LINK BELOW TO GET A FULL TRAINING STEP-BY-STEP



          https://softwaresecrets.com/livewebclass?cf_affiliate_id=1562928&affiliate_id=1562928







          share|improve this answer








          New contributor




          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.









          share|improve this answer



          share|improve this answer






          New contributor




          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.









          answered Mar 7 at 12:27









          Dick ChikadzaDick Chikadza

          1




          1




          New contributor




          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.





          New contributor





          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.






          Dick Chikadza is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.












          • link not working

            – tomrlh
            Mar 7 at 12:41











          • Kind of promotion?

            – I B
            Mar 7 at 12:42

















          • link not working

            – tomrlh
            Mar 7 at 12:41











          • Kind of promotion?

            – I B
            Mar 7 at 12:42
















          link not working

          – tomrlh
          Mar 7 at 12:41





          link not working

          – tomrlh
          Mar 7 at 12:41













          Kind of promotion?

          – I B
          Mar 7 at 12:42





          Kind of promotion?

          – I B
          Mar 7 at 12:42



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55038456%2fseeking-advice-for-backend-system-design-and-framework-for-a-new-game%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          How to get text form Clipboard with JavaScript in Firefox 56?How to validate an email address in JavaScript?How do JavaScript closures work?How do I remove a property from a JavaScript object?How do you get a timestamp in JavaScript?How do I copy to the clipboard in JavaScript?How do I include a JavaScript file in another JavaScript file?Get the current URL with JavaScript?How to replace all occurrences of a string in JavaScriptHow to check whether a string contains a substring in JavaScript?How do I remove a particular element from an array in JavaScript?

          Can't initialize raids on a new ASUS Prime B360M-A motherboard2019 Community Moderator ElectionSimilar to RAID config yet more like mirroring solution?Can't get motherboard serial numberWhy does the BIOS entry point start with a WBINVD instruction?UEFI performance Asus Maximus V Extreme

          List of MPs elected to the English parliament in 1640 (April) Contents List of constituencies and members See also Notes References Navigation menueNational Archives – The Glynde Place ArchivesCobbett's Parliamentary history of England, from the Norman Conquest in 1066 to the year 1803'Aldermen in Parliament', The Aldermen of the City of London: Temp. Henry III – 1912onepage&q&f&#61, false 229