   I have an idea, but which language will do it best?
  Hello,Anyone ever play Baboviolent 2? If not, just imagine a 3rd person overhead Quake game where all the players are Billard balls that can't jump. Now imagine either of these implemented as an online multiplayer web-based game. What I need help with is deciding on a language that could do this BEST.NOTE: This is an ANALOGY used mainly to convey the speed and complexity of the game I envision; I do NOT plan to plagiarize Baboviolent 2 or Quake.I considered using pygame, then stopped. :PI then considered writing a plug-in to allow browsers to run pygame ... laughed hysterically for several hours ... and finally decided against that too.So I'm thinking of either Java, C++ (cringe), Flash, or some people have suggested using a mixture of &#106avascript / AJAX / PHP (wtf?) I presume to distributed the load between the server and the client? Actually the latter sounds very interesting, if slightly un-conventional.Anways, I don't have time to try all of them, but I do have time to rapidly assimilate a new language with reckless abondon and devote each mintue by body isn't doing something essential for my survival to hacking out code. ^^This is where you come in:What language would be best suited to writing an online web-based multiplayer game that could support at least 8 and ideally 16 people. The graphics will be simple and cartoon, trivial really, but my main concern is delivering a fast-paced lag-free high frame rate game and 2) designing a simple UI allowing users to navigate games in much the same way non-web-based games are designed (think TF2 or Counter Strike etc)Thanks in advance.PS Languages I know well are: Python, HTML, CSS, &#106avascript (still learning), PHP, MySQL, C (still learning)   
  What you want is to develop a network top view shooter.In this type of games the delay is very important, you do not want the clients to see their opponents jumping between positions, so you need something very efficient and you would also need to make it secure (server driven).Here are a couple of options if you want a browser based game:- If you go with C++, then you would need too write plugin for all kind of browsers and all kind of operating systems, so they could run you game.- Flash: it would require a lot of tweaking and optimization. the problem with flash (up to the current version), is that none of the players can be the "server". and by server I mean the machine getting all the messages in a client/server archit. you would need a standalone flash server (or just a message server to route messages between clients and this can be written in C++ and hosted on a dedicated box).- Unity: Unity is proven to be cross browser and cross OS. It has a large set of tutorials, and it supports networking. If you do not to spend time developing browser plugins and just focus on gameplay, I would say Unity is the way to go.- as for &#106avascript/ajax/php: ignore the comments you get as it seems people who suggested them do not know what they are talking about. AJAX: is just a way to load another page or request from the server without leaving the page. so if you develop a game in this way, every simple message will be very slowly transmitted, instead of direct server communication. AJAX is good for websites or small games, not games like the one you want develop (you want minimum delays).Hope the above was helpful.   ;  If you already know Python then why not go for Panda3D? It already has a browser plugin written for it.   ;  For the servers I would say Erlang is the best choice by far.For the client, if you want a cross-platform program C++ or Python using Ogre Rendering Engine. (Panda3d is implemented on top of Ogre)If you want your game to be playable through a web browser I guess Flash is viable option. I read something about Java3d but I am not sure if it has support for browsers.   ;  My bet would be java if you need speed. See games like minecraft for instance. (which can be coded to run in flash just fine, which is a surprise to a lot of people).However, without knowing what you want to do it's hard to say. I've done flash network programming and there's no real problem rendering a lot there if you use bitmap rendering. However, at the resolution you probably want it's not a viable option.Since Unity was mentioned that might work really well. It would have a lot of what you want already done graphic wise.Quote:Original post by ZeRaW- as for &#106avascript/ajax/php: ignore the comments you get as it seems people who suggested them do not know what they are talking about. AJAX: is just a way to load another page or request from the server without leaving the page. so if you develop a game in this way, every simple message will be very slowly transmitted, instead of direct server communication. AJAX is good for websites or small games, not games like the one you want develop (you want minimum delays).Ajax Latency to my C++ Socket Server. XMLHttpRequest works pretty nice with a web server. It opens a continuous connection. If you use long polling all you basically have is overhead from the protocol which is around 100 bytes and then the normal TCP overhead. I've heard COMET can work well along with other solutions. My current project is just using PHP with unix domain sockets and is designed to break this myth. However canvas rendering is too slow in firefox until they switch their &#106avascript engine so it's not a viable option for the resolution you probably want.   ;Quote:Original post by jackthechemistWhat language would be best suited to writing an online web-based multiplayer game that could support at least 8 and ideally 16 people. The graphics will be simple and cartoon, trivial really, but my main concern is delivering a fast-paced lag-free high frame rate game and 2) designing a simple UI allowing users to navigate games in much the same way non-web-based games are designed (think TF2 or Counter Strike etc)The best way to do this is to host the game as close to players as possible. I don't think anyone plays CS with more than 50ms latency. Since it needs to run with browser, it will use TCP. Due to lack of out-of-order delivery the experience will rely on praying that players have next to no packet loss. Resends will kill update rates.Next, design the simulation input and interpolation model to tolerate up to 200ms latency. Preferably, have no action that requires faster response.Then, implement that in the language of your choice. It doesn't really matter at that point. All language are capable of routing packets, and the biggest gain will come from short connections. The only impact language will have is jitter, but given its in browser and implies TCP, there is no maneuvering room for languages to improve upon.For client-side, Flash is about only practical option. AJAX is unsuitable due to highly inconsistent browser support and poor user experience with regard to input.Realistic frame rates for browser peak at 30, but it might make sense to aim at 15 for non-trivial graphics or disproportionate effort into optimizing the client. Simplistic 3D with ~1000 triangles is somewhat viable at these rates, depends on audience. Papervision does its job fairly well so it's likely not necessary to reinvent the wheel here.For server, anything goes. Python is fine. So is &#106avascript if feeling adventerous with node.js. PHP isn't all that great since it's stateless and would require some workaround. C works as well, but is probably not worth the effort.   ;  "BEST" depends on your value system.Is it more important to get great frame rates in the client, or more important that most players can play without going through a separate plugin download/install? Flash has the best installed base of any technology. HTML5 is coming up, and has websockets to help with communication. Instant Action will let you take a native application and target a browser plug-in with a download.Is it more important that you understand every line of what is being run, or that you get it working quickly? The Unity web player is great, and indie projects can develop in Unity very simply. (The "pro" cost isn't that terrible, either) However, Unity is a large system which you won't learn in a couple of week-ends.How important is it that you run in a browser at all? If the user has to download a plug-in, you might as well download a "fat client" installer. At that point, any game engine will greatly accelerate your development -- Unreal Engine, C4 Engine, Irrlicht, etc.;  I reckon this is a really good candidate for unity 3d - It will run in the web easy enough - the engine is very powerful (I love the demo's i've played), and if its anything like Babo you won't need too much skill to implement as much of the graphics and game-play is extremely simplistic.Flash is good, but it sucks on the processing side.(I haven't actually used unity, and I'm not madly in love with it, but a think it is the best match for this kind of project).On the server side, do what ever is easiest - any language will be fast enough, its just picking the one you are most comfortable with.   ;Quote:(Unity) It will run in the web easy enoughIt will require a plug-in install for the vast majority of users. If you are OK with requiring the user to install a plug-in (basically, press "accept" on that scary warning dialog the first time), then there are many options besides Unity, including rolling your own and using something like Instant Action to put it inside a browser plug-in. Really, when it comes to plug-ins: the user acceptance/installer button is the biggest issue; everything else is small potatoes by comparison.Quote: if its anything like Babo you won't need too much skill to implement"it" meaning what? The original poster's game idea?My suggestion is that you need, at a minimum, aptitude and persistence to make anything actually work right on the Internet. In addition, skill certainly helps, no matter what the other situation is.;  If you are concerned about speed, flash is just a no-go.  Everyone has it, but it is unfathomably slow.Since you want web based, (and everyone who said ajax/&#106avascript is a moron.) then you are left choosing stuff that will run as a plugin in a browser.  That leaves 3 choices:  Developing your own plugin,Unity, or Java.Developing your own plugin would allow you to make any kind of game you want with any kind of code you want, but sounds absolutely hellish for maintenance and portability.  Do you know how many browsers there are?  Mozilla Based, IE 6-8, Opera, and thats just on windows.  If you want mac and linux support then you gotta do safari and konqeror.  Even assuming you actually make all these ports, then distribution is a BIG problem.  I know for a fact that there is literally no game on the planet that would make me download a browser plugin to play it.  If I want to download and run native code from some random guy, I'm gonna play it on my own machine or not at all.  If I'm gonna play a web game, I should navigate to the page and it just works.  Thats simply the way it is.Unity would handle this problem a little bit better.  On one hand, they've already done (some) of this porting and engine plugin work for you.  On the other hand, you'd have to use (pay for?) their code and toolkits, and even then, to play your game I'd have to go and install the unity plugin into my browser.  This is significantly easier for me to justify doing because its a library plugin not a game, but it still really sucks because the only reason I need this in reality is to play your game.  Furthermore, they don't have linux support.  I can't play your game at all in my target browsing environment, but even if I was on windows, I'd have to seek out this plugin I've never heard of that I will never use again and download it.  Mega Lame.If it were me trying to do your project I would choose Java.  It's not the best programming language in the world, but its extremely popular right now, so there are thousands of toolkits and libraries.  In addition, it is very popular for offline game development.  Furthermore, there are already all the tool kits you need, and they are all open-source.  The plugin is open-source, the dev-kits are open source, and jogl (opensource) and LWJGL are available and open-source.  RuneScape and Jake (Quake 2 in java) both run in Java Applets over the web.  Yes, if I don't have Java installed, I'd have to go get it to play your game, but market penetration and name-recognition of java are significantly higher than Unity.  Everyone who had a computer 5 years ago played java applet games, and everyone who currently has open-office has java already.  Additionally, the java plugin is already on mac, linux, and windows.Just my two cents I guess   