JevaEngine - Underground - Online
This is the first time remote networking will ever be tested.
Several Local tests have been done with latency injection.
(I.e, it could fuck up horribly. The server could be down within seconds of me posting this.)
Download in
Attachments. (this is meant to run as an applet, but posting the link to it would be considered advertising)
Virus Scans:
https://www.virustotal.com/ca/file/3...is/1378690826/
You need the JRE Installed.
If you have trouble running the game (including performance issues):
Post your OS, JRE Version and Graphics Device (or integrated graphics device)
Notes:
- This is a
very early release.
- A known bug where movement tasks can still be issued after a Character has been killed - i.e. sometimes the die animation isn't played through. This has been fixed but because building a distribution is such a pain in the ass I haven't added it to the client yet.
- Java defaults to OpenGL, if you have a graphics device with poor support for OpenGL you'll need to force Java to chose DirectX otherwise you will get very poor frame-rates.
- I am still fine-tuning synchronization variables so networking might be a little 'twitchy' if you're remote.
- NPCs have really simple scripts right now, so they're very stupid.
- Your nickname will be rejected if it uses anything other than a-zA-Z0-9 or if it is greater than 16 characters in length.
- Before you attack someone, you need to equip a rifle.
The multiplayer gameplay is really simple. Basically you have to kill all the zombies\spiders, once you do you win and the map resets. Spiders are more difficult to kill than zombies, and there is a 30% chance drop for health packs (access your inventory by right clicking on your character's tile)
If you die, you have to reconnect to play again.
To sum it up, this is the world's (very quickly written and hacky) script:
Code:
Code:
var zombies = new Array();
var spawnZones = new Array();
spawnZones[0] = {x: 10, y: 22, xmax: 15, ymax: 27};
spawnZones[1] = {x: 29, y: 27, xmax: 39, ymax: 39};
spawnZones[2] = {x: 4, y: 11, xmax: 5, ymax: 12};
spawnZones[3] = {x: 11, y: 1, xmax: 12, ymax: 6};
spawnZones[4] = {x: 16, y: 15, xmax: 39, ymax: 24};
spawnZones[5] = {x: 24, y: 1, xmax: 32, ymax: 14};
spawnZones[6] = {x: 34, y: 1, xmax: 39, ymax: 14};
function spawnZombie()
{
var character = Math.random() > 0.3 ? 'npcs/zombie.jnpc' : 'npcs/innocentspider.jnpc';
var z = me.createEntity('jevarpg.RpgCharacter', character);
var zone = spawnZones[Math****und(Math.random() * (spawnZones.length-1))];
z.setLocation(zone.x + Math****und(Math.random() * 100) % (zone.xmax + 1 - zone.x),
zone.y + Math****und(Math.random() * 100) % (zone.ymax + 1 - zone.y));
return z;
}
function onEnter()
{
me.setAmbientLight(0,0,0,150);
for(var i = 0; i < 40; i++)
{
zombies[i] = spawnZombie();
}
}
function onLeave()
{
}
function onTick()
{
var isAlive = false;
for(var i = 0; i < zombies.length; i++)
{
if(zombies[i].getHealth() > 0)
isAlive = true;
}
if(!isAlive)
{
for(var i = 0; i < zombies.length; i++)
{
zombies[i].leave();
zombies[i] = spawnZombie();
}
}
}