You are not logged in.
Hi,
I just found this place through a post on Pixelation and have to say - what you're doing here looks very professional and really promising!
I'm especially interested in your project as some years ago I've been working on a browser based MMORPG as well...we've been a team of 2 programmers and had a lot of features already working: NPCs, monsters, fighting, items, pathfinding, quests, renting of houses - even lighting with lightsources and day/night-cycle. We had editors for the map, items and NPCs. All we used was HTML, CSS, JavaScript, PHP and MySQL. We thought all of this was pretty revolutionary, as we knew nothing that was even slightly similiar - until today! ![]()
Though, in the end we had to cancel everything even before the first public test as we noticed that our game wasn't enjoyable at all...
All in all, the big problems we had were:
- graphics. We couldn't find a good pixel artist that would work for free. Looking at your screenshots you don't seem to have any problem with this at all ![]()
- reloading of graphics during movement. Whenever you moved you would see the sprites loading. This was a huge problem for us since Ajax wasn't popular back then. After some time we found our own, pretty crazy solution: we had two iframes on top of each other. Whenever the character moved the graphics would be loaded in the lower, invisible iframe and then z-swapped above the top iframe as soon as loading finished
. Of course, fluid scrolling of the map wasn't possible with this solution.
- speed of movement. This actually was what really made us cancel the project. It just took to long to load new graphics during movement, even if all the sprites were stored on the players harddisc. Another part of the problem probably is that we used a normal webserver for hosting the game. I think in the end each step took about 1/3 of a second which was absolutely unacceptable for us. In our opinion players must be allowed to be pretty mobile...it's just no fun if you need 5 minutes from one end of a town to the other.
Until today I couldn't find a solution to that last problem. I don't think any webserver we could afford would be able to handle a game like that...just the reloading alone to see the movements of other characters probably would've killed our server with ~100 players online.
So, how are you hosting your game? What are you doing to view the movement of other players (cyclic update checks)? How do you handle the movement of the players character (especially the map and graphic reloads)? How FAST can you actually move in your game? How do you cope all the traffic? How many players can play your game at the same time?
I'm really interested in the answers to all those problems as you probably have to solve them as well, or any other experciences you made during development ![]()
Greetings,
Sebioff
Offline
My design philosophy was to make a game that works with very few ajax requests. I'm not spamming the server, the game is designed in a way that walking around requires just one request every few seconds. The movement is actually pretty simple, you click where you want to move, path-finding algorithm on the client side will find the closes path to that point (if there is one), another click will confirm that and send the path to the server to execute the move (and check if the game client is not cheating, never trust the client!), and then the character warps to that point. Now, to make the distance between point A and B actually meaningful, there is a cooldown during which you can't move again, and the length of that cooldown depends on the amount of squares you moved.
So, while this is not really an action game or anything, the game world does what it's supposed to do:
- allows exploration
- makes distance important
- lets you actually see other people and interact with them
I'll obviously eventually launch the game on a dedicated server, I'm looking up for ability to use RAM-drive to store session files which I'm using to cache SQL data in, but for closed and even open beta an ordinary virtual hosting should be enough, as I've worked hard to make sure it's not a server killer
. Basically anything that can handle phpBB forums or such with many users, should be able to handle Vanthia.
Offline
About this maybe I can Help you.
Currently I am a game programmer of the Brazilian Lumentech ( Lumentech ) and work on the project Sobrevivencia ( Teaser ). That as the Vanthia is a game made for Browser in JavaScript for Web In my case is an MMORTS (Multi Massive Online Game RTS) and not MMORPG.
Like Vanthia it is totally done in Ajax. I do not recommend using Iframe for it is a waste of Internet bandwidth. Using Ajax you only requests the data relevant to your application. I advise use Ajax with JSON and is a good study in standard HTML 5
Our first map is a world with a capacity of 2000 players.
In the Alpha version in which we are currently tested at least "160 players bots" and the server is behaving quite slack, have not tested the performance right in itself of our application. This one in our internal server. The idea is we buy only one dedicated to him.
On this part of server performance are not having problems. The biggest problem is the calculation of PatchFind in the database that it still is not ideal. But we're getting there.
Last edited by pard4l (2009-11-06 23:08:47)
Offline
Why not just make dedicated app that functions as an http server,then when specific pages are requested just disregard everything except posted json data? It'd be so much faster and really not that difficult to make.
Offline
Qard wrote:
Why not just make dedicated app that functions as an http server...
That's exactly how things are working in Vanthia atm
.
pard4l wrote:
On this part of server performance are not having problems. The biggest problem is the calculation of PatchFind in the database that it still is not ideal. But we're getting there.
This might be a totally different case here, but I'm doing pathfinding on client side, server just verifies the path (as if the player can walk on given fields).
Offline
Qard wrote:
Why not just make dedicated app that functions as an http server,then when specific pages are requested just disregard everything except posted json data? It'd be so much faster and really not that difficult to make.
I'm doing this in my case with a custom built Rack app.
Offline
Hello lads ![]()
I'm ahead of a team doing a web mmorpg too, and I would like to talk a little about the game engine (I don't wanna make it look like an ad so I won't post the url).
I'm using mootools as the engine and PHP(mySql) for the requests.
Since javascript is client-side, its pretty open to the user. To avoid the people from messing with the js, I even tried to crypt it (with html guardian or something like that), just to find out a few months later that FireBug (firefox addon) can simply past trough it and show it completally uncrypted to the user.
I saw someone talking about Vanthia in the mooforum, so i guess you guys are using mootools too.
So... lemme ask: do you guys (the devs) have this kind of problem in your project too?
Last edited by fiote (2010-02-26 00:42:45)
Offline
Use lots of AJAX for functions and most importantly, have the server verify EVERYTHING.
The whole code encryption thing... yeh that's what sucks about javascript, but since it's a client side language it is how it is.
Learn Java ![]()
Offline
Yeah, i tried java, but, HELL, it makes everything looks complex.
Hm? wanna put a simple image from your website in it? YEAH come on 2dgraphics url.toimage new image draw all over again HEEEEELP.
I guess i will stick to the "verify everything" (aka never trust the client! )
Heheh
Offline
fiote wrote:
Hm? wanna put a simple image from your website in it? YEAH come on 2dgraphics url.toimage new image draw all over again HEEEEELP.
ROFL ![]()
Anyway regarding your JavaScript problem, search for an obfuscator. This is a tool that scrambles your code as much as possible - generally starting with renaming your variables to a,b,c... and functions to similarly unhelpful names. Also often uses tricks such as a string lookup table to make things even more confusing, and so on.
Any program can be disassembled (or in Java's case, decompiled). JavaScript is just a scripting language, so it's extra easy.
You can also send JavaScript through AJAX calls... I mean, depending on how much work you want to do (apparently not much from your quote), you could make it like a puzzle where some of the pieces are on the server and some are on the client, and load and assemble it at runtime, or even just as-needed as the game plays.
And yes, server verification is a no-brainer. Client side can never be trusted.
Offline
How about the back-end? What tools have you used?
Offline
PiNK UNiCORN wrote:
How about the back-end? What tools have you used?
Can you explain yourself a bit clearer? What kind of "tools" do you mean, for what?
Offline
Ricket wrote:
PiNK UNiCORN wrote:
How about the back-end? What tools have you used?
Can you explain yourself a bit clearer? What kind of "tools" do you mean, for what?
I think he means server-side
Which i believe is python...? not 100%
Offline
ollie wrote:
Ricket wrote:
PiNK UNiCORN wrote:
How about the back-end? What tools have you used?
Can you explain yourself a bit clearer? What kind of "tools" do you mean, for what?
I think he means server-side
Which i believe is python...? not 100%
back-end / server-side same things, yes about what techniques you have used ..
so Python and MySQL in this case.
I would love to see how would plain javascript with couchDB work without any serverside language..
Cheating could be a problem..
Offline
You always need a serverside language. To give clients full access to the database in a multiplayer game would be terribly stupid.
Of course, if it were a single-player game, the opposite is true: it would be best to keep the whole database client-side and not have any server side interaction as it would be unnecessary.
Offline
PiNK UNiCORN wrote:
I would love to see how would plain javascript with couchDB work without any serverside language..
Cheating could be a problem..
You know you can use javascript on the server side? ![]()
Offline
nea wrote:
PiNK UNiCORN wrote:
I would love to see how would plain javascript with couchDB work without any serverside language..
Cheating could be a problem..You know you can use javascript on the server side?
Isn't that called php?
Offline
Ikkerens wrote:
nea wrote:
PiNK UNiCORN wrote:
I would love to see how would plain javascript with couchDB work without any serverside language..
Cheating could be a problem..You know you can use javascript on the server side?
Isn't that called php?
Offline
Nea, sure you can use is, there is plenty of frameworks, Floppy mentioned one of the most popular, node.js.
my point was made as lightweight solution as it can be, all processing on client side(I know it is a bad idea) and only server storage, hmh, data exchange between clients would be also somewhat problematic, because it should also go via database, not nice. Thou it could use some memorydb so no i/o for harddrives. Or some partition of couchdb tables could be only in memory.
well this is just a speculation ![]()
In real life you should have some serverside validation used.
Offline
First rule of MMO coding is to NEVER trust client side, so no.
Offline