by Cameron Albert
9. November 2007 10:31
One of my biggest concerns for my persistent browser based games, aside from gameplay, is performance. Persistent browser based games have the same issues that normal client/server applications have in regards to internet latency but with a PBBG you do not have a persistent socket in which to push data from the server. This limitation makes it difficult to to real time player activites. Most PBBGs seem to be strategy games operating on a turn based daily type of cycle. This is probably the most useful model but what if you do want to offer real time interaction? Real time interaction can be handled via AJAX in that you can poll the server for new information every few seconds but you could run into some serious performance issues if you send a lot of data down the pipe when actions occur. For that reason I am trying to work out an AJAX based system for downloading game content in the background while the player moves about the world. Once I get the Silverlight components built and tested I should be able to accomplish the same things with Silverlight and provide a nicer user experience.
I think I got just about everything ready for my new PBBG engine so now I can start writing the database queries for the standard commands the system will accept. I am focusing on performance as much as possible for this new engine. Perenthia is working OK but is a little slow when moving around. I can reduce this somewhat by performing asynchronous calls to preload a lot of the data on the client but I still need to stream line everything. After all, in order to move I don't need the player profile description coming back from the database, I just need the information related to moving.
by Cameron Albert
19. October 2007 12:34
One of the main things I am concentrating on for Perenthia and my PBBG Engine is performance. A lot has to go on in a game, each action be it movement, combat, etc. causes a lot of code to be executed and database calls to be made. What I am striving for in Perenthia and ultimately in my PBBG Engine will be as few database calls per command as I can get away with. Right now Perenthia makes several calls, one to load the Character and depending on the action 1-4 more database calls and then the final save Character call.
For Perenthia, I was able to get movement into the Character load call, then make one call to determine if the player can move and if any monsters are encountered, then a final call to save the character. That is probably as small as I can get movement but it still does not perform the way that it should.
I thought about caching or storing the map in memory but with over 150,000 records in the table storing the map data that is just not a good idea. Just not sure of the best approach for this. The database procedure for movement runs in under a second so I don't think that is the bottle neck, I think the bottle neck is sending all that data from the server to the client. I may try to asnychronously download the map data to the client while they are playing and just send smaller amounts of data for the map. Maybe a JavaScript file that can be auto generated using custom handlers that would contain the entire map structure with X,Y,Z and Terrain values. Then I can just use the player's current location to position them on the map. since I validate their position on the server I can still perform the monster check and move check and just not send the whole map down the pipe.
Attack is another performance bottle neck that I plan to devote some time to once I get the map movement sped up.
by Cameron Albert
25. September 2007 17:40
I used the Microsoft ASP.NET AJAX Extensions pretty heavily for the
user interface of my persistent browser based game Perenthia and after
about two weeks of live server testing I have discovered some
performance issues that may cause me to abadon the use of the
UpdatePanel for straight AJAX calls using JSON objects.
The
reason being is that I have UpdatePanels that update various sections
of the game and instead of just setting a value as supplied from the
server they send back the entire HTML blog of changed text. For
orderinary web sites this wouldn't be a problem and in fact when allow
them to perform faster. Since Perenthia is a little more interactive in
so much as players can move around, which are post backs, and do
battle, which are post backs, sending all this HTML back is causing too
much bloat. I am thinking of creating some very simple Javascript
objects that I can send down from the server that will contain only
values that need to be changed rather than HTML. This way I am not
sending down tables, spans and the like.
Anyway, we'll see it how it goes, hopefully it will improve performance of the game because that is lacking right now.
by Cameron Albert
10. September 2007 11:22
Here is a screenshot of the AJAX interface for my PBBG Perenthia, which is scheduled for a beta release this Friday September 14th. This will be the main game screen where all actions related to game play will take place.
by Cameron Albert
7. September 2007 01:17
Making good progress toward the Beta release of my PBBG Perenthia on September 14th. Not sure what time of day I will open the site up, probably in the morning some time on the 14th. Anyway, the AJAX game interface is working great after I scaled it down a little. I am still working on a more advanced interface in Silverlight 1.1, might be a little while before that is finished though, I want to get the game up and running first.
by Cameron Albert
3. September 2007 20:45
Alright, it is looking like the first initial release of Perenthia will be September 14th 2007. The initial release will feature an AJAX based user interface, kind of looks like a MUD client, with a new Silverlight interface to follow in the coming months, once Silverlight 1.1 goes into Beta with a Go Live license.
Players will be able to create Characters with a special profile page where they can describe their Characters and even upload an avatar image. A friends list on the Character Profile page will allow players to link to their friends and simple Character blog will allow the player to keep visitors up-to-date on their progress. Some other features of Perenthia will include player run Households, where players can make up advancement ranks, various length quests for all levels of play that will focus and determine the main story line, a different kind of magic system consisting of runes of power that you can combine to create spell effects and of course adventuring into wilderness to defeat scary monsters.
For those unaware, Perenthia is a persistent browser based game (PBBG) set in a fantasy medieval world.
by Cameron Albert
27. August 2007 13:13
Here is a screenshot of the UI (user interface) that I am building in Flash for my PBBG Perenthia. I am converting the AJAX/HTML elements to Flash so it it somewhat incomplete but does give you the overall feel of the interface. The place where that gray square is will be the map and next to the map will be displayed the name of the place/room you are in and a listing of other players, NPCs, etc. in that place/room.
I am going to do a write up with my findings in regards to the Perenthia PBBG UI using AJAX, Flash and Silverlight. Might do that sometime later today.
by Cameron Albert
30. June 2007 16:59
I've been developing persistent browser based games using ASP.NET and AJAX for a little while now but an emerging technology from Microsoft called Silverlight that I believe will re-define how browser games are built for .NET developers. Silverlight is Microsoft's answer to Flash but with advantages for .NET developers in that I can program C# on the backend and have Silverlight on the front end.
My current PBBG Perenthia will be ASP.NET and AJAX but another game I have in the design phase called Aelerion will feature a Silverlight front end using (hopefully) the same game engine I wrote for Perenthia.