[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 :))
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.(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.(Image.java:201)
at org.newdawn.slick.Image.(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.(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)
Inkscape is working out pretty well, at least I think so. I’ve tried to limit the colour coding type approach moving instead to using the label to describe the properties of particular piece of the level. The label is currently used as a key into a materials library which then goes on to describe rendering and physics properties. As you can imagine I have a small framework for this stuff now which I’m refining with each game - Slick got an SVG parser and renderer as a side effect.
Dragoene (Morre here) has been nice enough to write up a guide on designing levels so that might give some more insight into the current approach:
A little nitpicking about the menu’s: It would be nice if the mouse worked on the menu as well, and if there was ‘back’ option in the submenus. Also, when you enter your name in the Player Set-up menu, it’d be more intuitive if the Enter button worked (so that the focus shifts to the next menu option).
Really great game man!!! (Also love your tutorials…btw, ever think of making a simple game that uses physics tutorial, or a networked game tutorial? :D) and also this game does bring back great memories of uniracer!!
Oh and I was playing one map, raced against my “ghost” a couple of times, pushed esc, chose a new level and my ghost was in the new level with me (i never played it before) but it was riding the old track:P…
There are actually some minor sound fx in there, only when you collection things atm, but yeah full on sfx are on the plan. Fullscreen, hadn’t really considered it tbh, I like the format as it is - more casual - but I guess an option could be added with some fiddling around.
Noted, it’s now on the plan.
Thanks, I’ll fix that next.
The current plan is available on the website now. Spent most of my time the last couple of days doing website updates. You can now see the best times people have done the different levels in on the site:
That skinning feature is a neat touch
Maybe you can do the same thing with sounds:
After looking at the Bart skin (which looks great!), I could easily imagine a similar South Park theme with lots of cursing when you fall etc ;D
Heh, I’ve been asked to add a “horn” effect to the skin, so this coupled with the user definable taunts (that are already in) you really aggrevate the people you’re beating in multiplayer games
Incidently, just added a new track to the hot-sync. The track is produced by KappaOne so please don’t blame me for the difficulty level
Hehe, sounds like really fun in multiplayer.
Is there some documentation of how to create skins etc? Maybe I’d like to have a bash at a South Park theme (no promises though, and it would be not within the next 2-3 weeks…)
Of course that would also require Kenny randomly wandering around to run over for bonus points, and Isaac Hayes music ;D