Advertisement
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Recruiting Developers for new service

Comments in 'General Discussion' started by Falk, Dec 2, 2014.

  1. Falk
    Offline

    Falk Staff Member Global Moderator

    Joined:
    Sep 2, 2013
    Posts:
    1,710
    Plugins:
    22
    Minecraft User:
    Falkirknh
    I am planning a new service which will allow server owners to deploy servers for free (of very little, depending on how things work out) by using a small VPS for routing and per server Heroku apps. I have an idea for how this could be accomplished, in a way which would allow for users to have the Heroku apps attached to their own Heroku account. I am not going to go into a huge amount of detail here but if you are interested in helping out, please PM me.

    Skills Needed
    • PHP experience
    • Willing to use MongoDB
    • Some network experience
    Main tasks of project
    • PocketMine launcher for Heroku
      • Just get PocketMine running (Done!)
      • Bind to port to allow Heroku to change status to up (Done!)
      • Translate incoming HTTP requests to UDP and route them to PocketMine
      • Translate outgoing UDP packets to HTTP and send back to the VPS for routing to client
    • PocketMine patch to replace all file actions with a virtual file system stored in a database
    • VPS Proxy
      • Database mapping server names to Heroku app URLs
      • DNS server to point everything back to the VPS for routing (probably a little Node.js script)
      • Translate UDP packets into HTTP and send them to Heroku dyno
      • Translate HTTP requests from Heroku into UDP to be sent to a client
    Last edited: Dec 2, 2014
    EvolSoft and xFlare like this.
  2. iJoshuaHD
    Offline

    iJoshuaHD Notable Member Plugin Developer

    Joined:
    Nov 7, 2013
    Posts:
    1,201
    Plugins:
    4
    Minecraft User:
    iJoshuaHD
    what's heroku and its main purpose?
  3. Falk
    Offline

    Falk Staff Member Global Moderator

    Joined:
    Sep 2, 2013
    Posts:
    1,710
    Plugins:
    22
    Minecraft User:
    Falkirknh
    http://Heroku.com it allows you to deploy web applications in a variety of languages. If you use 1 dyno it is free but there are limitations.
    xFlare and EvolSoft like this.
  4. sekjun9878
    Offline

    sekjun9878 Staff Member PocketMine Team

    Joined:
    Aug 22, 2013
    Posts:
    108
    Plugins:
    1
    Minecraft User:
    sekjun9878
    Hahaha, I'm actually working on the exact same project :D

    Right now I am using Docker, Shipyard and PHP to get things orchestrated.

    You can see some libraries I made for this purpose here: https://github.com/cakepowered/
    One is a Bootstrap plugin for PocketMine which will configure it before it boots (proof of concept, not to be used for prod)
    The other is an automatic building script for PocketMine-MP-Soft phars. It downloads the phar, sets a url to download the bootstrap plugin on startup and bundles it all together inside a Docker setup.

    At the moment I am working on the IaaS side of things, mainly getting provisioning scripts written to automate the deployment of basic infrastructure (shipyard). Using individual VPS instances for each server is too costly to provide for free. Hence, Docker.

    Also, there's a landing page I scaffolded where you can get a theme of the general design, but then again I'm not a designer and that's just Flat UI Pro Bootstrap. http://cakepowered.gopagoda.io/

    I've thought about storing all PM data in a scalable, cloud-like way but I've found that to be way too complicated and too inflexible (will have to modify PM heavily for that, something I'm not up to) for the purposes of game hosting. It would be better to have a static instance, like a traditional game panel, but have the ability to migrate the server to other locations for flexibility. Like DigitalOcean.

    For the revenue, I was thinking of a full fledged MCPE host, except the free tier servers will be free for life. The free servers will have an ad displayed on the control panel, which hopefully(?) will pay for the server hosting costs.

    It actually doesn't cost much to host a PM server in a tiny scale: about $0.80 a month on my calculation (on DO with several servers per instance, it's about $1 on GCE. We can reduce the cost by overcommitting resources.) to host a 5-player small server not running 24/7 (shutdown when there are no players). So really, we only need to get 80 cents off every person that uses the free plan server for a month - I'm assuming that this won't be hard to do off ads. The rest we can get from actually selling big plan servers.

    This way, we can have a sustainable approach to providing free servers without compromising on quality. (well, for tiny scale servers anyway)

    Sample dashboard made with Flat UI Pro: https://twitter.com/sekjun9878/status/519461416797888513/photo/1

    The translation of the packet like you are proposing would be very difficult to do because 1. It would add too much latency and 2. The VPS would become a bottleneck.

    I look forward to working with you to make our awesome projects come to life :D I really need some help on the control panel bit.

    You know where to find me, on IRC.
    PixelGuy75 and iJoshuaHD like this.
  5. Humerus
    Offline

    Humerus Staff Member Plugin Reviewer

    Joined:
    Aug 23, 2013
    Posts:
    114
    Plugins:
    1
    Keep in mind, HTTP is TCP/IP. It will be difficult to send your data (UDP) bidirectionally and it'll ultimately result in timeouts. Heroku allows socket connections from inside a dynmo to the outside world, so you could create a server application on your vps and connect each heroku instance to said server. A great thing to use here would be Node.js because it can execute tasks asynchronously without a need to program more things.
    PEMapModder, EvolSoft and Falk like this.
  6. sekjun9878
    Offline

    sekjun9878 Staff Member PocketMine Team

    Joined:
    Aug 22, 2013
    Posts:
    108
    Plugins:
    1
    Minecraft User:
    sekjun9878
    Or alternatively, leave Heroku to serve HTTP apps and use a VPS instead :)
  7. PEMapModder
    Offline

    PEMapModder Notable Member Plugin Developer

    Joined:
    Oct 9, 2013
    Posts:
    7,325
    Plugins:
    11
    Minecraft User:
    PEMapModder
    "Willing to use MongoDB" xD
  8. LegendsOfMCPE
    Offline

    LegendsOfMCPE New Member Plugin Developer

    Joined:
    May 21, 2014
    Posts:
    21
    Plugins:
    3
    What about us?
  9. sekjun9878
    Offline

    sekjun9878 Staff Member PocketMine Team

    Joined:
    Aug 22, 2013
    Posts:
    108
    Plugins:
    1
    Minecraft User:
    sekjun9878
    NoSQL is a pain though + it's not suitable for new projects
    PEMapModder and iJoshuaHD like this.
  10. iksaku
    Offline

    iksaku Notable Member Plugin Developer

    Joined:
    Sep 2, 2013
    Posts:
    1,132
    Plugins:
    4
    Minecraft User:
    iksaku
    Well, just PHP :p
  11. iJoshuaHD
    Offline

    iJoshuaHD Notable Member Plugin Developer

    Joined:
    Nov 7, 2013
    Posts:
    1,201
    Plugins:
    4
    Minecraft User:
    iJoshuaHD
    yeah but how about mongodb performance vs mysql?
  12. sekjun9878
    Offline

    sekjun9878 Staff Member PocketMine Team

    Joined:
    Aug 22, 2013
    Posts:
    108
    Plugins:
    1
    Minecraft User:
    sekjun9878
    MongoDB is a document store whereas MySQL is a relational database. You can't compare the two because they're not used for the same purpose. It'll be like comparing a binary packet to a JSON.

    Whilst it is true that Redis - a key-value store which runs in-memory - is faster than MySQL, will you really use Redis in the place of a MySQL database?
    iJoshuaHD and PEMapModder like this.
  13. PEMapModder
    Offline

    PEMapModder Notable Member Plugin Developer

    Joined:
    Oct 9, 2013
    Posts:
    7,325
    Plugins:
    11
    Minecraft User:
    PEMapModder
    MySQL is most useful for searching purposes, like finding a row with a value within a range, and to order large data without PHP sort().
    EvolSoft likes this.
  14. iJoshuaHD
    Offline

    iJoshuaHD Notable Member Plugin Developer

    Joined:
    Nov 7, 2013
    Posts:
    1,201
    Plugins:
    4
    Minecraft User:
    iJoshuaHD
    managing MongoDB surely is a pain in the arse after googling and seeing this post :eek:
    EvolSoft likes this.
  15. PEMapModder
    Offline

    PEMapModder Notable Member Plugin Developer

    Joined:
    Oct 9, 2013
    Posts:
    7,325
    Plugins:
    11
    Minecraft User:
    PEMapModder
    Not really. If you only want to store things like strings on the database, mongo is easier.
  16. Humerus
    Offline

    Humerus Staff Member Plugin Reviewer

    Joined:
    Aug 23, 2013
    Posts:
    114
    Plugins:
    1
    Mongo is perfect for environments where the data you are dealing with is already in JSON format (Python and JavaScript). I will say Mongo is easier to use because you don't have to learn an entirely new language (SQL) and there are libraries readily available with great documentation.
  17. PEMapModder
    Offline

    PEMapModder Notable Member Plugin Developer

    Joined:
    Oct 9, 2013
    Posts:
    7,325
    Plugins:
    11
    Minecraft User:
    PEMapModder
    Except it's not for PocketMine.
  18. iJoshuaHD
    Offline

    iJoshuaHD Notable Member Plugin Developer

    Joined:
    Nov 7, 2013
    Posts:
    1,201
    Plugins:
    4
    Minecraft User:
    iJoshuaHD
    if it will be supported in the future, ill surely give it a try
  19. sekjun9878
    Offline

    sekjun9878 Staff Member PocketMine Team

    Joined:
    Aug 22, 2013
    Posts:
    108
    Plugins:
    1
    Minecraft User:
    sekjun9878
    You can still use it right now by using whatever library to connect to NoSQL DBs. No need for PocketMine support.
  20. PEMapModder
    Offline

    PEMapModder Notable Member Plugin Developer

    Joined:
    Oct 9, 2013
    Posts:
    7,325
    Plugins:
    11
    Minecraft User:
    PEMapModder
    But PocketMine doesn't have the mongo extension.
    iJoshuaHD likes this.

Share This Page

Advertisement