From Ace of Spades Classic
Jump to: navigation, search
Error creating thumbnail: Unable to save thumbnail to destination
An in-game screenshot of Iceball.

NOTE: This page is outdated. Check the GitHub repo or subreddit for the latest news.

Iceball is a project started by GreaseMonkey. It is currently under development.

The core engine is coded in C, while the bulk of the game logic is coded in Lua. It is planned that the client will download the bulk of the files from the server, including at least a bootloader in Lua, allowing the server to control what happens. If clientside content is to be permitted, the server-provided scripts can allow it (including Lua code, but securitywise that's just outright stupid).

Iceball is Free Software, the C engine being GPLv3 and the Lua side being LGPLv3.


Change Log

Note, this mostly only documents the Windows builds. It also only documents the C engine changes, not the Lua game code.

Version Date of Addition Addition Summary
N/A 1 November 2012
  • Git repo started, not playable at this point
N/A 11 November 2012
  • First playable release
N/A 14 November 2012
  • Playing the game made easier
N/A 17 November 2012
  • Implemented PMF editor
N/A 19 November 2012
  • Player models
  • Fog
  • Player names and squads
N/A 28 November 2012
  • Implemented ability to shoot rifle
  • Implemented ability to kill players
  • Added chat system (cannot talk yet)
N/A 29 November 2012
  • Implemented the T/Y chat system
  • Sorted out pathname security
  • Sorted out common.fetch_block
  • Implemented tent and intel
iceballfornoobs-004 12 December 2012
  • First networked prerelease.
iceballfornoobs-0.0-5 4 January 2013
  • Added sound support
  • Fixed a bunch of bugs
iceballfornoobs-0.0-6 4 January 2013
  • Fixed crash bug in 0.0-5 pertaining to sound channel wraparound (hotfix)
iceballfornoobs-0.0-8 7 January 2013
  • 3D Cubes
iceballfornoobs-0.0-10 9 January 2013
  • Fixed some rendering bugs with 0.0-8
iceballfornoobs-0.0-16 23 January 2013
  • Bugs fixed in renderer
  • Per-face shading implemented
  • Miscellaneous fixes and whatnot
iceballfornoobs-0.0-18 9 February 2013
  • Preliminary multi-core support in renderer
iceballfornoobs-0.0-22 14 February 2013
  • OpenGL renderer
iceballfornoobs-0.0-24 15 February 2013
  • Images are now shoved into their own texture objects instead of being constantly loaded over and over again
  • VBOs are supported
iceballfornoobs-0.0-25 17 February 2013
  • learn_more fixed a bug and added a feature.
  • Added a feature wrt keyboard layouts, and broke compatibility with -24
iceballfornoobs-0.0-27 18 February 2013
  • Adjusted client.hook_key so that it wasn't backwards incompatible
iceballfornoobs-0.0-29 15 March 2013
  • OpenGL renderer would crash if a new map was created in the map editor
  • 16-bit samples load the whole sample now, instead of just the first half
iceballfornoobs-0.0-30 15 March 2013
  • clsave/config.json
iceballfornoobs-0.0-32 20 March 2013
  • Added support for ImpulseTracker (*.it) modules
  • Fixed the dedicated server build, which I broke in -30 (was fixed in -31)
iceballfornoobs-0.0-39 23 April 2013
  • smooth lighting in the OpenGL renderer
  • server no longer has to be seeded with -svseed=*
iceballfornoobs-0.0-41 25 April 2013
  • OpenGL renderer options for number of chunks rendered and toggling VBOs
iceballfornoobs-0.0-42 25 April 2013
  • OpenGL backwards compatibility option for old graphics cards that don't support non-power-of-2 textures
iceballfornoobs-0.0-43 29 April 2013
  • S->C transfers can be cancelled
PRE: 0.0-44 25 May 2013
  • Unknown
PRE: 0.0-45 8 June 2013
  • libsackit finally updated, now you can play .it files which have resonant filters in them and whatnot
  • Tutorial added because People Can't Read
PRE: 0.0-47 20 June 2013
  • Z-fighting massively reduced with PMF model rendering
  • Support for loading/saving arbitrary binary files (and text files for that matter)
PRE: 0.0-48 21 June 2013
  • client.renderer variable - now you can tell what renderer someone is using!
  • OpenGL chunk tessellation stuff improved - it now follows a spiral pattern, and knows how many chunks are needed.
RC: 0.0-51 (0.1-rc1) 23 June 2013
  • All instances of sockfd on the Lua side replaced by a handle called "neth". This is of course for...
  • ENet protocol support. Should be less laggy, and less of a bandwidth whore.
  • Kicks no longer result in the game abort()ing; rather, they call client.hook_kick instead. Unfortunately, the kick reason isn't properly forwarded on, but that's no big deal.
RC: 0.0-53 (0.1-rc2) 24 June 2013
  • Miscellaneous crashes fixed.
  • Time granularity is much better.
RELEASE: Iceball 0.1 24 June 2013
  • The client can now read JSON files from the server.

Building Iceball



To build Iceball on windows, you need the following

MSYS FIXME: I'm pretty sure this isn't necessary. Use the SDL devel build instead of compiling SDL. --GreaseMonkey (talk) 01:39, 19 January 2013 (UTC)
SDL 1.2
Lua 5.1.4

And of course, Iceball which can be download from Github.

Setting up

Copy the Lua/zlib/iceball folders to mingw/msys/1.0/home/(user name). Then in the Iceball folder, create a new folder called "winlibs". Now create another folder called "SDL", place all SDL headers inside it. Then grab all lib_sdl*.a files and place them in winlibs. Place all Lua/zlib headers inside winlibs aswell. You will need to build zlib and Lua. This is pretty straight forward.

Building Lua

Open up MSYS, and navigate to the Lua directory. Then type

make mingw

This should build Lua. Copy liblua.a into winlibs.

Building zlib

Navigate to the zlib directory in MSYS. Type in

make -f win32/Makefile.gcc

This should build zlib. Copy zlib.a to winlibs.

Building Iceball

Navigate to the Iceball directory. Type in

make clean all -f Makefile.mingw

If you have any problems, I would start by opening up Makefile.mingw and changing the line CC = $(MINGWPREFIX)/gcc to CC = gcc. If that fails get on #Iceball and bug somebody till they help you.


GreaseMonkey - Lead dev

Everything no one else did.

Arctic77 (articsledder)

Made the Rifle model


Player name list
Team switching
Exit dialogue
Improved keybinding system


Czech translation
Loading screen images
Improved block placement
Client-side Lua "console"
Teleport command

Ericson2314 (Sonarpulse)

Rearranged the build tree
Added an SSE optimized matrix-vector multiply


Permissions system
Modular command system
Misc minor usability tweaks (scroll wheel to change tool, zoom toggle)
Hosts the only Iceball server


FPS counter
Basic key binding system


GUI system
Misc util functions


Debug stuff