I’ve made a game with Unitys networking.
Obviousely it’s player limits are an issue.
How much harder is smartfox? can you still do RPC the same?
Also do you need pro?
I’ve made a game with Unitys networking.
Obviousely it’s player limits are an issue.
How much harder is smartfox? can you still do RPC the same?
Also do you need pro?
It’s completely different then Unity’s networking, best thing to do is grab the island demo for sfs v1 or the new FPS demo for sfs v2 and look how it’s done.
Could anyone point me at the FPS demo for v2?
I can’t find any example projects.
first sticky here :
http://www.smartfoxserver.com/forums/viewforum.php?f=20
Thank you.
I’d say, that the networking is similar to a lot of other networking products - and that Unity’s networking is “different” ![]()
But go ahead and take a look at the various examples. I’d definitely go with SFS2X at this point - cant beat the price and there are now examples from basic connection over tic-tac-toe turn based game to the FPS example with semi-authoritative server. Then again I’m biased ![]()
/Thomas
Looking at Photos specs wouldn’t it be faster than Smartfox?
Faster in what way? Less bandwidth per request? More throughput on server? More throughput on client? Faster to develop with (developer time)? Less resources (CPU, mem)) taken on server? Less latency in transport (not really a product specific thing)?
/T
C++ and pure UDP vs Java and UDP TCP mix
There is more to speed than what language you use. But you would have to compare the offerings based on real life performance test results. The SFS guys are working on SFS2X whitepapers in that regards.
On the UDP vs TCP/UDP thats more a religious question. UDP in itself is smaller yes - but not necessarily faster. UDP was invented in the modem days to solve a problem at that time. In broadband days (in my oppinion) UDP is much less a good thing. A lot of firewalls for example need to run their rulesets on each individual packet to filter then - something that isnt an issue for TCP where the firewall only has to check the first few. Thus UDP can actually have a higher latency than TCP in some cases.
At least in SFS2X you have the choice of pure TCP or pure UDP on a per-use case basis.
I am in no way talking down on the Photon offering. I am saying, that “old religious beliefs” are not always true just because you heard them thousands of times. And there is more to “faster” than what protocol or language you use. E.g. who would 5 years ago have thought that you could get away “scripting” C# for a game in something like Unity vs. having to code everything in assembler.
/Thomas
Yeah but to quote you “get away with” yeah Unity is fantastic and amazing that you can do what you can with so little code, but it’s never going to be where a native C++ game is.
Unity provides huge ease of use, and time saving because of that tho.
But if Smartfox is slower because Java is slower than C++, and theres no gain in ease of use or development time because of it then?
–
I’m just trying to weight them up here, I’ve looked at both and from a user point of view, they seem very similar,
Its way way more complicated than simply saying C++ runs faster than Java though (not even a true statement in itself). This is server side - almost all big pro server systems are written in Java. Scalability options are so much more standardized on server side on Java with things like Terracotta etc. All that has to (usually) be reinvented on C++.
So imho its simply not possible to pick one over the other by simply comparing what the server side was made in. You can write slow and buggy code in either language which will offset any gain in the compiler/runtime interpreter. E.g. the socket library used might eat lots of CPU compared to the other and thus cap how much throughput you can get.
As said earlier - you need to compare real performance numbers from a user perspective - and thats not going to be easy in itself.
With that said, I am very sure that either of the 2 products will serve your needs. Some very very large companies have picked both products after some evaluation projects. So both are good - and most likely much better than 99% of indies will ever need.
Personally I would worry much more about support costs, what development languages you have on your team etc. If you dont know Java, then the costs of you being able to write good server code will be higher than picking something that you know.
In general I’m unsure what it is specifically you are worried about. You can handle 5-digit number concurrent users on a single server (at least in SFS2X - dont know the numbers for photon). If you have that number of users, you worry about other things than if your code runs 2% faster on solution A than B.
Thomas: You are absolutely right: There is no guarantee that what has been correct once is today. Do you have numbers or more background to the “TCP routes faster in some cases” topic? Sounds reasonable but I wonder if it’s something developers should look out for.
The main reasoning against TCP is usually that you don’t have a lot of control, when things go wrong. And if Nagle’s Algorithm is enabled (for some reason), TCP is less suitable for realtime gaming. Anyways: Most servers support UDP and TCP, so that’s not a criteria.
glass22: Comparing raw performance for servers is pretty difficult (all by itself) and even if you find comparable tests, their scenario won’t match yours in most cases.
C++ is not even the lowest level you could go. A few years ago, game devs exclusively used C and Assembler. Using Unity 3d and some server framework is more about convenience and about getting stuff done instead of being stuck with pointers.
You should take a look at the available solutions, find out how you like either development framework and how it suits your needs. You will likely develop with one of them for several months, which means you should invest a few days of assessment at least. You also spend some time if you are looking for a new TV ![]()
Edit: Photon is running a C++ Core for the low level stuff but on top of that, the game logic framework is written in C#. It has the full DotNet framework at your fingertips, so make use of the awesome solutions like http://memcached.org…
I’m looking into them both a lot, I like how Photon uses Hash tables.
But Smartfox has more documentations and examples and it can run on Linux.
So i’ll keep looking.
Hi Tobias, thanks for chiming in.
On the UDP/firewall issue - its muddy waters as usual. A quick search on google with “udp latency in firewalls” and “udp firewall cpu usage” give you a gazillion answers in all directions. And I’m sure a lot of it its very application specific. My argument on this topic simply is, that there is no simple “UDP is better than TCP” answer. The answer is “it depends” as usual ![]()
Some good answers are in this thread - networking - UDP vs TCP, how much faster is it? - Stack Overflow
/Thomas
Hehe. Yes, muddy water all around ![]()
Your point came across (no worries). I just wondered if the routing speed is something that changed dramatically without anyone taking notice.
As we are talking about “things you think you know”: Linux is extremely good and stable and cheap. However, it’s not as good with networking I/O as Windows is, so in the end, you might need more hardware than you would need with Windows servers.
But again: Before you would have to worry about this marginal difference, you did a lot of game logic optimization and with the number of customers you should be in a good position by then.
Linux is super, super stable in comparison.
I’m pritty sure EX3 was about the same speed for IO as NTFS, but EX4 was faster, and BTRFS was much faster.
Would be worth you guys testing with a BTRFS.
I was talking about network IO and socket implementations, not about the file systems used.
And of course I don’t want to turn this into an OS comparison thread. Instead I wanted to say: each system has it’s pros and cons.
In “old days” I’ve been on projects comparing performance on socket implementations. Windows was better in the java implementation on higher loads with individual socket calls being faster on Unix. Dont know if this is still true, as I havent taken part of performance tests the last few years.
So yeah - dont disregard Windows simply because its Windows. (And I’m a Linux+Mac guy for the last 15 years).
But its similar to the original discussion. Not every tool can fit every situation - use what you need for the job at hand given the parameters in your decision making process. Dont have java people? Dont use java backend. Dont have IT operations that want Windows in the server park? Dont use a Windows solution. Dont care because you are all alone? Use whatever you are willing to learn.