3c36c4a3cd
Replaced Windows specific section with section detailing what to do to compile ClassiCube to work on integrated GPUs that only support OpenGL 1.1, and where specifically to place the flag in order to compile it successfully. |
||
---|---|---|
android | ||
doc | ||
misc | ||
src | ||
.gitattributes | ||
.gitignore | ||
credits.txt | ||
license.txt | ||
readme.md |
ClassiCube is a custom Minecraft Classic and ClassiCube client written in C that works on Windows, macOS, Linux, Android, BSD, Solaris, Haiku, and in a browser. It is not affiliated with (or supported by) Mojang AB, Minecraft, or Microsoft in any way.
You can grab the latest stable binaries from here and the very latest builds from here.
What ClassiCube is
- A complete re-implementation of Minecraft Classic, with optional additions.
- Lightweight, minimal memory usage compared to the vanilla client.
- Works with effectively all graphics cards that support OpenGL or Direct3D 9.
It does not work with 'modern/premium' Minecraft servers.
Requirements
- Windows: 98 or later.
- macOS: 10.5 or later. (Can be compiled to work with 10.3/10.4 though)
- Linux: libcurl and libopenal.
- Android: 2.3 or later.
Note: When running from within VirtualBox, disable Mouse Integration, otherwise the camera will not work properly.
Instructions
Initially, you will need to run ClassiCube.exe to download the required assets from minecraft.net. Just click 'OK' to the dialog menu that appears when you start the launcher.
Singleplayer Run ClassiCube.exe, then click Singleplayer at the main menu.
Multiplayer
Run ClassiCube.exe. You can connect to LAN/locally hosted servers, minecraft.net servers, and classicube.net servers through the launcher.
Stuck on OpenGL 1.1?
*If you are need to use the OpenGL 1.1 software renderer due to a non upgradable, older GPU, such as an ATI RAGE series card in an older laptop or PowerPC Mac with an integrated RAGE chip, add -DCC_BUILD_GL11
as a compilation flag before the optimize flag.
Compiling - Windows
Using Visual Studio
Open ClassiCube.sln and compile it.
If you get a The Windows SDK version 5.1 was not found
compilation error, see here for how to fix
Using Visual Studio (command line)
- Use 'Developer Tools for Visual Studio' from Start Menu
- Navigate to directory with game's source code
- Enter
cl.exe *.c /link user32.lib gdi32.lib crypt32.lib ws2_32.lib wininet.lib winmm.lib dbghelp.lib d3d9.lib shell32.lib /out:ClassiCube.exe
Using MinGW-w64
I am assuming you used the installer from https://sourceforge.net/projects/mingw-w64/
- Install MinGW-W64
- Use either Run Terminal from Start Menu or run mingw-w64.bat in the installation folder
- Navigate to directory with game's source code
- Enter
gcc *.c -o ClassiCube.exe -mwindows -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -ld3d9
Using MinGW
I am assuming you used the installer from http://www.mingw.org/
- Install MinGW. You need mingw32-base-bin and msys-base-bin packages.
- Run msys.bat in the C:\MinGW\msys\1.0 folder.
- Navigate to directory with game's source code
- Enter
gcc *.c -o ClassiCube.exe -mwindows -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -ld3d9
Compiling - Linux
Using gcc/clang
Install appropriate libs as required. For ubuntu these are: libx11-dev, libxi-dev and libgl1-mesa-dev
gcc *.c -o ClassiCube -lm -lpthread -lX11 -lXi -lGL -ldl
Cross compiling for windows:
i686-w64-mingw32-gcc *.c -o ClassiCube.exe -mwindows -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -ld3d9
Raspberry pi
Although the regular linux compiliation flags will work fine, to take full advantage of the hardware:
gcc *.c -o ClassiCube -DCC_BUILD_RPI -lm -lpthread -lX11 -lEGL -lGLESv2 -ldl
Compiling - macOS
Using gcc/clang (32 bit)
cc *.c -o ClassiCube -framework Carbon -framework AGL -framework OpenGL -framework IOKit
Using gcc/clang (64 bit)
cc *.c interop_cocoa.m -o ClassiCube -framework Cocoa -framework OpenGL -framework IOKit -lobjc
Compiling - other desktop OSes
FreeBSD
clang *.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo
OpenBSD
Install libexecinfo, curl and openal package if needed.
cc *.c -o ClassiCube -I /usr/X11R6/include -I /usr/local/include -L /usr/X11R6/lib -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo
NetBSD
gcc *.c -o ClassiCube -I /usr/X11R7/include -I /usr/pkg/include -L /usr/X11R7/lib -L /usr/pkg/lib -lpthread -lX11 -lXi -lGL -lexecinfo
DragonflyBSD
gcc *.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo
Solaris
gcc *.c -o ClassiCube -lm -lsocket -lX11 -lXi -lGL
NOTE: You have to change entry->d_type == DT_DIR to Directory_Exists(&path) (TODO do this automatically)
Haiku
Install libsdl2_devel, openal_devel, and libexecinfo_devel package if needed.
gcc *.c -o ClassiCube -lm -lexecinfo -lGL -lnetwork -lSDL2
NOTE: You have to change entry->d_type == DT_DIR to Directory_Exists(&path) (TODO do this automatically)
Compiling - other
Web
emcc *.c -s ALLOW_MEMORY_GROWTH=1 --preload-file texpacks/default.zip
The generated javascript file has some issues. See here for how to fix
Android
Use Android Studio or run gradlew in android folder (TODO explain more detailed)
iOS
clang *.c interop_ios.m -framework UIKit -framework OpenGLES -framework Foundation -lobjc
iOS version is unfinished because of lack of access to suitable devices for me to test with
Other
You'll have to write the necessary code. You should read portability.md in doc folder.
Known compilation errors
Fixes for compilation errors when using musl or old glibc for C standard library
Documentation
Functions and variables in .h files are mostly documented.
Further information (e.g. style) for the game's source code can be found in the doc and misc folders.
Tips
-
Press escape (after joining a world) or pause to switch to the pause menu.
-
Pause menu -> Options -> Controls lists all of the key combinations used by the client.
-
Note that toggling 'vsync' to on will minimise CPU usage, while off will maximimise chunk loading speed.
-
Press F to cycle view distance. A smaller number of visible chunks can improve performance.
-
If the server has disabled hacks, key combinations such as fly and speed will not do anything.
-
To see the list of built in commands, type
/client
. -
To see help for a given built in command, type
/client help <command name>
.
Open source technologies
- curl - HTTP/HTTPS for linux and macOS
- FreeType - Font handling for all platforms
- GCC - Compiles client for linux
- MinGW-w64 - Compiles client for windows
- Clang - Compiles client for macOS
- Emscripten - Compiles client for web