Reign of Rebels : Online Hack and Slash

Great job Teletubo! :slight_smile:
I would say you were probably influenced by Runescape. The only thing from Minecraft is the blocks but then that’s not really Minecraft’s original idea :wink:

Good job. It works quite fine. I had only to restart the game 3 times to get the focus in the text field, it is not your fault, it comes from the bad applet support.

Please could you display a progress bar at the beginning while loading all models? It takes some minutes, I display the console. I assume that a casual user who sees only a black rectangle during several minutes might give up.

The communication is made using plain java TCP Sockets .
I have several types of packages (move, attack, use item, etc). When the server receives one of them, it validates and allows/denies player to perform action .
Client never issue an attack or item use directly, it tells the server what it wants to do, and if allowed, server will broadcast the command (that’s why you might experience a little delay when using items ).

Moving is far more complex than that . Client does not wait for ack, but as soon as server receives a Move message, it will broadcast this move message with hints about the path all clients should take,including the client who sent the request, so the original path might be changed after you started walking .
Some corrections are made to ensure synchrony between client/server, for example if the entity was not rendered (i.e. a far away enemy) it will be “teleported” to the starting point of the move, and the same path as server will be calculated , and deltaT applied to compensate lag .
Other example, when the entity was rendered, the movement should be smoothened, so the latency deltaT is spread over the next N frames and the entity will walk a little faster as it really walks, to keep pace with the server.
DeltaT can also be influenced (reduced or augmented) based on angle of the direction entity was moving when receive a new move command, for example if a player was moving toward 90 degrees, then the next one is 270 degrees, deltaT will be doubled . However if player was moving 90 degrees, and receives another move comand to keep the same direction, latency deltaT will not be applied .

I don’t know if that was the kind of stuff you were asking, but I talked about things which are non-trivial to client network development.

The server has (almost) the same logic as clients, but with some added logic (for example issue an attack when in range) .
It is backed by a Mysql server, and player information is dumped to database when some events occur (changed area, leveled up, logged out, etc) . If server fails, it will try to dump all player information to database and if fails, to a file .

I think that’s about it . If you have any specific question, feel free to ask . Thanks for the interest !

The problem with motivation is that I think “Okay, I’ll soon have a full playable game , then what ? Will anybody actually play it ?” .
I use to renew my motivation by checking indie game sites/forums and it gives me hope that people do play indie games

I’ll do that, it’s indeed more elegant . Though I find it strang that it takes so long to load the models . It’s just reading some md2/obj files and that’s it . Thanks for the feedback !

I have the same problem. My game requires others to be able to play and I can’t even get my own friends to play with me when I want to test it. My new motivation is to make a game I want to play and if no one else plays it so what. The whole reason we get into game dev is because we want to make a game that plays how WE think it should. I think a lot of us get our ideas from mainstream games but we see a spin on the game play that could make it better.

Absolutely true!!

Agree 0n 1000% =) We do games for self and only then for everyone else.
That’s why we all start doing this, we think that’s some game or games don’t have all feature that we want and we want fix that :wink:

I have the same problem, but I have a couple of kids at home that are more than eager to play any crap I make :smiley:

Mike

Win! I need kids then… Now… How to get a couple of kids fast? Hmm… :expressionless:

Hooters? Bars? Strip clubs? :wink:

That was a great response, Thanks a lot! I dont have any specific questions but I am sure I will sooner than later haha, I will definitely be keeping up with the progress on this game though!

Following kevglass’ and Kappa’s suggestion, I 've started a devblog .
I also baptized the game with this pompous name .

For the game itself, I have not uploadad the changes, I’ll do it as soon as I have a fat changelog .
I’ve added light and shadows, and I must say I’m quite happy with the result :


http://img27.imageshack.us/img27/4200/mlpom.png

Right now I’m adding magic and working further on content: more weapons, dungeons, and new weapon types : (i.e. two handed weapons) . I’m also working on weapons and magic skill level . I’ll probably upload a new version in a couple of weeks .

If there is some aspect of the game you guys are interested, let me know and I’ll provide a blog entry .

Awesomeness!! :smiley:

I played it and it felt like a team had created the game. Don’t know if you have already fixed many bugs, but when you are attacked by npc-s and you die or leave an area, then if you go back then the npc-s that attacked you just stand still and you can kill them for exp,coins. Also in the beginning of the game the user should have more potions in the inventory, because they are expensive at first and you die a lot before you can afford them for training levels. The start should always be very easy for the player otherwise they leave.

You die a lot? I only died once when I accidently didn’t notice something hacking away at me! :slight_smile:
If you find chests, there are sometimes apples and potions inside that can heal you up. Plus the more enemies you kill, the more money you get, the more healing/powerful potions you can buy! I would say this game is well balanced.

This is so well done, especially for a game by one person. Although not finished its surprisingly good and so IMO deserves to be featured for now.

FEATURED

And well deserved indeed!

Thank you :slight_smile:

And for the record, new update with bunch of new stuff coming in one week or so !

Hm, looks like I run out of heap space on a fast Mac with Safari.


7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]	Exception in thread "Thread-40" java.lang.OutOfMemoryError: Java heap space
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at java.awt.image.Raster.createPackedRaster(Raster.java:458)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at java.awt.image.BufferedImage.<init>(BufferedImage.java:324)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:539)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:523)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.loops.MaskBlit$General.MaskBlit(MaskBlit.java:171)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.loops.Blit$GeneralMaskBlit.Blit(Blit.java:186)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:927)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:550)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:54)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:982)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:168)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3261)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3246)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at org.newdawn.slick.opengl.ImageIOImageData.imageToByteBuffer(ImageIOImageData.java:171)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at org.newdawn.slick.util.BufferedImageUtil.getTexture(BufferedImageUtil.java:128)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at org.newdawn.slick.util.BufferedImageUtil.getTexture(BufferedImageUtil.java:52)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at pomapi.pom3d.Pom3dUtils.createTexture(Pom3dUtils.java:41)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at mmclient.logic.ClientWorld.generateMap(ClientWorld.java:221)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at mmclient.logic.ClientWorld.addWorld(ClientWorld.java:153)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at mmclient.logic.MessageParser.parse(MessageParser.java:162)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at mm.telas.MMTela.runLogic(MMTela.java:432)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at platspecific.AppletM.rungame(AppletM.java:343)
7/19/11 4:30:32 PM	[0x0-0x179179].com.apple.Safari[8938]		at platspecific.AppletM$1.run(AppletM.java:110)

This happens while loading the main game (after creating a character and everything).

Also, I was able to make a second character with the same username. :o Then when I logged in later it wanted the first one’s password.

Thank you for the feedback. Those problems are already sorted out in the new version . In fact I removed the link to the game for now, since this version is so outdated that I prefer players not to spend their time testing it, and save their time and willing to testing for the coming new version .