Tilt the floor to roll a ball through an obstacle course before time runs out. Neverball is part puzzle game, part action game, and entirely a test of skill.

Also found here is Neverputt, a hot-seat multiplayer miniature golf game using the physics and graphics of Neverball.

Neverball and Neverputt are known to run under Linux, Win2K/XP, FreeBSD, and OSX. Hardware accelerated OpenGL is required. A 500MHz processor is recommended.


Status

Expert Neverball players Shinobufan and Tuxmym have put together a Neverball Hall of Fame . This site catalogs their crazy runs and high scores. Take a look and witness some very impressive Neverball play. If you've got interesting replays of your own, be sure to send them in!

The current version includes 75 Neverball levels and 62 Neverputt levels. Thanks to Pasi Kallinen for his contribution of 2 new complete putt courses!

Contributed levels are more than welcome. Players interested in trying their hand at level creation are encouraged to install GtkRadiant and read through the mapping documentation. Feel free to contact me for assistance and advice. All contributed levels of sufficent quality and finish will be included in the package hosted here, and all authors will be credited in-game.


Download

Source code is made available under the terms of the GNU General Public License. Building the source requires the developer's distributions of SDL, SDL_mixer, SDL_image, and SDL_ttf.

Windows users NOTE: The Windows binary packages include all necessary DLLs for SDL and its related libraries. However, some of the game binaries were build using Visual Studio 7.1, and may require MSVCR71.DLL. These packages do not provide this DLL. It maybe acquired by installing the .Net Framework, Office .Net, or Visual Studio .Net.

Thanks to Derek Arndt for this OS X binary package. May require OS 10.3.

This Windows binary packages may be unzipped and run in place.

Thanks to Tamas Szerb and Max Gilead for creating and hosting Debian packages, now apt-get-able in Debian sid.

Thanks to Tom Newsom for creating and hosting Slackware packages

Thanks to Jeremy Messenger for creating a FreeBSD port


Screenshots


FAQ

"My computer does not meet the stated minimum system requirements, and yet I insist on trying to play it anyway and blaming you, rlk, for writing a crappy game. WTF?"
The biggest performance killer is reflection. Turn that off in the Options screen. This feature requires a stencil buffer, which is poorly supported on some hardware. So in the event that the game doesn't even run, set reflection 0 in the neverballrc file.
Next, disable Shadow in the Options screen or set shadow 0 in the neverballrc file.
If your video board has less than 16MB of VRAM, set Textures to Low in the Options, or textures 2 in the neverballrc. This will eliminate texture thrashing.
You can also try setting Geometry to Low, but I'm sure you knew that already. It does reduce the onscreen polygon count somewhat, but not a lot. It's more of a placebo option. After clicking on it you can start composing a nasty email demanding support for this game that you didn't pay for.
"I HATE the new camera settings!"
As documented in the README file, the camera may be returned to its pre-1.2.6 configuration by editing the following values in your neverballrc file.
view_fov 50
view_dp  400
view_dc  0
view_dz  600
"The game takes control of my mouse. How can I make it let go so I can use another window?"
Press the spacebar to pause the game and toggle the pointer grab.
"Why don't you add an option to zoom the camera in and out?
This is, without a doubt, the single most common feature suggestion I hear. The short answer is: "Because Super Monkey Ball doesn't have that feature."
The long answer recognizes the fact that the design of Neverball is not motivated by precise conformance to Monkey Ball. The truth is that the camera zoom has a profound effect on gameplay. It's much easier from far away. Allowing the player to zoom the camera removes the immersion that a 3rd person perspective provides, but that an overhead view does not. It undermines the latitude that the level designer has in shaping the feel and challenge of a level. In total, it changes the style of the game.
"How do I set the mouse sensitivity?
Mouse sensitivity is set using the mouse_sense option in the neverballrc file. The default value is 300. This gives the number of screen pixels the mouse pointer must move to rotate the floor through its entire range. A smaller number means more sensitive.
One word of caution: new players often feel that the mouse is too sensitive. It may seem so for early levels, but it can be very different for later levels.
"I see a bug! When the ball goes below a platform you can see the shadow ABOVE the ball!"
I know. The shadow code is easier this way. Don't think of it as a shadow, think of it as a reference point that tells you where a bouncing ball will land.
"It won't compile. It says something about...
... sdl-config: Command not found
The game requires SDL, SDL_image, SDL_mixer, and SDL_ttf to run. To compile, it also requires the header files for each of these, so you'll need to install packages for SDL-devel, SDL_image-devel, SDL_mixer-devel, and SDL_ttf-devel.

Changes

-------------------------------------------------------------------------------
New in 1.4.0

* Fixed font renderer to never exceed maximum texture size.

-------------------------------------------------------------------------------
New in 1.3.11

* Fixed broken Unix build.
* Added OSX SDL mouse invert workaround.
* A few texture tweaks.
* Fixed broken Ball HUD.

-------------------------------------------------------------------------------
New in 1.3.10

* Tweaks to pars.
* Added wireframe view to Putt.
* Fixed view toward hole when the hole is directly above or below the ball.

-------------------------------------------------------------------------------
New in 1.3.9

* Made a few minor fixes to paxed's holes.
* Added score and par to HUD.
* Show score card only after a hole is finished.
* Added timeouts to all in-game states except Next Player.
* Fixed texture ID leak in conf state.

-------------------------------------------------------------------------------
New in 1.3.8

* Modified joystick traversal of GUIs to wrap top/bottom and left/right.
* Converted Putt to use Ball's GUI API.
* Merged Putt's and Ball's audio managers into shared.
* Added "Paused" screen to Putt.
* Generalized Putt's scoring to allow courses of length other than 18.
* Enabled switches in Putt.
* Added paxed's Putt courses.
* Changed a few textures on paxed's courses.
* Capped per-hole scores at 12.
* Modified several Putt backgrounds.
* Applied a change to Mehdi 25.
* Added poser mode to Putt.
* "Fixed" mouse jump on pointer grab.  SDL is unpredictable here.
* By popular demand, set initial ball view toward hole.

-------------------------------------------------------------------------------
New in 1.3.7

* Fixed mapc normal optimization bug.  Resolves the Putt 16 invisible wall.

-------------------------------------------------------------------------------
New in 1.3.6

* Fixed mapc normal optimization bug.  Resolves the "Level 6" crash.

-------------------------------------------------------------------------------
New in 1.3.5

* Applied fixes to Mehdi's levels
* Fixed GUI keyboard caps lock bug.
* Fixed no default GUI state on Done screen (joystick didn't work).
* Added fast camera rotation bound to Shift keys.
* Added camera rotation rate to config file.
* Modified perspective matrix to match gluPerspective.

-------------------------------------------------------------------------------
New in 1.3.4

* Removed unnecessary autopause when pointer is not grabbed.
* Fixed GUI not hilighting widget under cursor when mouse isn't moved.
* Fixed config file written only when changed.

-------------------------------------------------------------------------------
New in 1.3.3

* Removed few remaining bits of GLU code.
* Whitened glyph textures manually rather than relying upon pixel bias.
* Fixed Neverputt shadow

-------------------------------------------------------------------------------
New in 1.3.2

* Rewrote shadow code to use mulipass rather than multitexture.
* Removed all multitexture code.
* Added shadow option to config screen.
* Fixed music fade-in bug.
* Fixed badly named static variable "clock".
* Added level number to replay save screen.

-------------------------------------------------------------------------------
New in 1.3.1

* Fixed Save Replay not allowing score count to complete.
* Fixed bad unlock score in Mehdi 25.

-------------------------------------------------------------------------------
New in 1.3.0

* Fixed replay header nonportable.

-------------------------------------------------------------------------------
New in 1.2.11

* Rewrote SOL reader/writer to remove byte-order dependance.
* Rewrote replay handler to remove byte-order dependance
* Modified replay selector to ignore partial replays.
* Added camera mode gamepad control.
* Applied Mehdi's updates to several levels.
* Generalized config string handling.  Added coin and ball option strings.
* Added two new background music tracks.
* Fixed broken set scoring.
* Added Set Record screen.

-------------------------------------------------------------------------------
New in 1.2.10

* Added caps lock key to keyboard.
* Worked around Neverputt overwriting Neverball's camera setting.
* Added clobber confirmation to replay save.
* Fixed an audio bug when fading to the currently playing song.

-------------------------------------------------------------------------------
New in 1.2.9

* Merged set-complete state into goal state, fixing set-complete crash.
* Fixed a few game state init crashes.
* Fixed a few pointer grab issues.
* Added random replay during attract mode.
* Added scene fade in/out.
* Fixed a bug causing the texture quality setting to be ignored.
* Moved shadow handling in with other geometry, where it belongs.
* Moved particle and shadow init/free out of game init/free and into config.

-------------------------------------------------------------------------------
New in 1.2.8

* Improved directory handling.  No longer depends on CWD.
* Moved all config files to ~/.neverball/ directory.
* Screenshots now go to CWD, which is not changed.
* Reorganized replay handling.
* Added replay save / play / delete GUIs.
* Added auto disabling of stereo and reflection is mode set fails.
* Changed default pointer state to ungrabbed.

-------------------------------------------------------------------------------
New in 1.2.7

* Changed policy: Goal opens after a set number of coins are collected.
* Changed policy: Extra balls are awarded only after a goal.
* Changed policy: Game is saved after every goal.
* Changed hud to reflect new scoring policies.
* Fixed volume set bug.
* Fixed shadow visible on reflective surfaces in level shots.
* Fixed music on config screen.
* Increased ball transparancy to accomodate new view.
* Added subtle view distance flexibility.
* Merged Goal and High Score states.
* Tweaked some levels and scores in line with new scoring policies.
* Added better fading to make music less repetitious and annoying.

-------------------------------------------------------------------------------
New in 1.2.6

* Modularized state functions.
* Changed view to make horizon visible.
* Added view configuration options for people who whine about the new view.
* Changed background images to augment horizon.
* Fixed Neverputt far clip set closer than background.
* Fixed an audio init bug.
* Generalized config handling.
* Heavily modified GUI handling.
* Replaced all 2D menus with new GUI code.
* Changed image loading policy to support non-power-of-two images.
* Replaced Win32 makefile with VS.Net solution.
* Rewrote HUD to use new GUI handler.
* Added billboard objects to .SOL file.
* Policy change: .SOL files now go in same directory as .MAP files.
* Changed mapc to derive .SOL file name from .MAP file name.
* Changed pause screen to include the word "Paused".
* Changed internal clock to use integer deciseconds instead of float seconds.
  (HIGH SCORE FILE CHANGED)
* Made some fixes to reflection handling.
* Added background .SOLs.
* Added wireframe mode.
* Added look-around mode.
* Added keyboard-to-joystick input mapping.
* Added mipmap generation.
* Added clamped material type.

-------------------------------------------------------------------------------
New in 1.2.5

* Fixed refrected background rotation.
* Added OBJ loading to mapc.
* Finally fixed material hack in mapc.
* A few graphical optimizations.
* Added shadow config option.
* Added sphere-map material type.
* Modified many levels to use detail OBJs.
* Traded doubles/ints for floats/shorts in the .sol file.  This cuts .sol
  file size in half, but puts a limit on level complexity.

-------------------------------------------------------------------------------
New in 1.2.4

* Added camera control key binding to config file.
* Fixed some braindead reflection handling code.
* Fixed broken config menu.
* Fixed sound volume adjustment crash when sound is disabled.
* Fixed very stupid game timing bug that had been around far too long.

-------------------------------------------------------------------------------
New in 1.2.3

* Added reflection material.
* Modified several levels to use reflective material.
* Added option to disable reflection materials.
* Updated mapping documentation.
* Changed shadow CLAMP_TO_EDGE to CLAMP to work around some bad drivers.
* Added arrow key bindings for camera rotation.

-------------------------------------------------------------------------------
New in 1.2.2

* Fixed a sneaky bug in menu memory that allowed unopened levels to be played.
* Fixed camera rotation joystick button init bug.
* Changed options menu to make unavailable modes unselectable.
* Implemented auto-pause when the game loses focus externally.
* Simplified ARB extension handling.
* Made another tweak to the level set screenshot loader.
* Applied Mehdi's tweak to level 5.

-------------------------------------------------------------------------------
New in 1.2.1

* Fixed the scoring bug for real this time.
* Documented global set scoring.
* Added a ball "ghost" to ensure the ball remains visible when obscured.

-------------------------------------------------------------------------------
New in 1.2.0

* Fixed the path timing bug for real this time.

-------------------------------------------------------------------------------
New in 1.1.6

* Updated Mehdi's set to final.
* Fixed a path timing bug to correct a slight path pause discrepancy.
* Fixed scoring bug that was adding coins from failed level to global score.
* Fixed a bug corrupting level set screenshots.

-------------------------------------------------------------------------------
New in 1.1.5

* Reorganized code, merged Neverputt code.
* Added friction physics.
* Fixed goal particle radius.

-------------------------------------------------------------------------------
New in 1.1.4

* Set all menus to remember their last selection.  Now the frustrated player
  need only pound angrily on the mouse button to get back to his last save.

-------------------------------------------------------------------------------
New in 1.1.3

* Fixed pipe.sol dependancy missing from Win32 makefile.
* Added help screen.

-------------------------------------------------------------------------------
New in 1.1.2

* Mouse invert and joystick select patches.
* Minor level tweaks.
* Fixed no levels open after reading old high score file.
* Fixed activation of all switches at the same location.
* Added camera HUD indicator.

-------------------------------------------------------------------------------
New in 1.1.1

* Added stereo viewing.
* Fixed Win32 makefile.

-------------------------------------------------------------------------------
New in 1.1.0

* Minor tweaks and cleanup for an announced release.

-------------------------------------------------------------------------------
New in 1.0.5

* Changed default scores file format, removing player names.
* Adjusted level order and default scores.
* Reimplemented physics lock punt.

-------------------------------------------------------------------------------
New in 1.0.4

* New levels
* Fixed texture positioning bug
* Darkened screen during pause
* Modified high scores to keep global highs.  (HIGH SCORE FILE CHANGED)
* Added new automatic level shot grabber.
* Tweaked BSP optimizer.

-------------------------------------------------------------------------------
New in 1.0.3

* Modified some textures.
* Modified some levels.
* Modified switches to switch entire path chains.
* Disallowed player from toggling timed switches off manually.

-------------------------------------------------------------------------------
New in 1.0.2

* Added level set selector.  (HIGH SCORE FILE CHANGED)
* Modified demo playback to handle level sets.
* Added BSP optimization to physics.
* New textures.
* New levels.
* Added Mehdi's level set.
* Modified switches to act on paths rather than bodies.
* Added timer option to switches.

-------------------------------------------------------------------------------
New in 1.0.1

* Modified physics to better handle vertical movers.
* Added mover switch entity.
* Replaced level 13 with a level using vertical movers and switches.

-------------------------------------------------------------------------------
New in 1.0.0

* Absolutely nothing

-------------------------------------------------------------------------------
New in 0.25.12

* FreeBSD support
* OSX support

-------------------------------------------------------------------------------
New in 0.25.11

* Changed platforms to accelerate rather than change velocity instantly.
* Changed timer to display minutes.  Increased max time from 99s to 9m59s.
* Changed teleport exit to be relative to teleport entry.
* Fixed time comparison ambiguity.

-------------------------------------------------------------------------------
New in 0.25.10

* Fix broken load balancer starving the renderer on early level load.
* Disabled music playback entirely when music volume is zero.

-------------------------------------------------------------------------------
New in 0.25.9

* Demo record and replay.

-------------------------------------------------------------------------------
New in 0.25.8

* Padded .sol files to make them portable between Linux and Windows.
* Added pulsing HUD numbers.
* Changed Windows config file path.
* Changed pause mode to continue rendering.

-------------------------------------------------------------------------------
New in 0.25.7

* Added background music.
* Changed several sounds.
* Added sound and music volume control to options screen and config file.
* Fixed discrepancy between reported time and recorded time.
* Fixed new coin record not triggering name input state.
* Fixed ESC during goal state.

-------------------------------------------------------------------------------
New in 0.25.6

* Level score and high score list added to goal screen.
* Level score added to record screen.
* Goal screen requires click-through instead of time-out.
* Fixed level time bug.  Clock was running during goal screen.

-------------------------------------------------------------------------------
New in 0.25.5

* Player name stored in config.
* Keyboard camera selection.
* Tweaked cameras.

-------------------------------------------------------------------------------
New in 0.25.4

* Changed save game policy: it must be earned by collecting coins.
* Added camera tracking configuration option.
* Added coin sub-sort of time records.
* Added time sub-sort of coin records.
* Fixed exit-during-teleport bug.
* Fixed potential infinite loop when ball is crushed.
* Warn and continue on audio init failure.

-------------------------------------------------------------------------------
New in 0.25.3

* Modified camera tracking, disabled direct camera control.

-------------------------------------------------------------------------------
New in 0.25.2

* Added default records.  Something to shoot for.

-------------------------------------------------------------------------------
New in 0.25.1

* Added record keeping.
* Reorganized level selector to include records.
* Added record name input state.
* Changed shadow clamp back to CLAMP_TO_EDGE.  Screw broken drivers.
* Changed timer to display hundredths of seconds.
* Got rid of clock tick until last 10 seconds (it conflicts with music).
* Returned original menu pointer motion.  Reorganized point hide.
* Globalized pause state to generalize pointer grab handling.

-------------------------------------------------------------------------------
New in 0.25.0

* Added teleportation.
* Changed menus to work with relative pointer motion.
* Changed pointer grab policy to lessen grab motion discontinuity impact.
* Fixed channel order for TGA textures.
* Fixed level selector link topology.
* New levels.

-------------------------------------------------------------------------------
New in 0.21.0

* Display screen shots in level selector.
* Cut level selector to 25 to make room for level shot.
* Generalized flyby representation.
* Added poser state for capturing level shots.
* New Levels.

-------------------------------------------------------------------------------
New in 0.16.2

* Native Windows support returned.
* Fixed HUD not responding to texture quality setting.
* Hyper-paranoid ARB_multitexture usage.

-------------------------------------------------------------------------------
New in 0.16.0

* Fixed input smoothing in game_step causing oscillation at low FPS.
* Worked around broken shadow CLAMP_TO_EDGE on i845G.
* Added high_level config and modified level select.  Documented cheat.
* New levels.

-------------------------------------------------------------------------------
New in 0.14.0

* New version numbering convention.  Minor number is level count.
* Broke native Windows support.
* Reorganized source and Makefiles.
* Modified mapc to take a materials path.
* Fixed potential overflow in config_home.

-------------------------------------------------------------------------------
New in 0805b

* Worked around broken color mask attribute pop in ball_draw on ATI.

-------------------------------------------------------------------------------
New in 0805a

* Sent screenshots to $HOME rather than CWD, fixing segfault.

-------------------------------------------------------------------------------
New in 0805

* Removed some initial state assumptions that were wrong for some users.
* Fixed $HOME determination under Windows.

-------------------------------------------------------------------------------
New in 0804

* First release as "Neverball".
* Added joystick control.
* Added camera control.
* Added ball shadow.
* Added level intros.
* Added config file stored in $HOME.
* Removed text images and added TTF rendering.
* New textures.
* New levels.

-- Robert Kooima