Coronium - Community Roundtable

Hi,

You can set an index.html at the root and branch off from there, but currently you are not able to set a .lua file as an “index” at the root. I’ll be adjusting this in the near future.

You could issue a redirect in the index.html to push to a “index” .lua

-dev

Excited to hear more about Coronium Core! 

What about Coronium Push. It would be cool to send push notification via your own server for absolute control

While aware of Coronium, I’ve stayed away from it due to a lack of understanding of the server side. 

I did purchase and setup SkyTables with Digital Ocean, solely because the documentation was good and Digital Oceans cost was clear (and cheap). AWS always concerned me as I was worried about open ended costs IF I ever got a popular app or badly coded something.

If these products work on a similar architecture then I will definitely be interested in the core.

I’ll second push notifications.  I’m currently searching for a provider that will allow me to silently push a notification from one device to another target device and react without user interaction.

I missed this thread.  It came out during a period when the forums auto-mailer wasn’t sending emails as happens occasionally.

I will have feedback tonight.  Meanwhile… folks  please respond with thoughtful and detailed notes.

If you are on a tight budget and considering doing any MP or other work that would need a server Coronium will be a godsend.  I know from past experience.  So, help Chris make decisions on this.

The fact that Chris is looking for feedback Coronium is the best news I’ve gotten for a while!

@dev,
 
 
My Coronium Background/Experience
First, to hear you talk about Coronium and see that you’re looking for input is super awesome.
 
Second, my primary experience with Coronium came from using ‘Coronium Cloud’ to implement a few apps and this game (co-authored with Mike Hempfling of Crave Creative):
https://itunes.apple.com/us/app/picture-perfect-memory/id997082735?mt=8 
 
‘Corona Cloud’ had a number of features that I found very useful and a few I wanted to use, but which didn’t work for me or were missing a feature:
 
Top Features I Used

  • Lua Scripts On Server - In essence, one could write scripts to do work on the server that were entirely written in Lua.  i.e. No need to learn another scripting language.  This was AWESOME! and saved a ton of effort.
  • MongoDB API - ‘Coronium Server’ supported SQL and Mongo, but time and time-again MongoDB was my go to solution for storing data as it more closely matched the Lua Table concept.
  • Beautiful Management Console - The console for managing your databases, rebooting, etc. was awesome.
  • Tasks (wrong name) - There was a system that would run scripts on an arbitrarily timed basis.  I used this to generate daily challenges, change game themes, and to do bookkeeping on on-going player-versus-player games.
  • Easy Peasy Lemon Squeezy - You provided ready-to-go base images for AWS and Digital Ocean (yay!)  Getting started was an issue of about 20 minutes once you’d done it a few times.
    • _ Tip: _ I also later realized you could use these images on a locally running instance of Linux in a virtual machine.  Thus testing and development could be done entirely on the local machine assuming you knew how to use Virtual Box or another virtualization system.

Features I Wanted To Use and Why I Couldn’t

  • Script Caching - For some reason, when I cached scripts, the MongDB interface would occasionally encounter an issue with cursors and crash the server.  I fought with this for some time, but ended up just leaving the servers in ‘JIT compile’ mode (wrong name for it, but I think you will know what I mean).
  • Saving Files - You could upload files to the server and get back a link to that file.  This was great!  However, things I also needed and couldn’t figure out how to do were:
    • Delete a file.
    • Replace a file but keep the same link.
  • e-mail - The server allowed one to send emails from the server to any desired destination.  I had no problem sending the emails, but most recipients’ email clients marked them as SPAM.  (I mainly used this to send users forgotten passwords).
    • This was probably my fault because I was sending the emails from an anonymous server and couldn’t figure out to properly sign the emails so they would not get rejected as SPAM.
    • I only mention this because you might have insights for future updates to make this work better.
  • MongoDB Find and Related Searches - This worked OK for small returns, but when you had 100’s to 1000’s of records matching the criteria, it was very hard to split the results.
    • i.e. I wanted to get the first 100 matching records, then the second 100, third 100, …   
    • There was a way to limit the number of returned results, but I couldn’t figure out how to find the next set after those returned.
    • This was probably a ‘cursor’ thing I just didn’t understand.

Answers To Your Questions
 
Why Would I Use Coronium

  • Very functional.
  • Very Performant
  • Provides almost all features I need (see ‘Features I Wanted …’ above).
  • (Far) Easier to use and (way) more flexible than any service I’ve tried or investigated.
  • Total control of server.
  • Ability to dig in to source on server if needed. 
  • Cheap - Coronium on my own server was always an order of magnitude cheaper than any 3rd party paid solution.

How Would I Use It
I would primarily use Coronium to:

  • Manage Data for players (Skytable is great for the simplest cases of this) in SP and MP Games.
  • Manage sharing data between users in a ‘shared experience’ i.e. 2+ players in a game private just to the invited participants.
  • Host DLC.
  • Host dynamic game content.
  • Host user created content, both private and shared.
  • Manage user logins and passwords.
  • Implement chat (Chatbox rocks this, but I might need support the ability to be in both both ‘rooms’ and ‘worlds’ for bigger games).
  • Host and manage daily challenges and similar ‘generated’ / ‘randomized’ world visible content.
  • … more

While mailgun is a great plugin, it would be great to send mail via our own server versus a 3rd party server. 

Also, a time api on a lua server would be great because I like current time for deleting old database entries. 

This is great news Chris,

I’ve been using Coronium cloud for a year and a half for 2 tourism apps and it as works flawlessly both in term of robustness and stability. Our company prefer DigitalOcean which offer better control of cost than Amazon EC2. We have been burned a few times with Amazon EC2 for huge cost and poor performance server.

We’ve been using almost all features of Coronium cloud and the lua server script is key for us as it solve many problems in terms of synchronization of devices, etc. Keep this one please.

Our only problems and it was a big one was the file management in Coronium Cloud. Storing on Digital Ocean is not efficient for us. Amazon S3 is a clear leader in terms of speed and cost. If you could have Coronium Core to use S3 to save/load file it will be amazing. Offering also a richer API, to replace and delete file would also be welcome. One last API request for S3 file management would be able to set the expiration tag for file upload as this is a great way to reduce the number of files on S3.

On a dashboard side, having a stronger features set to edit/search mondodb records would be great, but this is not a p1. In our case we have build an admin Corona App for the data management.

Regards,
Nick

Hi,

Thank you all for the feedback so far. It’s very, very helpful.

S3 has been on the short list for awhile, especially now that I have the AWS auth figured out via Lua. Push of course is always a need, so will be working on a framework for that as well, though it will most likely be part of Coronium Core.

I really appreciate you all taking the time to respond.

-dev

Thanks Chris. Btw what I mean by push through Coronium I mean not using a 3rd party service like pushbots but directly through coronium.

Hey Chris,

I am interested in Coronium as a teacher for educational apps. I am specifically interested in making network based apps like Kahoot! or Quizizz.   Both of these are fine apps, but I’d like to be able to do things with my students that these apps can’t do.  Both apps are web based, support multiple users (students), are centrally managed via web page (by the teacher).   I love the fact that I can have 40 students competing with each other while I manage the whole thing.

I created an app with an earlier version of Coronium called SimplyData (https://play.google.com/store/apps/details?id=com.thinkatorium.simplydata&hl=en).   I used it to allow my statistics students to input their individual data and then be able to see everyone’s data.   The app works pretty smoothly.

So, here is what I am asking for:

  • An easy way to connect back end to dynamic web pages

  • I don’t even care if I had to switch over to Python for the web pages

  • I’d just like to have it so the the various app clients could all access the same MySQL (or Mongo) database and so could the dynamic web pages

  • Also, some degree of realtime would be necessary here.  If you ever get a chance to try Kahoot! or Quizizz, you’ll see that there is very little lag (and I find that to be true even with 40 kids using it at once, in my classroom, with various devices)

That’s my two cents.  Thanks for listening as always!

Michael

+1 with that. I would love to be able to use a server for hosting a website and coronium

Chris, this is exciting news!  I’m thrilled to hear about your planned expansions for the Coronium universe.  I fall into the category of people who went with Parse because it looked unsinkable but was then left floundering.  I switched to Coronium on Digital Ocean and was pleased with the results.

Why would I use Coronium?

Lua based

Easy to implement and maintain

I can run my own server - giving me more control and saving money

How would I use Coronium?

My apps need to store and reference JSON files

I would like to generate PNG’s from my apps and load them onto the server

I’m hoping to implement a trading system between my users.  I’ve been looking into PlayFab and GameSparks to do this but would much rather have control of it on my own server - especially if I can use Lua for the server-side scripting.

Thanks again Chris!

Jonathan

Hi Chris, I do hope you expand the Coronium features as much as possible.  In my case I miss database off-line management with automatic synchronization among server and several clients when connection is back to online. Because of this I had to stop working with Coronium and started a long journey with OpenResty in native mode using Redis Database (in server and local clients) in order to implement such synchronization solution based on UTC conflicts resolution. If you add this feature in the Coronium Roadmap (it can be in MongoDB instead of Redis), it will be a huge PLUS ! 

Thanks a lot for your nice work,

Filgs

Hi Chris,

This sounds awesome! I am new to Corona and Lua and I am enjoying the well documented Getting Started guide. My background is in web development and I am interested in developing a real-time multiplayer mobile racing game (similar to Fun Run). I am new to server side scripting with regards to game servers/backends.

I have been looking at:

AppWarp Corona SDK Color Move Sample

From what I know, these services can handle matchmaking, real-time chat, leaderboards, in-game characters (player data, virtual currency, inventory, statistics), handle spikes in traffic on the server end, handle some authority/security (GameSpark Features and PlayFab Features). Are these the features we can expect to get from Coronium Versus? I’m not expecting it to be fully packed right out of the gate but is it right to look at Coronium Versus as a replacement for these 3rd party services?

Also, I was looking at Coronium ChatterBox and its description said it could be used for real-time multiplayer games. Should I look into that or wait for Coronium Versus? I am hoping to release my game in 6-12 months from now.

As for my use cases, here are things I would like my real-time multiplayer game to do:

  • Users get matched with other users (4 players total)
  • Once 4 players joined the room then the race scene starts and obstacles will be randomly generated in the game and move from right to left on the screen (same obstacles on all 4 player’s screen)
  • User’s positions will need to be constantly updated on the other 3 player’s devices
  • Player’s could send preset messages that display on the screen but don’t need to be saved/stored anywhere
  • Users can compare high scores
  • Users will collect points which they can use to customize their character and/or purchase inventory goods

Sorry for the long post.

Cheers and thanks in advance.

Hi @elifares,

At this time, Versus is turn-based and only supports two player games. So this probably won’t work in your case. ChatterBox can be used as a messaging protocol and may be able to do what you need it to do, but lacks the other features you are looking for, though you may be able to implement some or most of them using SkyTable. But this might be work than just using one of the pre-made services.

Versus has a very specific use case; A two player, turned-based, authoritative server with a Lua API on the backend. In addition, it has a redis datastore. While Versus will most likely expand in its functionality over time, especially in the amount of players per game, I hesitate to recommend that you wait on that for your game development. Versus development is mostly being driven by a card game I am working on in my “spare” time, and thought the multi-player engine might be nice to release for others to use as well. 

I hope that helps answer some of your questions. As Versus gets closer to release I’ll be providing more information on its feature set, and talk with the community about future enhancements if there is an interest in the engine. Writing an engine like this is not trivial, so I’m working on it in phases. ;)  

Thanks for your interest in Coronium!

-dev

@flig.s - I have been playing around with some ideas for this feature. Nothing solid yet, but I do think it would be an interesting thing to add. I’ll keep you posted.

@michael714 and @Scott Harrison - Take a look at the Pages module in Coronium Core. Hopefully that can do what you need.

Thanks again for the suggestions.

-dev

@dev can we set index for site? I mean it would be cool if we could just have one server for game hosting and website. I mean it cool that you can make sites in the /sites folder.