Java-Gaming.org    
Featured games (78)
games approved by the League of Dukes
Games in Showcase (429)
Games in Android Showcase (89)
games submitted by our members
Games in WIP (466)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1] 2
  ignore  |  Print  
  Mootox  (Read 14958 times)
0 Members and 1 Guest are viewing this topic.
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Posted 2008-02-04 23:26:14 »

It's been a while since I posted anything new, but I've started updating my old physics demo into a more complete game. There's lots of open issues and missing features but the current version is reasonably playable (even had a relatively successful internet game Smiley). The game is essentially about racing a little truck around a 2D world to the finish after having collected the stars littered around the level.

STOP! If you don't like 2D games, turn back now! Smiley


I'd really like some feedback on what works and what doesn't. There are however plenty of known issues including:

  • Skinning the trucks is a little too flexible at the moment. It's possible to cheat by creating interesting skins and the networking isn't clever enough to sync up player skins yet
  • Graphics are generally pretty average, but at least nothing is ripped this time Smiley Apart from maybe some user contributed truck skins
  • The levels are just test ones. They're ok fun, but nothing designed
  • Controls are sensitive and not to everyone's taste. This game isn't intended to be the same as one of the many motorcross games though so keep an open mind. There have been some impressive times recorded even with current control system.
  • There arn't any dynamic objects in the environment, this will come in time probably

Any and all feedback richly appreciated. Especially crashes with logs, performance issues and platform issues.

   

Notes on custom truck and level designing will be coming soon, or maybe I'll convince one of the guys who have been playing already to post Smiley

Any ideas for any of the following would also be appreciated:

  • Multiplayer game formats that work with the trucks
  • Powerups for the trucks
  • Skin extensions - what about multi wheeled trucks?
  • Website and Online features that might be fun

The webstart will be updating all the time so apologies if it's broken for short periods. Never know quite how to end this sort of post, so I just will. Thanks for any testing or suggestions in advance.

Kev

Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #1 - Posted 2008-02-04 23:30:10 »

Damn, should probably mention controls.

Cusors Left/Right to drive (or up/down depending on how you want to drive)
Ctrl - jump
Space - change direction
R - restart level

Kev

Offline void256

Junior Newbie





« Reply #2 - Posted 2008-02-04 23:38:02 »

  • Multiplayer game formats that work with the trucks

Nice work Kev! I like it a lot! Cool

Multiplayer Team Ideas:

  • Capture the Flag of course Smiley
  • Truck Soccer Grin ... imagine lots of trucks and a giant ball! Sounds like fun!

And most important you'll need Avatar pictures floating above the truck  Roll Eyes Tongue

void
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline SluX

Junior Member





« Reply #3 - Posted 2008-02-05 00:00:35 »

Space and R didnt work....

"Intelligence is the most beautiful gift and the greatest temptation which one life can receive from the gods."Me Cheesy
Play strategic football
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #4 - Posted 2008-02-05 00:06:39 »

Fixed, cheers.

Kev

Offline CommanderKeith
« Reply #5 - Posted 2008-02-05 07:55:31 »

The physics is sensational. And I like the graphics, the sky in the background is great.

Ran fine on WinXP java 6. I'm interested to see how it runs over the network, I'll try soon.

Offline Markus_Persson

JGO Wizard


Medals: 12
Projects: 19


Mojang Specifications


« Reply #6 - Posted 2008-02-05 09:07:53 »

Love it! The physics feel great, and it's got a certain hard-to-define "fun" going.

What's the point of reversing the truck other than to get the art to look right, though? Could it be changed so the truck automatically changes direction when driving backwards?
Also, the penalty for falling off the level seems a bit high.. enough for me to give up on the second level.

Play Minecraft!
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #7 - Posted 2008-02-06 17:44:50 »

Thanks for the feedback guys.

Reversing  - yeah, it's been debated a bit. The truck should probably drive slower in reverse too. At the moment there are slight advantages to taking jumps in reverse since the truck moves differently through the air when in reverse. From a purely cool factor, the brake lights wouldn't work if the truck just changed direction on turn.

Penalty - yep. Noted. Might resetting to the last know "safe" position work - just determining that might be a bit annoying. Smiley

Kev

Offline thijs

Junior Member




Lava games rock!


« Reply #8 - Posted 2008-02-06 18:09:59 »

Excellent!

Some more ideas for the gameplay:

- Adding hoops; when you jump through you get extra points.
- Springs that launch you into air when you drive over them (avoiding them by jumping over)
- For the multiplayer modus, being able to shoot or drop mines or something (through powerups) always adds an extra twist

<a href="http://www.dzzd.net">3DzzD!</a>
<a href="http://www.arcazoid.com">Arcazoid!</a>
Offline steveyO
« Reply #9 - Posted 2008-02-06 20:15:09 »

Cool.. Very nice! (as usual for your games Kev)..
Reminds me a little of Line Rider (Sorry guys,, I do play Flash games sometimes, tut!)
Would be nice if you could design your own track (similar to Line Rider, maybe by drawing lines, rather than using Images) altho apprecaite this could be tricky..
Steve

https://play.google.com/store/apps/details?id=com.bullsquared.alggame Annoying Little Gits (Android)
www.bullsquared.com   Play java (applet) games! www.chessclockpro.com Free Online Chess Clock
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #10 - Posted 2008-02-06 21:33:50 »

Tracks actually consist of an SVG file and a properties file, you can see an example here:

http://www.cokeandcode.com/demos/mootox/examples/

Using inkscape you can happily create levels and drop them in to play.

Kev

Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #11 - Posted 2008-02-12 01:15:27 »

Multiplayer game updated to:

* Allow sharing of custom skins via the network. Design your skin and then play online.
* Allow sharing of custom levels via the network.
* Swap levels after a set period (default 5 minutes play).
* Point scoring - currently get a point for having the best time for the level after a period.

Kev

Offline CommanderKeith
« Reply #12 - Posted 2008-02-12 08:51:24 »

Hi Kev,

I tried the multiplayer game by  starting two versions on the one computer.  It was interesting to see what happened in the other game when I pressed forward in the first game.

I'm wondering how your networking approach works, because it's pretty good.

Some observations:
- Key presses instantly cause action on the truck (very cool, makes the game feel reactive and solid)
- There's a half-second lag until one game sees the other's movements, even when there's no latency at all (I assume that the 1/2 second is the default latency?  What happens if latency is more?)

Something I was wondering, are there any synchronization updates sent from server to client, besides key presses? Because since the player's actions are incorporated straight away in the first game, and then there's a half-a-second lag until the other player sees what's happening, the two worlds will be out of sync?  Is this why the map is static and players can't interact with one-another?

Also, if this was a racing game and both players pressed 'go' at the same time, would each think he is winning?!  Cheesy

Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #13 - Posted 2008-02-12 09:30:19 »

There's no intentional lag between clients. Infact, if I run two here locally they move at the same time. I think you might be thinking I'm using that simulation method here and I'm not. I'm simply brute forcing updates across the network atm. Interesting to hear you're getting half second latency between two local clients - you should get 200ms between updates at the moment, I guess that might be the lag you're seeing.

The 200ms stops the TCP backend getting swamped by updates.

Quote
Also, if this was a racing game and both players pressed 'go' at the same time, would each think he is winning?!  Cheesy

This makes no difference in this particular game, see trackmania nations. The players are racing to get the "best lap time", whether someone else is ahead or not doesn't matter. Since the lap clock resets every time you restart the level it's all about *your* time, not your relative position.

Network approach is really primitive just because I don't want to deal with cars bouncing off each other:

- Every 200ms (or multiple of recording interval) send the truck's x,y and rotation
- Interpolate client side

There's obviously alot of other game stuff that goes on (joins, leaves, chat, skin/level transfer, leader/time handling) but the update cycle is essentially that.

I'm trying to sort out the server to be a seperate thread and then hopefully I get a dedidcated server together - then maybe we can all have a go together Smiley Smiley

Kev

Offline CommanderKeith
« Reply #14 - Posted 2008-02-13 06:11:16 »

Thanks for describing it, I must have just been seeing the 200ms delay

Gee, well the system you've got is simple but effective.

A dedicated server will be good Cool

Offline Markus_Persson

JGO Wizard


Medals: 12
Projects: 19


Mojang Specifications


« Reply #15 - Posted 2008-02-13 10:12:03 »

- Every 200ms (or multiple of recording interval) send the truck's x,y and rotation
- Interpolate client side

200 ms delay + interpolated 200 ms (since without dead reckoning you have to interpolate between the last two updates) = 400 ms delay, which is close enough to the half second delay CommanderKeith  saw.

Play Minecraft!
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #16 - Posted 2008-02-13 10:40:09 »

Na, when running locally (client A, client B):

A sends position - accurate at the moment of sending
B gets position instantly (close enough locally)
B moves the truck to the new position within 200ms (at which point A is 200ms into a new position)

B would only be 200ms behind A's current position. Movement wouldn't be perfect but it seems to work pretty well.

Having much bigger problems at the moment with synchronizing levels and skins, but development proceeds. I did take the time to set up a simple php blog (http://www.cokeandcode.com/demos/mootox/) and post a todo list:

http://www.cokeandcode.com/demos/mootox/web/index.php?entry=entry080212-193854

Any other thoughts, missing bits?

Kev

Offline Markus_Persson

JGO Wizard


Medals: 12
Projects: 19


Mojang Specifications


« Reply #17 - Posted 2008-02-13 11:07:10 »

Oh, right! Haha =D

* Markus_Persson goes back to counting flowers or something.

Play Minecraft!
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #18 - Posted 2008-02-17 11:07:19 »

New Version Up

Client:

* New controls, you can now tilt the truck in mid-air to aid landing
* Taunts - user configurable taunt strings that are activated by 1-5 in multiplayer
* Network smoothing - network updates are smoothed more gracefully to give a better feel coping with lag spikes
* Truck's wheels are now skinnable (along with the body, brakes and physics as before)
* Connection to the server is threaded to prevent freezing
* Text field issues resolved
* New menu styling
* Color coded chat

Server:

* MOTD added
* Server command framework added
* Ability to vote to change track (/vote <trackid> and /yes /no)
* List track command (/tracks) shows the IDs of the known server tracks
* HTTP Server Status provided on running servers at port+1
* Best times and scores maintained while the server is running (soon to be persisted)
* Dedicated server provided at bob.newdawnsoftware.com:43210 (see status)

Kev

Offline kilvati

Senior Newbie





« Reply #19 - Posted 2008-02-17 14:42:30 »

Found a bug, if I select another car (after the yellow bus) the game crashes and if I restart it, it will crash on the car selection and on the start of a game after I have chosen a map.

Nice game btw!

Give a man a fire and he is warm for a day, set a man on fire and he is warm for the rest of his live.
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #20 - Posted 2008-02-17 20:07:07 »

Thanks for trying it! Smiley

Quote
Found a bug, if I select another car (after the yellow bus) the game crashes and if I restart it, it will crash on the car selection and on the start of a game after I have chosen a map.
[\/quote]

Could you check the log (in your home directory, in .mootox). I'm having trouble reproducing this locally, could you describe what you did a bit more. (sorry, I'm probably being dense like normal Smiley)

Kev

Offline kilvati

Senior Newbie





« Reply #21 - Posted 2008-02-18 10:43:15 »

In the player.properties the skin is pointing to "mario"

Here is my log: (this is on OS-X 10.4 btw)


Sun Feb 17 14:59:15 CET 2008 INFO:Slick Build #210
Sun Feb 17 14:59:15 CET 2008 INFO:LWJGL Version: 1.1
Sun Feb 17 14:59:15 CET 2008 INFO:OriginalDisplayMode: 1280 x 800 x 32 @0Hz
Sun Feb 17 14:59:15 CET 2008 INFO:TargetDisplayMode: 600 x 600 x 0 @0Hz
Sun Feb 17 14:59:15 CET 2008 INFO:Starting display 600x600
Sun Feb 17 14:59:15 CET 2008 INFO:Found 0 controllers
Sun Feb 17 14:59:15 CET 2008 INFO:Initialising sounds..
Sun Feb 17 14:59:16 CET 2008 INFO:- Sound works
Sun Feb 17 14:59:16 CET 2008 INFO:- 64 OpenAL source available
Sun Feb 17 14:59:16 CET 2008 INFO:- Sounds source generated
Sun Feb 17 14:59:19 CET 2008 INFO:Track Loaded: /Users/freek/.mootox/levels/track3.zip
Sun Feb 17 14:59:19 CET 2008 INFO:Loading: /Users/freek/.mootox/skins/blue.zip
Sun Feb 17 14:59:19 CET 2008 INFO:Loading: /Users/freek/.mootox/skins/bowser.zip
Sun Feb 17 14:59:19 CET 2008 INFO:Loading: /Users/freek/.mootox/skins/mario.zip
Sun Feb 17 14:59:24 CET 2008 INFO:Start HTTP Status server on: 43211
Sun Feb 17 14:59:24 CET 2008 INFO:Server Started on 43210
Sun Feb 17 14:59:24 CET 2008 INFO:/127.0.0.1:49947 connected
Sun Feb 17 14:59:24 CET 2008 INFO:Server recieved client version of: 2
Sun Feb 17 14:59:24 CET 2008 INFO:Client recieved ID of: 1
Sun Feb 17 14:59:24 CET 2008 ERROR:LUT has improper length!
java.lang.IllegalArgumentException: LUT has improper length!
   at javax.imageio.ImageTypeSpecifier$Indexed.<init>(ImageTypeSpecifier.java:866)
   at javax.imageio.ImageTypeSpecifier.createIndexed(ImageTypeSpecifier.java:955)
   at com.sun.imageio.plugins.png.PNGImageReader.getImageTypes(PNGImageReader.java:1463)
   at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1348)
   at com.sun.imageio.plugins.png.PNGImageReader.read(PNGImageReader.java:1530)
   at javax.imageio.ImageIO.read(ImageIO.java:1400)
   at javax.imageio.ImageIO.read(ImageIO.java:1322)
   at org.newdawn.slick.opengl.ImageIOImageData.loadImage(ImageIOImageData.java:115)
   at org.newdawn.slick.opengl.ImageIOImageData.loadImage(ImageIOImageData.java:104)
   at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:266)
   at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:221)
   at org.newdawn.slick.Image.load(Image.java:279)
   at org.newdawn.slick.Image.<init>(Image.java:201)
   at org.newdawn.slick.Image.<init>(Image.java:188)
   at org.newdawn.mootox.config.SkinStore.getBodyImage(SkinStore.java:228)
   at org.newdawn.mootox.ingame.Truck.setBody(Truck.java:242)
   at org.newdawn.mootox.ingame.Truck.<init>(Truck.java:131)
   at org.newdawn.mootox.network.NetworkSetupState.getTruck(NetworkSetupState.java:137)
   at org.newdawn.mootox.network.NetworkSetupState.render(NetworkSetupState.java:122)
   at org.newdawn.slick.state.StateBasedGame.render(StateBasedGame.java:181)
   at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:430)
   at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:330)
   at org.newdawn.mootox.MiniMootox.main(MiniMootox.java:167)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at com.sun.javaws.Launcher.executeApplication(Launcher.java:1161)
   at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1108)
   at com.sun.javaws.Launcher.continueLaunch(Launcher.java:951)
   at com.sun.javaws.Launcher.handleApplicationDesc(Launcher.java:522)
   at com.sun.javaws.Launcher.handleLaunchFile(Launcher.java:218)
   at com.sun.javaws.Launcher.run(Launcher.java:165)
   at java.lang.Thread.run(Thread.java:613)
Sun Feb 17 14:59:24 CET 2008 ERROR:Game.render() failure - check the game code.
org.newdawn.slick.SlickException: Game.render() failure - check the game code.
   at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:433)
   at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:330)
   at org.newdawn.mootox.MiniMootox.main(MiniMootox.java:167)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at com.sun.javaws.Launcher.executeApplication(Launcher.java:1161)
   at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1108)
   at com.sun.javaws.Launcher.continueLaunch(Launcher.java:951)
   at com.sun.javaws.Launcher.handleApplicationDesc(Launcher.java:522)
   at com.sun.javaws.Launcher.handleLaunchFile(Launcher.java:218)
   at com.sun.javaws.Launcher.run(Launcher.java:165)
   at java.lang.Thread.run(Thread.java:613)

Give a man a fire and he is warm for a day, set a man on fire and he is warm for the rest of his live.
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #22 - Posted 2008-02-18 13:27:18 »

Ah ha, will try it on my Mac, but looks like the JDK bug. Anyone remember what the solution was?

Guess it's time I added that custom PNG reader to Slick.

Thanks for the log!

Kev

Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #23 - Posted 2008-02-19 14:34:33 »

Software version of PNG loader added (thanks to MatthiasM). Should resolve the issue on Mac.

Added jar/exe based command line versions incase anyone is webstart afeared:

http://www.cokeandcode.com/demos/mootox/web/static.php?page=gettheinstall

Kev

Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #24 - Posted 2008-02-19 14:35:08 »

By software, I of course mean not platform, i.e. not ImageIO based. Doh.

Kev

Offline luisoft

JGO Coder


Projects: 6


Java games rock!


« Reply #25 - Posted 2008-02-20 16:50:14 »

I tried here in my Linux box but the game window just closes and I couldn't get any error log....
Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #26 - Posted 2008-02-20 16:59:36 »

Did a very rapid update last night, might be broken. The log should be in ~/.mootox/

Kev

Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #27 - Posted 2008-02-20 18:19:21 »

Seems it doesn't like ALSA sound. I'll work around next session. Cheers for the report.

Kev

Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #28 - Posted 2008-02-21 11:47:52 »

More updates, mostly server side:

- Admin console for remote shutdown of server
- Persistent state of best times and scores across server shutdowns
- Timing issues fixed with level resets
- Added a new server level
- Results screen shown between levels
- Ornaments added to levels to spice things up a bit

Stuff is now getting added to the game guide (thanks Void and Drag!).



Kev

Offline kevglass

JGO Kernel


Medals: 85
Projects: 22


Coder, Trainee Pixel Artist, Game Reviewer


« Reply #29 - Posted 2008-02-26 10:18:40 »

Talking to myself here, but heh.. new update, build 102

- Revamped the level select screen
- Added road signs (see below)
- More network fixes
- Sound fixes
- Added a new track - Rally Tribute (see blow)
- More options for level design, background images and parralax settings are now available
- Online best times recorded in single player
- Started collating some user produced tracks: http://www.cokeandcode.com/demos/mootox/web/static.php?page=tracks

Next up:

- Special effects for smashing your truck up, water
- Dynamic objects, replacing the rope bridge from the original demo
- Power ups - charge meter + current types
- Trick detection (flips, high jumps)
- Teleports to allow looped racing

Road signs:



New track;

(anyone remember the SNES game?)

Comments and ideas appreciated,

Kev

Pages: [1] 2
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

xsi3rr4x (81 views)
2014-04-15 18:08:23

BurntPizza (73 views)
2014-04-15 03:46:01

UprightPath (84 views)
2014-04-14 17:39:50

UprightPath (67 views)
2014-04-14 17:35:47

Porlus (83 views)
2014-04-14 15:48:38

tom_mai78101 (107 views)
2014-04-10 04:04:31

BurntPizza (167 views)
2014-04-08 23:06:04

tom_mai78101 (263 views)
2014-04-05 13:34:39

trollwarrior1 (213 views)
2014-04-04 12:06:45

CJLetsGame (223 views)
2014-04-01 02:16:10
List of Learning Resources
by SHC
2014-04-18 03:17:39

List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!