Recently I decided to try out browser-based game programing, not using anything like Flash or Shockwave, but pure JavaScript games using WebGL. For those of you who don't know what it is
WebGL is a port of OpenGL to the browser, and allows for hardware accelerated graphics using JavaScript. Since I really wanted to learn this technology I played around with a couple small, dumb projects. But then I saw this really cool
GPU TileMap demo, and I decided right then I was going to rewrite The Legend of Zelda: A Link to the Past for the browser.
I want to stress that this project is not a port of code, it is not a ROM in a web-based emulator, and it uses no established engine; it is a complete from-scratch recreation of a classic favorite. I wrote a custom map generator/editor to leverage the technique in the blog post above (more info on my
blog, the part 2 post is almost done), and everything else from scratch as well.
The code, assets, and more information is available
on GitHub and anyone can contribute; though really what I need right now is help with assets (sprites, maps, etc). This project is first and foremost a testament to browser gaming with WebGL and a learning experience for me. Though I will not turn away pull requests I have the programming mostly covered, but generating the maps and editing collisions, and piecing together images of link into usable sprites take more time than anything else; so any help is appreciated.
Without further ado here are some screenshots from the game, though they will look very similar to something we are all familiar with:
This project is at a very early stage, I just finished writing map/entity collisions. In case anyone was curious ,here is the roadmap I am following:
Map Rendering (small tearing bug)Entity RenderingCollisions (small clipping bug)- Zone Confinement
- Item Management
- Map interaction (lifting, pushing, cutting, etc)
- Combat
- Dialog
- First Dungeon (palace)
I've got the algorithm to confine the camera to a zone written, just need to map out the zones vertices (by zone I am referring to the area your camera can move in before you reach the edge and the game would load a new area). If anyone is interested in helping out, please let me know and I will be more than happy to explain how stuff works, and how you can help.
Thanks all!