So, I have run into a bit of a problem.
I was intending to run my game using an old computer I was given. It has a cracked screen, and the people who owned it had no use for it. I got a portable version of NVDA on their, and I can use it, but I can't do a full install which is what I need in order to access the log in dialogue in order to switch users to an administrative one. I need to do this in order to assign a static IP, and adjust the firewall to allow my game to access the net. Now my next option is to find a dedicated server or VPS to host it. I don't know much about them, and my short bout of googling has left me rather warey of them all. I'm unsure of which ones are good, and which ones are bad. If any of you can provide me with some companies that are good then please post here. Thanks.
Alternatively, if you have any ideas on how I can get an administrative account loaded on my computer, that would do just as well.
The computer doesn't have an HDMI port so I can't have sighted help doing it.
So, I have run into a bit of a problem.
I don't know of any off hand, though I think i've run across a few in the past. I combed a few developer sites and came across an article recommending the VPS provider Digitial Ocean here, which is apparently used to host the TigSource forums. There's also this article on Kotaku which covers various hosting providers which you may find more useful.
Okay so, against my better judgement I'm going to try to head this off. I doubt that me bothering to say anything is going to matter, but I am at least going to be able to say that I tried.
Anything good capable of running Windows will almost certainly be $30/month and up. Using your home internet to host a game will almost certainly be beyond laggy. Using Windows as your host, if it's not your computer, becomes a constant battle between Windows Remote Desktop and NVDA Remote, with sighted help required as soon as you do even one tiny thing wrong. I amazed all my friends by managing to get it for $12/month, but the $12/month Windows options don't include things like backups or enough ram to do anything interesting (keep in mind that Windows uses a *lot*). The inexpensive options will also have horrible file I/O speeds, horrible network connections, etc. Windows licenses are expensive, the companies that offer them cheaply have to cut a ton of corners to do it.
People tend to hate me for pointing out major BGT shortcomings, but if you really, really want to make an online game, you're really going to want to write your server in something that can run on Linux. You can get very good Linux options for $10/month. Of course at this point you probably want to do the whole game in whatever language you pick. Doing something in two languages gets kind of sucky pretty quick. Almost anything at all that's not BGT or VB6 is fine for this purpose, though if you chose to use BGT for the client then you're going to want something that can talk to Enet (unless BGT has TCP sockets, but I don't think it does).
If you do this from your home internet, you need to find out if you have a static external IP as well. This usually costs extra, and you'll have to ask your ISP or someone with the paperwork. If you don't, then you also need to get dynamic DNS going, and that has a whole slew of other problems.
If you are going to do an online game, please, please, please do it right. Everyone here keeps making the same mistakes and having the same problems, and you've just set yourself well on the road to being in the same place as everyone else. I suppose it's possible that you have extenuating circumstances that make it better, for example a T1 internet connection or something, but that's unlikely.
If you do this on Linux, you can get to around $130/year to $150/year to do it properly. Wait for black Friday or something and you can go lower. If you do this on Windows, you're looking at $250/year minimum. If you do this on Windows via residential internet, you're looking at everyone avoiding you because of lag and downtime. Your choice, but if you're telling yourself that you'll just fix it all later or rewrite the server or something, that almost never happens.
250 a year isn't bad. If it's a game that everybody enjoys and something people show a genuine interest in I don't mind paying that much. I've optimized the code to require as little traffic as possible, but even so it's still quite a bit. I was only going to run it from my home server for initial testing since I had the extra machine, and to see how well it worked. I don't have t1 or anything, just 50 megs up and 50 down. I did the math, and for it to run without a hitch with it's current packet size and frequency of request, it'd have to be able to transmit at 11.3 kbps, and this is with around 25 peers connected, which is why I thought it would be enough to handle it.
5 (edited by camlorn 2015-12-23 01:15:20)
Yes, but there's a ton of other things. Residential internet is not meant for this kind of stuff. Just doing the math is not sufficient.
First, assuming you're using BGT, you're using UDP packets. UDP packets are not your friend. TCP gets special status for most ISPs as far as I know. I'd not be surprised if your effective speeds for UDP are tiny: the internet is allowed to just throw out UDP packets whenever and just because. The BGT networking object is fine if and only if your game can benefit from unreliable delivery, but most games actually don't and you lose all the advantages of TCP.
Second, a proper VPS is going to have better reachability and round-trip times to basically everyone. You don't have enough people to split the game into multiple servers, so being right on the backbone of the internet is essential. Most VPSs are.
Third, choosing Windows means that you will need sighted help. Via Linux and with someone like Linode, I can go so far as to access the emergency console and do everything without sighted help. Linode is expensive as Linux hosts, but the point is that the options are out there. When Windows breaks, you will need someone sighted. Even the initial setup of Windows is complicated, as NVDA won't install without audio. You'll have to learn how to walk sighted people through complicated procedures. Perhaps you already have someone technically inclined who can do this stuff for you. But Linux is set up as soon as you buy the VPS.
fourth, you have to use dynamic DNS. Perhaps it's possible to have dynamic DNS always work these days, but I somehow doubt it. So good luck telling if it's your game or not that's breaking.
Finally, if you're not learning to deploy from day one, that can be a stumbling point. Also, your game will perform much, much differently on a VPS. Local testing is fine when it's only you, but you should not be trying to run MMO-style games from your home for testing. You'll end up with all sorts of oddities, and quite possibly you'll be fixing bugs that don't even exist.
Online games are very hard. If you choose to use Windows for your hosting needs, you make it even harder. If you choose BGT, then you might as well go get your teeth pulled without anesthetic because you will be fighting it until the end of time (No good security. No good serialization. No database integration. No string templating, so no easy game status web pages. No localization/translation abilities).
And my last point: good luck deploying to Windows via version control. You are using version control, right? If you aren't, then just wait until the pain of how did I break this and I can't get back or ask my tools what I did starts.
6 (edited by sneak 2015-12-23 14:59:58)
Um, I don't know if this is what you are talking about, but It's capable of sending out TCP and UDP packets. You can choose which to send, you can also set up channels to listen on so you're not getting your UDP backed up or lost due to TCP packets being laggy. If this isn't what you're talking about then excuse me. Anyway, this isn't meant to be a long term thing. It isn't like I'm creating [wow] or anything, it's just a little project I have. If it crashes and burns that's fine. I don't really intend on having it up for more than a few months. As far as the VPS and dedicated servers go, I think I'll just try it out on my home connection first since you're saying I'll have pretty shit luck using one. I don't want to have to recode this stuff in another language because I'll feel like I'm making little to no progress. Once I'm finished with this one I might switch to another, but so far I haven't had any issues with it. I need to experience first hand what people are talking about. Sorry, they're not TCP, it calls them reliable and unreliable, but there's a note at the bottom that says all of the communication is donne with UDP.
Yeah, and being done with UDP is a very, very big deal. TCP works in lots more places because blocking TCP means no internet. Blocking UDP just means blocking online gaming, everything else still generally works. Enet is a good library for an FPS, but outside that it's a really stupidly bad idea. I get what he was trying to do, but TCP with TCP_NODELAY on works for most things. BGT doesn't give that to you.
Here's how this goes. Every. Single. Time. You will experience all the issues I've mentioned. Because you never learned anything better, you will not realize it. You will continue using BGT and Windows. Given enough time, you will duplicate around 5000-10000 lines of code. If you follow the typical pattern, these will not be shared with anyone, and the next person who does exactly what you're trying to do will also get to duplicate everything. I know you want the shortcut, but if your goal is to make online games capable of lasting, then you need to not take the shortcut. Like other shortcuts, it ends up being a longer way around. BGT is good for simple games only, and using it for something like this means that I can trivially cheat, that you'll never translate it unless you're willing to share source code or write your own framework, and that you'll have to duplicate a *ton* of other stuff that's usually just done for you. In the future you will open threads about things for which all the mainstream languages can give you answers in 30 seconds of Googling. Case and point: in C#, Java, Python, and Go, saving your entire level is only a couple lines.
But I've tried. I'm done. Good luck, I guess. I'm not sure why I even bother anymore. It's obvious that once someone picks BGT and Windows, there's no dissuading them. And yes, you tell yourself that you'll leave, but you know, I've never seen it happen. Not once. If people used proper tools and learned to program properly and took advantage of the 20 years of solutions to problems that this community solves over and over again, we might actually see advanced games from people. But you've just chosen the absolute worst set of tools for what you want to do because they let you play a sound in a few lines and come with a tutorial aimed at the blind, and like every other thread, I'm completely ignored by everyone.
So whatever, I can't say I didn't try. I don't know if I'll bother trying again. I guess the era of 1D side-scrollers and people asking questions that require entire discussions instead of a few lines or "here, just read this tutorial" will continue. Forever, I guess.
8 (edited by visualstudio 2015-12-27 19:55:37)
first of all, do not run your game in your home computer, because your computer must be turned on all the time
about buying a windows server, you must pay an amount of dollars monthly for windows license
but linux is open source and you can use it without paying for it
just you pay for the devices that you've bought
another thing is, linux is more secure than windows
you can use amazon cloud service for 1 year free of charge, and get VPS with 1 gb of ram, 30 gb of storage, 2 cores i think
but after a year, you have to pay for it
which you can buy cheap linux VPS
a special thing is, you can buy a vps with 512 mb of ram for 60 dollars yearly
is another good vps provider
this is another provider
i hope it helps
Another problem with running any game from your home connection is that many ISP's state in their acceptable usage policies that running servers of any kind is not allowed. If they detect that you're running a server, which could happen if they do probing or traffic analysis of their own or as a result of complaints from other users, they could shut your entire Internet connection down without warning.
Like people have said here, it is not a good idea to host from a home connection. Although I am doing that now for a game, a better solution would be a VPS. Linux is cheeper, but some game servers won't allow for hosting on linux, so windows is sometimes necessary. A few providers that work well are
http://vultr.com for VPS hosting. There is also a guide on 100 percent accessible setup with the NVDA screen reader
https://www.soyoustart.com for dedicated servers
Hope this helps a bit
Hi I just signed up with pocketmud.com they are hosting a coffeemud new game for me for $12.50 a month. She is great!
Also if you know of any good places I can find game staff for hiring, I'd love to hear. My game is loversliarsandthieves.com port 2222 but I have only just started it so I'm looking for builders.
Another good VPS hosting provider is Digital Ocean. You can get a good 512 MB with 1 core CPU servers with $5.00/mo.
13 (edited by defender 2015-12-30 09:54:02)
Hey that Digital Ocean one seems pretty promising...
You could go for the 20 bucks a month plan and set up a Paypal donate button with an option in the main menu of your game to go there, and if you wanted to make it more simple, you could just limit the amounts to 5, 10, 15, and 20 dollars respectively.
Just an idea, I think that would be enough power, and even if the donations didn't pay for the server it wouldn't be a huge deal to fork out that much on your own right?
So I found this topic by accident when I was working on my VPS on http://www.vps.net/ I started out with a Windows VPS, and I tried using WAMP to configure my wordpress site, but I started running into issues when I couldn't log into my web site using another browser due to the 403 forbidden message that I was unable to fix. I also don't know if IIS is accessible, and I'm not sure how to get it.
I heard that shared hosting companies, like GoDaddy, UltraHost, BlueHost, DreamHost, 00WebHosting, 1and1 Web Hosting, and stuff like that require you to use an FTP client or something. But my question is, if you are using a Windows server that obviously supports remote desktop protocols, why would you need an FTP client? why not use Windows Explorer? Also, Mac and Linux servers, which use Unix require an SSH client on Windows, like PUty, or Sigwin. I'm not sure which though.
Also, I've been curious to know how people set up http://developer.paypal.com/ order objects to work with BGT games, and whether or not that required additional my SQL databases. I mean, if I wanted to sell a product on-line and set up a shopping cart or basket, and then use PayPal to check out that product, I'd need to know what processes are used.
So my question is, are there any handholders here, or only people who can give pointers on how to get started?
I've been looking at places like Linode, Voltr, OVH, and Digital Ocean, along with Windows. The problem is, the majority of them are Linux-based, and if you want to host a windows-only game, I don't know what you'd have to do to run games like that successfully. Also, I tried running a TeamTalk server on my windows VPS, but I got an error message saying that ports 10333 for transmission connection protocol and user datagram protocol could not be opened, even though I ran it as administrator, and I allowed access from the firewall. So I have no idea what was going on, and I gave up.
I hate it when there are so many error messages coming up and very few people who are willing to help. It's like wandering around in the dark, bumping into dead ends. For once I wish a clear path would be laid out for me to follow.
To be honest, I don't understand why anyone would want a windows server, especially for games. For one, as many have stated before me, it's very impractical, and very difficult -- your battling windows and the game itself. Linux is far, far more popular and widespread than Windows is from a server standpoint. In fact, I'd go so far as to say that 99 percent of all servers on this planet run Linux. Hell, 99.5-99.7 percent do, even. The reason, of course, is the fact that from the start, Linux was meant to be a server-based operating system, although it certainly has branched out into embedded systems and desktops. Windows is simply way, way too complicated to work with as a server; the fact that companies that do sell it as a server have to cut corners just to get the prices as cheap as they are clearly shows that.
As for the DigitalOcean thing, yes, that is a good option, although it certainly has a major issue: the console -- which, you will find, is incredibly useful sometimes -- is inaccessible with screen readers. No screen reader that I know of works with the Canvas HTML 5 element, which makes that part impractical. Linode's prices are very good; in fact, the benefits definitely outweigh the cost, so I'd highly recommend it. For $20.00/mo with Digital ocean you get 2 GB of RAM and 40 GB of disk space. With Linode you get 4 GB of RAM, 48 GB of disk space, 2 CPU cores, 3 TB transfer, 40 GBPS network input, and 1000 MBPS of network output. Let's also not forget the fact that you also get node balancing, longview, stack scripts, a very usable and accessible emergency console via standard SSH using Cygwin's OpenSSH client, and more.
So my question is, how do people run their games, especially BGT games like STW and RS? You'd need something that can be compatible to run them, and from what I heard, Windows is required to run BGT games, unless there is another way that you or anyone else hasn't explained.
17 (edited by jack 2017-08-08 03:49:50)
Hate to break it to you like this, but the clear path for you to follow, is to just get Linux. To hell with windows servers. I'm sorry, but it's true. Windows Server is just a costly endeavor you do not want to endure, no matter how worth it the game may be. It costs $0.00 to get Debian Gnu/linux on a home system and play around with it, if that's your concern. But if you're paying for a windows vps, then surely you have more than enough to pay for a Linux vps, since most are half the price. If learning Linux is what you want to do, then Ubuntu is not for you. Firstly, a handholding OS isn't gonna help much. Second, don't even get me started on Unity, which is a joke of a graphical user interface I regret having ever spent a moment of my precious time with. And that's what Ubuntu comes with, which means you have to replace the core with gnome/mate. Cut the work in half by installing a bare bones image that comes with no desktop environment. Get Debian and install Gnome or the Mate core environment with none of the extras. The webbrowser and email program are easy to install after. Then get it talking yourself. The time spent will be well worth it, and is, in my opinion, a good first exercise for beginning to use Linux's commandline interface. Linux is a user friendly operating system, it's just very picky about what its friends are. And the way to run server executables depends on what they are written in. Normally you can just run them through wine. Another approach would be Mono and asp.net for any .net-written servers, particularly that of three-d velocity. But I agree with what Austin aka Camlorn said that using a windows server is an extra mile you don't need to walk.
Regarding static ip's and dns, though, I do have an honest question. I have two kinds of servers running on the raspberry pi I have, for experimental use so I'm definitely not expecting anything great out of them. But I have an nvda remote server running just fine. I also have a tdv server, and a teamtalk server, and the reason I bring up teamtalk is because that's what pushed me to ipv6. Is the ipv6 address assigned to your device static? Btw, the public one for the pi is 2602:306:c537:d5e0::3a. Now as far as ports, tcp/udp port 10333 is forwarded. And I have bound the server to the specific ipv6 address, since it said ip binding was often required for Linux boxes. I am able to connect to this box on the mac, not using my router-given ip but using the public ipv6 address, but the teamtalk app on android consistently fails to connect to the server, even though my server credentials are exactly as they should be. Is this an error on my part, or does Teamtalk for Android not support ipv6? I got mixed signals when looking up ipv6 support on android. Some say it works on wifi but not the 3g radio, some say it's not present but the version of android makes a big difference, we're running 8.0. If anyone has advice, that would be great.
@imaginingstuff your message caught me off guard, so let me give you some advice. Everyone has a mud. I can host one from my house or I can spin up a $5 digital ocean and run one. Unless you're a wonderful leader, have a vision you can sell to someone in 30 seconds to get their attention and know what you're doing don't bother looking for builders. Unless you can code, don't bother even running a mud.
STW and Redspot both run on a windows server, cost sam like $120 a month if I remember correctly and you'd be amazed if you knew the issues he deals with as a result of using BGT. As Camlorn already said, the solution is simple, don't use it. You can start with a $5 linode (there's no actual bonus to digitalocean unless you run FreeBSD--and if you're asking these kinds of questions you don't and shouldn't), and you get more ram. $10 gets you two gb and unless you just fling memory out the window that should hold you over for a good long while. If you build a webserver into your game or host your own website, use Nginx--it's light weight and just works well.
@17 and 19, definitely agree.
@16, Windows server is entirely pointless, and your not going to learn shit about Linux if you go with it. If you want to join the Linux community, then you *** must *** use Linux, no questions asked.
@17, Also, it turns out that in Ubuntu 17.10 Unity is going out the window, thank God! But I'd wait for Ubuntu 18.04 to actually use it; as Cris Fisher in the Linux Action News for Jupiter Broadcasting put it, "It's just a testing ground, of sorts." (And he was referring to 17.10 by the way.)
@16, Now, if you want to get reaaaaaaaaaaaally familiar with the command-line interface (later on, I mean, not now!), go ahead and give Arch Linux a try. You just might learn a few things along the way, though if you do give it a shot I'd be careful at certain stages of the installation (mainly, of course, partitioning and the boot loader). But that, I hope, will come later -- not right away.
As Jack has pointed out more than once though, there's Wine and Mono, and now .NET Core to run windows apps (although .NET core is no longer bound on windows). And if you want to run games, you might as well learn Python -- Wine can only get you so far, and it certainly is nowhere near ready to run complicated systems. So, your best bet would to use wine, and if wine doesn't work, give up on attempting to run windows games on Linux. It simply isn't practical. (Then again, programming a server in BGT isn't really practical, either, since it's not cross-platform...) (And no, don't criticize me for that -- anyone who does obviously doesn't know how true that statement is.)
@jack, for your IPv6 questions, I can't relate to your server software or Android, in particular. But you need IPv6 on your phone, on your border firewall (I assume, as you're posting here with IPv6, you have that already), in your server OS, and in your server software. I'd start by testing with test-ipv6.com or ip6.me. Those services can tell you if you have reachability to the IPv6 Internet from your cell phone with Wi-Fi disabled.
Good luck and have fun on the IPv6 Internet! The water's lovely. And you'll find, too, that there's much less port-scanning in here.
I do not recommend running archlinux as a server. it's nowhere near stable enough and the rolling releases don't let you run on lts.
Also the last comment about IPV6 was odd, but don't rely on security through obscurity. Portscans happen on IPV6 as well...
@sorressean: not security by obscurity, host security. Firewalls are obsolete. With IPv6 there is simply no need for packet filters because the sole justification for them in IPv4, that they co-exist with NATs, has been removed. But that is another debate for another day. In the meantime, 2^64 is a lot of addresses, so in fact IPv6 provides plenty of space to hide your hosts in. Really. Your SSH scans will simply disappear when you move them to IPv6 only. Give it a try.
You're joking, right? A firewall doesn't just do NAT, it does a lot more. It provides rate-limiting, it blocks all ports except the ones you want, it allows you to lock down the attack surface of your systems. Firewalls are nowhere near obsolete. Yes your hosts can "hide" in ipv6 space, but that doesn't mean it will never get attacked...
You're joking, right?
A firewall doesn't just do NAT, it does a lot more.
A firewall doesn't do NAT at all. It's a firewall--a packet filter. The fact that the code for firewalls and NATs occupy the same space is merely indicative of a lot of shared responsibility. It makes sense to put your NAT in the same place you put your firewall, because a lot of what both do is shared. But they are absolutely not dependent on one another for operation. There are a lot of NATs out there which provide limited or no security whatsoever. And their firewalls which provide packet filtering for publicly routed address space, but no translation.
The point I am making is that, in IPv4, you have to run a firewall because you have to run a NAT. In fact, my IPv4 NAT also provides very limited security, too, but by virtue of its state tables, it does provide some security--security I would sooner dispense with, I might add. But because I have only one IPv4 address now, I don't have a choice about imposing a NAT between the public and private networks.
It provides rate-limiting, it blocks all ports except the ones you want, it allows you to lock down the attack surface of your systems.
None of that is necessary because properly secured hosts simply don't require a defensive security posture to be secure. If your problem is the attack surface, then reduce the attack surface. If your problem is too many requests, then limit the available resources your OS and software consumes, or if that is not possible, use IPsec associations at either end to provide legitimate authentication. Trying to "protect" your hosts by simply denying incoming traffic, on the theory that they are safe as long as they can't be reached from the outside, while permitting any and all traffic outbound, is an utterly obsolete and discredit security model. Just ask Sony.
Firewalls are nowhere near obsolete. Yes your hosts can "hide" in ipv6 space, but that doesn't mean it will never get attacked...
The IPv6 Internet is end-to-end; traffic can and should reach the host it is destined for. Hosts must be secure on unprotected networks, especially now that they are becoming more and more mobile. You must not rely on perimeter security. I could understand a default filtered posture for firewall-equipped routers only because of the woeful state of host security today (basically IoT and Windows) but it mustn't be the end goal, because there are simply too many other ways to bypass the perimeter (like, say, that IoT stuff which builds gratuitous outbound tunnel sessions just to work properly). I appreciate that this is a radical approach, but it really is the only long-term goal. If you disagree, then put your firewall rules where your mouth is: build a state-tracking firewall that only permits outbound sessions you explicitly approve.
I said it was a whole other discussion.