Interest in login system?

I recently had the thought of working on a sort of on-premise login system for Unity games and selling it.
Before I put in too much work I’d like to gauge how much interest there is for something like this.

Some details:

The system is built on a Node.JS TCP socket server. Doing it this way I think lets me add many more powerful/engaging features than your average “My First PHP Login” system - since communication with the server is a real-time socket connection rather than limited to request/response over HTTP.
It could also help reduce network traffic for the same reason - for instance, let’s say the system has a PM feature (which it probably will) which notifies users when they have a new message in their inbox. Now we could go with PHP and have the client poll the GetMessages.php script every X seconds. OR, we can have the client just sit back and wait for a notification from the server.
There’s also what happens when a user tries to log in on multiple machines at the same time, and how to handle logging out. In PHP, there’s no real good solution for this (there’s no active connection, so you can’t really detect when a user closes the game without explicitly logging out). But, with a NodeJS server I can easily keep track of logged in users associated with active sockets. Socket dies? Log out the user. User tries to log in on another machine? Check currently logged in users, don’t let them log in if they already are.

That said, here’s what I’m thinking for feature list:

  • Login/registration/password reset (of course). Configurable behavior for multiple login (player tries to login to the same account on multiple machines at the same time) - either refuse new connection, or disconnect previous connection.
  • Admin actions. You can temporarily disconnect users (which will immediately log out that user and give them a warning message), can ban users (which will log them out, give them warning, and not let them log back in), etc.
  • Friends lists. Players can send friend requests to other players, accept or decline requests from other players, and view profile information of their friends. Players will also get online/offline notifications of their friends.
  • Messaging. Players can send messages to their friends (in real time - client gets instant notification of new message)
  • Game invites. Players could invite their friends to whatever match/room they are currently in (“[player name here] has invited you to a match” or something like that)
  • Stats/Leaderboards. You can submit stats from the client - like Kills, Deaths, Wins, etc. You can also requests ranked player listings of any stat from the server - daily, weekly, monthly, or annually.
  • Achievements. This ties into the stats system, so you could create an achievement list which consists of Name, Description, Tracked Stat, and Threshold. When a stat is submitted from the client, if it meets the requirements of an achievement the server automatically notifies the client that they have unlocked the achievement. Could also have the achievement automatically increment a particular stat upon being unlocked (gamerscore, anyone?).
  • [MAYBE] Gamercards. The NodeJS solution could, in addition to the socket server, also provide an HTTP server which could let users share Gamercard URLs (which would serve up a dynamic image with their stats and such), embed them as forum signatures, etc.

As mentioned, this would be on-premise (purchase and install on your own server), not a hosted solution. It would be built on Node.JS and MongoDB, and the code would be completely open to modification.
Thoughts? Any interest in something like this?

Would it work in C# as well? I have a master server set up and am looking around for a login system and a way to implement persistence, and this sounds like a great solution. Would my server have to be based off of a socket server as well?

The server would be (and is being) built on NodeJS and therefore written in Javascript, but of course the client code would be C# (being implemented in Unity).

One thing I’d like to do is provide a REST API for the server. So while on the one hand the server would accept socket connections from clients, it would also accept some commands over HTTP which you could use from a custom-written lobby server (for instance, check if a user is logged in, check if the user is banned, update the user’s stats, etc)

Sounds very promising. If you really going to implement all listed above features I’m really interested. It looks like both node.js and MongoDB should work fine on windows platform. Can I ask you why did you choose MongoDB? Is it because they speak the same language and work well together? Why you do not want to use more classic DB like mysql?
And what’s the price going to be?

Good luck!
PS I like your USpeak chat solution!

My main reason for using MongoDB is because documents are stored in BSON, which as it turns out translates quite easily to JSON. In my case, I’m using the Mongoose package, which makes it quite easy to serialize JSON to documents and retrieve them later with a fairly terse API.
I’ve used MySQL in the past and while it’s good, I think MongoDB and schemaless databases in general make sense for this project. Being schemaless means for example I can have a generic “stats” object into which I can stuff any value I want (kills, deaths, coins, etc) and query for later (leaderboard implementation).
It also makes things a lot more object-oriented. I have a User object which encapsulates everything about a user (name, email, stats, achievements, friends, inbox, etc) rather than having, say, an Accounts table and a Stats table and an Achievements table and a Friends table and an Inbox table and so on.

Price, I’m not sure. Not less than $100, I think (there’s a lot of work that goes into a project like this).

Combu is $40, why will yours be worth $60 more? Seriously asking, not being a dick, I really want to know.
Thanks

this would be nice,
here are some thoughts:

  • why mongo nosql?
    people here are striving for mysql db all over the place, at least for me mongo for db is a turnoff.
    think of ulink uGameDB uses nosql, and noone uses it, why? go figure, people just like mysql

-think of this: are you going to create a brand new backend networking server with the specified features? if so then $60 to 75 can be appropriate,
think Tnet is a great and optimized and polished networking server for unity and it sells for $65

if you are not creating a brand new networking backend server for unity, and only a login system with the features you specified the you should consider around $25 to 35 price tag.

at $100 pretty much none will be interested imho since price will be too steep for the package.

i mean, you can price it how ever you like, 100, 200 or even 1000, but will people buy it? just think all the work you will be doing for 1 or 2 sales. not worth it.
and if you price it at 100 to start then you see no sales then drop the price to 35 or even 50, then people will think your product failed to deliver and wont think it will be worth to even spend 40 for it. marketing is a bitch.
so do yourself a favor, listen to the people, price you products fair and affordable and you will do volume sales than pricing high and do 1 or 2 sales.

just my .02

good luck with your project.

25-30 is fair price for PHP homemade solution. What PhobicGunner has mentioned is professional login system that does not exists on asset store yet. I think $100 is too much but $50-70 is ok for me. I like good professionally developed solutions and ready to pay for them.

Well, it’s quite a lot of work to be honest, especially for a one-man undertaking.

From the looks of it, mine will also be a bit more fully-featured than Combu. For instance, communication between the server and game client will be done via TCP sockets rather than HTTP, so the connection is persistent and realtime.
This allows some much better features, like being able to receive realtime notifications when your friends go online or offline, send messages to them in real time, invite them to a match, and more (which as far as I can tell Combu does not support, or if it does it’s likely limited support due to the REST nature of it).

In my opinion, NoSQL just makes sense for my use case for a variety of reasons. It would have required significantly more effort to use MySQL for really no benefit as far as I can see.
In any case it’s going to basically handle all communication with the database (your client just submits statistics and perhaps custom save data as JSON), so really the question is this:
From the point of view of the game client, what makes MySQL any better than NoSQL?

well, you are the one who is going to invest the time to create this plugin/asset
do not make the same mistakes other people do. look for most popular selling assets on the store and just think why?
what are them selling more than others.
one thing ive notice the usage of nosql db in unity is not as appealing as mysql.
mysql does not make it better than nosql or the otherway around, it is just what people likes better
most if not 85% of userbase looking for a backend database system for persistent data prefer mysql.
ulink uGameDB failed completely by usinf riak as DB to hold persistence data, total fail, prtty much noone likes it.
why? go figure. that is the way it is.
but if you going to build a product and you like better nosql , then be my guest, unfortunately most people dont like it and it will reflect your sales drastically. trust me. just go for what your target market want not what you like since you want to sell it , right?

anyways. if you product is not an actual server networking platform, and just doing a plugin to a third party networking server and want to price it high because it is very undertaking and time consuming, then i really recommend you to not waste your time,
just do something else since people wont buy it, there is not enough value to pay a steep price for such a thing.

but, it is for you to decide, you asked for it , you got it.
best thing to do is listen to your targeted market.

So what you’re saying is don’t mention NoSQL and nobody will ever know… :wink:

a brand new backend networking server with the specified features? if so then $60 to 75 can be appropriate,

Go beg to another place, 60/75$ for a “a brand new backend networking server with the specified features” if you ware my client i would

ROLL MY ASS OFF LAUGHING OUT VERY LOUD IN YOUR FACE…

btw if 100€ is to much i wonder what do you think of Photon and such, hahaha, dont bargain for a ferrari when you cant aford one…

Thank you for the reply :sunglasses:

One extra thing I’m doing is being able to somewhat robustly detect when the client closes or logs out (even if it crashes or the internet goes out).
While not exactly a “flashy” feature, it is quite convenient.

So basically on the one hand if the client is closed normally, it sends a sort of “end” message to the server (this is just by nature of how TCP sockets work). If the client crashes, generally the OS will clean up and release the socket (and therefore the server gets an end message in this case too).
This still leaves the case of internet going down, in which case the server would never receive the end message (because, naturally, the internet is down and there’s no way for the end message to reach the server).
So to that end I’ve implemented a very simple ping-pong protocol. Client pings server every 15 seconds, and server responds with pong. Each end then keeps track of the last time they received any type of communication from the other endpoint (including pingpongs). If this time exceeds 25 seconds, then the connection is assumed to have ended unexpectedly. So in the very worst case scenario for disconnections, the disconnection will be discovered after at most 25 seconds.

The thing this allows me to do is keep a persistent state of who’s online and who’s offline. This is used for two things: keeping track of when friends go online and offline, and also gives me an easy way to ensure that a single account cannot log in more than once at a time. So if a user tries to log into the same account on several machines at the same time, the first one will succeed and subsequent attempts will be denied.

lol,
well i am glad i am not you client, and i doubt noone will be, with your ahole attitude towards clients as you just showed your dark side,
plus i dont think your little peanut brain can actually create an asset to sell in unity, lol and more lol.

listen you knucklehead, because that is what you just showed me that you represent by posting the childish comment and behaviour, tnet sells for $65 a very complete networking backend for unity, photon , smartfox etc… those are very polished neworking engines, more than 8 years in the polishing, hence their prices.
there is even a complete mmorpg server backend called atavism online, created in java with all the mmorpg features login, quests, skills,abilities, advancements,pvp etc… and it starts at $45.

if you look at multionline kit it sells for $45, this last one pretty much have most the features talked about here, it uses mysql , php scripts tho to interact with it, but it is a very hot product in the assetstore.

but anyways i wont argue with pea brained knuckleheads like you, you will never get it, lol
where do creatures like you come from, lol, under the rocks towards the hills? lol,

cheers mate. :slight_smile:

nooooo, you really have to mention otherway youll get lots of chargebacks, ive seen lots of people doing chargebacks in the assetstore due of developer no specifying their product feature, ie: some scripts made in unity script and people doing chargeback because they thought it was c# and developer not specifying it etc…
eatherway, clients will find an excuse to get their money back and keep the product for free. so be careful with that.
cheers

I think we all need to calm down here.
Deep breath in. Hold it… exhale. There, better. :wink:
Now, then.

So, if someone charges me back the minute they discover I’m using MongoDB over MySQL (which they would only discover if they dug into the server backend - if they used the clientside features they would never even notice), then they never would have purchased it had I mentioned it used MongoDB in the first place. So essentially it’s the exact same situation.

That aside, you mention that MySQL products sell better than NoSQL products. The problem is that I see no evidence of this.
What I can see is that there are more MySQL products than NoSQL products, and the reason is very likely because PHP has built-in bindings for MySQL rather than NoSQL being less marketable.
uLink is somewhat of an unfair comparison, since you can’t purchase uGameDB separately at all (not that I could tell - I’ve purchased uLink and the only option is to purchase the whole suite as a single package). So it’s incredibly difficult to say what the profitability of uGameDB is by itself.

If you do have actual figures or examples, please do share them. I would consider that extremely helpful for my decision making process.
Otherwise, I just don’t see this and at the moment I don’t see a concrete reason to use MySQL, especially given the benefits of using NoSQL for this particular use case (especially considering that I want to design this so that end-users never have to touch a line of database code - so whatever I go with makes no difference to them).
I especially don’t want to select a database solution purely for marketing - that sounds like a horrible way to develop anything. Which would you rather I do - pick MySQL because I think you’re more likely to pay me money, or pick NoSQL because I’m focused on providing a good framework?

well, just trying to help bro,
would not like you to make the same mistake that others have,

but as you said, it is your choice and time, not mine or ours.

at the end you will be the only one that will benefit or loss of the outcome, since it is your time invested, not mine.

i wish the the best of luck in you project and hopefully youll make the right decision.

cheers

My thiny brain uses Photon SDK and native C# and made an full master server.

On top of that im suing uLink as GameServers for this:

And all the Assets you talking about that sell for 40/60€ are rip’s offs that uses unity built in network or PHP+WWW, and every decent developer knows how much it sucks.

You keep talking about PHP scripts you know a php script cant handle an MMO or you big brain doesnt know shit about networking and is just pricing an asset based on your wallet ?

You also talk shit about uGameDB, but sory to desapoint it, but uGameDB is 1000000x suit for MMO´s than any asset that sell’s for 40/60€, its also 1000000x than MySQL, its also can be 100000x than MSSQL if porly implemented, so get your facts straigth because bashing anything because you dont like it or lack the knowledge to understand what it does or how it works

@PhobicGunner Dont listen to un-informed forum users just because their short wallet , develop an quality product and price it based on Time To Develop + Custumer support needed, and market your asset with the pros and cons vs those rip of assets.

I personally believe that PHP could handle some high-stress situations with some smart design. But, for this particular project, PHP simply isn’t a good fit - it’s designed for REST-ful communication, which just wouldn’t do for the features I have planned.