[Now w/Demo] Shard Master - 3D Software Rasterized RPG

NEW VIDEO DISPLAYING MY START TO PLAYER ANIMATION

N4PpvJ_eVvU

Features:

Triangle rasterization
Gouraud shading model
Z-Buffering
Toggle-able 3rd/1st person camera.
Texture mapping
Custom font rendering
Wavefront OBJ loading
Map loading from a file created using my map editor (stores tile data into custom bytebuffer and writes it out to a file)
Tile Based
Collision (easy because the game is tile based)
15 bit color (both the GUI and the 3D surface)
Basic animation support

DEMO
http://www.mediafire.com/download/nleul28qgrjnnnd/ShardMasterDemo.jar.zip

Controls
W,S,A,D - Move player
Arrow Keys - Rotate camera (left/right, up/down)
T,G - Move camera up and down

Ahh, RuneScape nostalgia… :). Those days are gone now.

Pretty cool nonetheless.

Thanks mate, I’ve learned a lot so far from this project (both the rasterizer and the game components).

UPDATE:

The player now has the ability to traverse chunks in the game based upon where he/she ended up leaving on the current chunk.

EDc6XNzHOgE

I remember your first build (or at least nearly the same project) from you before! Excellent progress. It certainly fits the theme of RuneScape Classic. Perhaps you should do a better region system though - instead of only loading one chunk, load and selectively render/process surrounding regions/mobs. Looking forward to seeing some more progress by the way :wink:

Wow thank you, I have a fan! Haha.

And yes, I was planning on rendering surrounding chunks, I haven’t gotten around to it yet. It’s still a difficult decision to make because the memory usage will skyrocket and I am unsure about the FPS.

I added trees (objects) and also started working on custom map development.

NEW UPDATE:

Basic gameframe. (Looks awful right now, will fix)

(Image in main post)

Finally decided on name : Demon Quest

First off, if you’re using tile based collision why not implement A* path finding and have the player model translate across the map in an automated manner :wink: ? As for bridges why not throw in a plane and toggle the tile clipping settings under neath it, instead of scooting across the ground :stuck_out_tongue:

… and second :point:

@minigame : You use WSAD to move and the movement is smooth between tiles. It scoots because there is no walk animation yet. The bridge idea is going to be really hard to implement.

And yea, the whole ripped parchment on stone idea was inspired by the runescape gameframe. I made my own though using a stone texture picture I took while I was in England and a simple 50% opacity eraser.

I really like this project. Great work :slight_smile:

I dunno. I’ve made a 3D client with the same mechanics as RuneScape (hence the name “Magic Terrain” in the photo below); the path finder was pretty simple as I’ve used it for many projects over the years. If you want help I’d be happy to write some code and send it to you (I don’t need the src, and I assume you wouldn’t want to share it anyways since it’s 100% original)

Not to swagjack your thread so here’s a url instead of an image tag: http://puu.sh/i9ir2/07e1a740f1.jpg

@minigame : Yeah haha, I consciously made the decision not to use click-move in my game, because if I did it would be too similar to RuneScape. ALSO, the player can toggle between 3rd and 1st person, and click-move will not work in first person.
Thank you for the offer though!

Thank you!

Why frame it? Old games mostly did this to decrease the actual view window’s size for performance reasons. But with current CPUs, even a software renderer written in Java can do fullscreen. I would make use of that power instead of introducing an artifical limitation in the form of a frame.

Thank you for your concern.

I was considering increasing the size of the window to 1024x768 rather than 800x600. The software renderer full screen runs at around 20 fps and is definitely not suitable for a game. I also like gameframes because it makes the game feel more “cozy” (at least for me it does).

I actually think that 20 fps is sufficient for a RPG…but anyway…maybe there’s room to improve the performance!? On which machine are you running it? Have you considered to use multiple cores for rendering? jPCT’s software renderer can render a simple Quake3 level with full texturing, shading, zbuffering and (per polygon) mip-mapping in 800600 at 150-200 fps on an i7-2600 using 4 threads. At 12801024, it’s at 40 fps, which is still very playable IMHO.

That’s 20 fps (below 30 fps is when the human eye begins to notice the non-fluid “motion” of the pixels) with only buildings, I will be adding enemies, npcs, more objects, and plenty of other things which eat fps. I prefer writing my own software renderer right now for learning purposes, I’m 16 and I want to put this on my college resume. I’m running it on the Macbook retina display, i7, 16g RAM. The engine is as optimized as I could get it without making the code either extremely long or unreadable.

Sorry, I didn’t mean to make you use something else. I just wanted to point out that there might be room for improvement left if you aren’t statisfied with the current performance. I always appreciate it when people are writing software renderers…the more the merrier… ;D

Edit: How are you doing the texture mapping? Affine, perspective correct or the common mix between both?

Perspective, affine would use too much memory (I’d have to make two more float arrays :/).

??? Affine texture mapping is without perspective correction (Playstation 1-style), perspective correct requires a divide per pixel, which is expensive, and the mix of both relies on sub-dividing the scanling into chunks of 8 or 16 pixels, which are perspective correct at the start and end and affine mapped between. I don’t see why any of these approaches should require any additional memory!?