Arcane Legend – PvP Focused, Multiplayer Game

Hello guys,

I have been working on a project for the past few weeks that uses jMonkeyEngine and I have been really happy with the results. Basically it is a multiplayer game where the focus will be around a PvP arena. Both teams will utilise a range of spells which they can customise prior to the game. One of the coolest things about the game is it supports full rigid body dynamics across the network. This took ALOT of tweaking to get to run smoothly but it works great even on lower end connections. It uses prediction and lag compensation and a few other sneaky techniques to get it to feel right.

I’ve also added a bit of functionality to jME which I hope to contribute back to the community once I iron out the kinks. Things like projected textures and particle property easing.

Anyway here’s a YouTube video of it so far, the screen capture software made it really dark so it’s a bit hard to see the cool effects :frowning:

EDIT: Here's a quick video showing off the widget toolkit I'm currently working on the be used with Arcane Legend. I started off using nifty but unfortunately I couldn't get the hang of it and I wasn't a big fan of the XML so I decided to build my own one as a side project.

One of the cool features in this toolkit is the resizing pictures. The wooden frame uses a single 512x512 texture and I've made it keep the corners intact and loop the edges separately. The TextField uses this as well. This is can be seen better when it goes into wireframe. I've made the panel slowly get larger so you can see this technique better.

You can also see the layout container in action, which borrows concepts from how SWT handles layout.

Hey, it’s a very good teaser you have there … :stuck_out_tongue: Glad to be the first one comment it out … The video is a little dark but the effect still quite good ! Love the lava theme and the meteor effect .

May be it will be cooler if the player is a witch (not a cylinder ) :smiley:

very nice fx, can’t wait to see more :P. Out of interest did you use Nifty GUI for the HUD?

I dont know whats happening but it looks awesome :slight_smile: Great work. Interested to see your sync solution, MonkeyZone only has a very basic “buffering” sync atm that is prone to “snap”, its one of the areas I still want to improve.

Oh wow, this is my type of game! I’m a long time gamer of DotA (i.e. Heroes of Newerth) and Bloodline Champions. I’ll be following this project with great excitement :slight_smile:

Keep in mind that the community might even be able to help you sort out those kinks that are keeping you from making your contributions public. And yeh, your networking ideas sound really interesting, so if there’s something you could contribute on that end as well that’d be great. If you’re planning for a commercial release I understand why you’d want to hold on to some of your “secret sauce”, but bear in mind that sometimes by opening up your code there’s a chance some curious monkey will make it even better. And we have quite the congregation of clever monkeys around here!

atomix said:
May be it will be cooler if the player is a witch (not a cylinder ) :D

Haha, yes of course. I have an artist who is working furiously day and night on the models :P I hope to have the character model and animation done very soon.

wezrule said:
very nice fx, can't wait to see more :P. Out of interest did you use Nifty GUI for the HUD?

No the HUD is just a bunch of Picture objects attached to a node and rendered on top of the scene. Nothing too special, except the cool down animation on the icons is done programatically on a shader which is pretty nifty :P. I will investigate using Nifty GUI for the menus though.

In regards to the networking it works like this, a physics simulation is run on the server and every client. When entities move their position, velocity, etc. are sent across the network at 15fps. The receiver updates the entity by approximating how long it took to receive the packet and extrapolating the entities expected location. The new position and velocity is used to continue the simulation until another update is received. There's a bunch of easing and stuff going on as well to reduce visual defects. As far as physics simulations go, it's not a terribly 'accurate' model. But visually it looks great and it feels right.

Unfortunately, the networking and physics are very much entangled within the source. I put little effort into abstracting it :(. So I doubt I will be releasing any networking stuff.

The artist reporting in :wink:

@tocsick : About “projected texture” or the “decal system” if i am not misunderstand?

Can you tell me more about it (your projected texture or decal system) ?

I’m suddenly cross some situation which need the effect and don’t have a good solution for it. I’ve read something here in Unity and Wolfire engine and really want to do that in JME (if we haven’t got it yet )

How to project decals - Wolfire Games Blog

Some small snippet code will definitely help!!! Thanks.


I use an approach that is similar to the SimpleShadow method already in jMonkeyEngine.

A SceneProcessor is passed a bunch of objects that define a Texture, a Camera and a GeometryList. After everything is rendered I loop through the array of these objects and render the GeometryLists with a forced material which takes the texture and the camera’s ViewProjection matrix as parameters. The shader is where most of the work happens, look at the SimpleShadow shader for a starting point. The ‘shadow map’ in the SimpleShadow shader is just the texture you want to project but instead of writing a dark pixel to the framebuffer you write the color of the pixel from the texture.

Oh, what a brilliant idea :stuck_out_tongue:

It’s really a projected texture, not a “multi-purpose decal system” yet? But it definitely have the very same method i think…

I may ask further for the GeometryList part which I don’t understand clearly:

In your demo, you count every Geometry in the scene in this GeoList or just the terrain (lava ground)???

The GeometryList only contains Geometry that I want to render the texture onto. So in this case, just the lava ground yes.

It really is a projected texture, if I use a perspective camera the texture is casted onto the receiving Geometry like a projector would. But for my purposes I simply use an orthogonal frustum.

It sounds quite dumb but at the first time I saw that lava theme, I thought you got a decal system which can add more detail and randomness for the scene ( prevent fake artifact cause by texture tilling )… Now it’s clear that you don’t use decal, so

is there some randomize method is involved in rendering of the lava?

No, the lava is a simple texture with a glow map.

My game levels will be quite small so randomized decals won’t be necessary.

Ok , I see that, thank you for the answer.

Here’s a much better video, it also has the character model now :smiley:

It's hard to see but the player model rotates its torso to face the mouse or the selected player.

He he, sweeet, gotta start pushing out those pre-alphas man :smiley: You might also be interested in the open game finder.

This looks really promising! I look forward to a playable version!


Hey guys,

Uploaded a new video (see my original post)

Let me know what you think :slight_smile:

looking good :slight_smile:

@tocsick: Checked the video!

=>It’s totally cool! The GUI elements are made from quads, am I right??? What an awesome idea… We now got 3D GUI for real :stuck_out_tongue:

And the layout thing

You can also see the layout container in action, which borrows concepts from how SWT handles layout.

=>It’s a brilliant idea too…

You 're really know how to stand on the giant’s shoulder … if you understand what I mean!

Hope to see more of the game and the GUI developing in the future!