90 likes | 215 Vues
Experience a unique twist on platform gaming in this innovative "reverse-platformer" where you design the levels while an AI takes charge of character control. With an emphasis on user-generated content, you'll feel like an artist in a digital notebook as you craft intricate environments. Explore the challenges of level design, physics, and AI integration, while navigating a user-friendly interface. Delve into the intricacies of game development, from scripting behaviors to collision detection, and discover what works and what doesn’t in this engaging platformer. Play now!
E N D
A game by Gravity Pole Productions Graham Pentheny, Tim Volpe, Ryan LaSante http://www.wpi.edu/~pentheny/nbr/
Game Premise • “Reverse-platformer” • You make the level, AI does the character control • User Generated Content • “Notebook” feel
What Worked: • Level Design & File Format • Physics • AI • Making JME 2d • Drawing • Gameplay
What was a little skittish: • HUD (120d curse strikes again) • Moral: Tutorials aren’t always right… • Collision Detection (HACK HACK HACK) • User generated Geometry makes this much, much more complicated. • Menus w/ FengGui
What Outright Didn’t Work • Level Editor • Try to script new object behavior @_@ • Add to FSM • Manual level design works fine. • Text files • ____.lvl
Making JME to work for us • 2d • Fix camera movement to x and y axis • Game States • Level Objects • Art • HUD • Don’t use Java2d ;-)
Drawing Recognition • Get mouse coordinates at specific intervals • Place geometry between points • Get level object • Do recognize • Place object in scene…or not
AI, Physics, and Collision Detection • OO-FSM (yay acronyms) • Each has velocity, acceleration • Bounding Boxes (Extrude in Z) • Sends type to FSM which changes char movement • Decoupled from Framerate • <3 2d physics <3 • Decoupled from Framerate • Acceleration, Velocity, Position – Vector2d • this.position.add(this.velocity.mult(deltaTime)); • this.velocity.add(this.acceleration.mult(deltaTime)); • this.acceleration = this.theAI.currentState.getAcceleration();
PLAY THE GAME!!! http://www.wpi.edu/~pentheny/nbr/nbr.jnlp