[web] Tempest Game Engine

Started by
6 comments, last by Enalis 13 years, 11 months ago
URL: http://tge.stormwarestudios.com/ Further to the development of a web-based game engine technology, I have released a small client-only demo of the next incarnation of TGE, or Tempest Game Engine. - Data is loaded from XML maps, generated by TilEd map editor - Client employs line-of-sight algorithm found in earlier Ultima games (III-V) - Mouse and keyboard input is possible (keyboard input is currently employed in the demo) My idea for this engine is to utilize random generators for dungeons, worlds, and civilizations (similar to Diablo, Dwarf Fortress, etc, generated on a 'first instance' basis). Additionally, since the game is rendered entirely inside the canvas object, I am toying with the idea of deploying a custom-written user interface (not looking forward to it, though). I had considered using the browser to fulfill this need, however it seems almost a necessity for elegance' sake to keep the UI inside the canvas element. I've begun a small community site geared toward TGE's development, you can find it here: http://tge.stormwarestudios.com/. I strongly recommend, if you try the demo, to use Chrome, secondarily Safari then Firefox, and lastly enjoy the screenshots if you have nothing else :) [Edited by - stormwarestudios on March 11, 2010 5:08:47 AM]
Advertisement
Hey, the demo looks pretty good -- runs great in FireFox 1.6 :)

I've been working on a &#106avascript RTS game engine for about a year now, and I wanted to mention a few things I have learned:

1.) It would probably be best to draw the UI within the same canvas. However, make sure it is abstracted as much as possible from the game rendering. Have something like:

var ctx = ...;
drawMap(ctx);
drawMapObjects(ctx);//castles or towns, things that PC's can walk on... if they aren't drawn in the drawMap function
drawEntities(ctx);
drawFX(ctx);
drawUI(ctx);

etc. etc. etc... Have a different draw function for every different layer you want to draw, and just call the functions in the order you want them to be drawn.

2.) I noticed on your website that you want to add multiplayer functionality using AJAX. My best advice with respect to this is... DON'T DO IT. There's a bunch of different things that are wrong with AJAX that makes it bad for games networking. That doesn't mean there's no hope, though. The HTML5 standard includes support for something called WebSocket. Right now only a few browsers have support for it, but someone wrote a library that detects browsers that don't have it, and use a flash bridge to implement the WebSocket. I have tested it in a bunch of different browsers, and it works really nicely. I'm working on trying to integrate it into my engine now.

Here is a link to the library:
http://github.com/gimite/web-socket-js
(The example is in Ruby... so try to convert it to PHP as an exercise. If you have trouble, feel free to send me a message and I can send you my PHP socket server :))

Here's a link to a &#106avascript game very similar to yours (IE &#111;nly):<br>http://www.smokymonkeys.com/triglav/
Check out the first gameplay video from my javascript/PHP RTS game
Researching the potential with WebSockets; I'm liking it.
Read through your page again and noticed you were having trouble with drawing speeds. Canvas draws seem to be optimized to draw small amounts of large images, so it may help your framerate if you pre-render large sections of your map or the whole map (either on the server with PHP GD or on the client using data urls) and using 1-4 canvas draw calls to render the relevant portions. It's important to note that IE doesn't support data urls over 64k (I think -- not sure about newer versions), so proceed with caution.
Check out the first gameplay video from my javascript/PHP RTS game
Quote:Original post by stormwarestudios
Researching the potential with WebSockets; I'm liking it.


If you go with sockets I have both a PHP5 based socket server already written as well as a Ruby 1.9 one.
Hello,

The demo looks good in my opinion. It is also very fast (using firefox 1.6).

However, i'm working on a browser game aswell (naxasius.com) and have some questions:
* Isn't it easy to "cheat" with the xml based solution? What i mean is: There is no server-side check if i move from x to y.
* How are you planning actions (e.g.: attacking a mob, viewing an object) in the map. Is this also done by xml? That looks to me that i can make a custom &#106avascript/webpage who renders the full 'game'.<br><br>Thanks for the Web-socket. It looks very handy.
If you check the roadmap on the site, there is a little more insight (albeit keyword being "little"). The intent is to process game logic server-side, and present results client-side, no different than the typical client/server game.
Ultima VI remake go!
Douglas Eugene Reisinger II
Projects/Profile Site

This topic is closed to new replies.

Advertisement