2023-08-22 04:13:44 -04:00
ClassiCube is a custom Minecraft Classic compatible client written in C from scratch.< br >
2024-09-17 05:00:51 -04:00
> [!IMPORTANT]
**ClassiCube is not affiliated with (or supported by) Mojang AB, Minecraft, or Microsoft in any way.** < br > < br >
2024-09-17 07:51:43 -04:00
**ClassiCube is not trying to replicate modern Minecraft.**< br >
**It will never support survival, Minecraft accounts, or modern Minecraft servers.**
2015-06-30 21:15:53 -04:00
2024-02-02 23:47:46 -05:00
# What ClassiCube is
2015-10-28 15:28:23 -04:00
2024-02-02 23:47:46 -05:00
ClassiCube aims to replicate the 2009 Minecraft Classic client while offering **optional** enhancements to improve gameplay. ClassiCube can run on [many systems ](#supported-systems ), including desktop, web, mobile, and even some consoles.
< details >
< summary > < b > Features (click to expand)< / b > < / summary >
2023-08-22 04:13:44 -04:00
2024-02-02 23:47:46 -05:00
* Much better performance and minimal memory usage compared to original Minecraft Classic
* Optional enhancements including custom blocks, models, and environment colors
* Partially supports some features of Minecraft Classic versions before 0.30
* Works with effectively all graphics cards that support OpenGL or Direct3D 9
* Runs on Windows, macOS, Linux, Android, iOS, and in a web browser
* Also runs on OpenBSD, FreeBSD, NetBSD, Solaris, Haiku, IRIX, SerenityOS
* Although in various stages of early development, also runs on various consoles
< / details >
2024-09-17 05:00:51 -04:00
You can **download ClassiCube** [here ](https://www.classicube.net/download/ ) and the very latest builds [here ](https://www.classicube.net/nightlies/ ).
2023-08-22 04:13:44 -04:00
2024-04-01 07:13:32 -04:00
![classic ](https://github.com/ClassiCube/ClassiCube/assets/6509348/eedee53f-f53e-456f-b51c-92c62079eee0 )
2023-08-22 04:13:44 -04:00
2024-04-01 07:13:32 -04:00
![enhanced ](https://github.com/ClassiCube/ClassiCube/assets/6509348/b2fe0e2b-5d76-41ab-909f-048d0ad15f37 )
2015-06-30 21:15:53 -04:00
2024-02-02 23:47:46 -05:00
# We need your help
2023-05-11 07:59:12 -04:00
2024-09-17 05:00:51 -04:00
ClassiCube strives to replicate the original Minecraft Classic experience by **strictly adhering to [clean room](https://en.wikipedia.org/wiki/Clean_room_design) reverse engineering approach** .
2023-05-11 07:59:12 -04:00
2024-09-21 04:55:31 -04:00
If you're interested in documenting or verifying the behaviour of the original Minecraft Classic, please get in contact on the [ClassiCube Discord ](https://classicube.net/discord )
2023-05-11 07:59:12 -04:00
2015-06-30 21:15:53 -04:00
2024-02-02 23:47:46 -05:00
# How to play
2023-05-11 07:59:12 -04:00
Initially, you will need to run ClassiCube.exe to download the required assets from minecraft.net and classicube.net.< br >
2016-01-12 05:53:17 -05:00
Just click 'OK' to the dialog menu that appears when you start the launcher.
2015-06-30 21:15:53 -04:00
2024-09-17 05:00:51 -04:00
> **Note:** When running from within VirtualBox, disable Mouse Integration, otherwise the in-game camera won't work properly.
**Singleplayer mode**
2019-02-01 21:26:33 -05:00
Run ClassiCube.exe, then click Singleplayer at the main menu.
2015-06-30 21:15:53 -04:00
2024-09-17 05:00:51 -04:00
**Multiplayer mode**
2023-05-11 07:59:12 -04:00
Run ClassiCube.exe. You can connect to LAN/locally hosted servers, and classicube.net servers if you have a [ClassiCube account ](https://www.classicube.net/ ).
2015-06-30 21:15:53 -04:00
2023-09-26 07:13:23 -04:00
#### *Stuck on OpenGL 1.1?*
2023-06-08 08:15:37 -04:00
The most common reason for being stuck on OpenGL 1.1 is non-working GPU drivers - so if possible, you should try either installing or updating the drivers for your GPU.
2021-02-12 10:45:54 -05:00
2023-06-08 08:15:37 -04:00
Otherwise:
2024-09-17 05:00:51 -04:00
* On Windows, you can still run the OpenGL build of ClassiCube anyways. < br >
(You can try downloading and using the MESA software renderer from [here ](http://download.qt.io/development_releases/prebuilt/llvmpipe/windows/ ) for slightly better performance though)
* On other operating systems, you will have to [compile the game yourself ](#Compiling ). < br >
Don't forget to add `-DCC_BUILD_GL11` to the compilation command line so that the compiled game supports OpenGL 1.1.
2023-06-08 08:15:37 -04:00
2024-02-02 23:47:46 -05:00
# Supported systems
2023-09-26 07:13:23 -04:00
ClassiCube runs on:
* Windows - 95 and later
2024-09-17 05:00:51 -04:00
* macOS - 10.5 or later (can be compiled for 10.3/10.4 though)
2023-09-26 07:13:23 -04:00
* Linux - needs `libcurl` and `libopenal`
* Android - 2.3 or later
2024-03-12 08:32:41 -04:00
* iOS - 8.0 or later
2023-09-26 07:13:23 -04:00
* Most web browsers (even runs on IE11)
2023-09-27 06:49:16 -04:00
And also runs on:
* Raspberry Pi - needs < code > libcurl</ code > and < code > libopenal</ code >
2024-09-17 05:00:51 -04:00
* FreeBSD - needs < code > libexecinfo</ code > , < code > curl</ code > and < code > openal-soft</ code > packages (can [download from here ](https://www.classicube.net/download/#dl-fbsd ))
* NetBSD - needs < code > libexecinfo</ code > , < code > curl</ code > and < code > openal-soft</ code > packages (can [download from here ](https://www.classicube.net/download/#dl-nbsd ))
2023-09-27 06:49:16 -04:00
* OpenBSD - needs < code > libexecinfo</ code > , < code > curl</ code > and < code > openal</ code > packages
* Solaris - needs < code > curl</ code > and < code > openal</ code > packages
2024-02-19 19:52:31 -05:00
* Haiku - needs < code > openal</ code > package (if you have a GitHub account, can [download from here ](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_haiku.yml ))
2023-09-27 06:49:16 -04:00
* BeOS - untested on actual hardware
* IRIX - needs < code > curl</ code > and < code > openal</ code > packages
* SerenityOS - needs < code > SDL2</ code >
2024-06-07 22:03:52 -04:00
* Classic Mac OS (System 7 and later)
2024-07-12 19:21:21 -04:00
* Dreamcast - unfinished, but usable (can [download from here ](https://www.classicube.net/download/dreamcast ))
2024-08-16 20:26:42 -04:00
* Saturn - unfinished, major rendering and **stability issues** (can [download from here ](https://www.classicube.net/download/saturn ))
2024-04-27 00:41:55 -04:00
* Switch - unfinished, but usable (can [download from here ](https://www.classicube.net/download/switch ))
2024-08-16 20:26:42 -04:00
* Wii U - unfinished, major issues, **broken on real hardware** (can [download from here ](https://www.classicube.net/download/wiiu ))
2024-03-25 21:14:31 -04:00
* Wii - unfinished, but usable (can [download from here ](https://www.classicube.net/download/wii ))
2024-04-16 07:24:31 -04:00
* GameCube - unfinished, but usable (can [download from here ](https://www.classicube.net/download/gamecube ))
* Nintendo 64 - unfinished, moderate rendering issues (can [download from here ](https://www.classicube.net/download/n64 ))
2024-03-25 21:14:31 -04:00
* 3DS - unfinished, but usable (can [download from here ](https://www.classicube.net/download/3ds ))
2024-04-27 00:41:55 -04:00
* DS/DSi - unfinished, rendering issues (can [download from here ](https://www.classicube.net/download/nds ))
2024-02-05 19:52:14 -05:00
* PS Vita - unfinished, rendering issues (can [download from here ](https://www.classicube.net/download/vita ))
2024-04-16 07:24:31 -04:00
* PSP - unfinished, rendering issues (can [download from here ](https://www.classicube.net/download/psp ))
* PS3 - unfinished, rendering issues (can [download from here ](https://www.classicube.net/download/ps3 ))
2024-03-16 17:15:24 -04:00
* PS2 - unfinished, major rendering and **stability issues** (can [download from here ](https://www.classicube.net/download/ps2 ))
2024-08-16 20:26:42 -04:00
* PS1 - unfinished, major rendering and **stability issues** (can [download from here ](https://www.classicube.net/download/ps1 ))
* Xbox 360 - completely unfinished, **broken on real hardware** (can [download from here ](https://www.classicube.net/download/360 ))
2024-04-16 07:24:31 -04:00
* Xbox - unfinished, major rendering issues (can [download from here ](https://www.classicube.net/download/xbox ))
2023-09-26 07:13:23 -04:00
2023-06-08 08:15:37 -04:00
# Compiling
2024-09-17 05:00:51 -04:00
*Note: The instructions below automatically compile ClassiCube with the recommended defaults for the platform. < br >
2023-06-08 08:15:37 -04:00
If you (not recommended) want to override the defaults (e.g. to compile OpenGL build on Windows), see [here ](doc/overriding-defaults.md ) for details.*
2017-10-22 20:07:33 -04:00
2021-07-23 23:51:30 -04:00
## Compiling - Windows
2019-03-10 12:24:28 -04:00
2020-07-11 19:36:31 -04:00
##### Using Visual Studio
2024-09-17 05:00:51 -04:00
1. Open ClassiCube.sln *(File -> Open -> Project/Solution)*
2. Compile/Build it *(Build -> Build Solution)* .
2019-03-10 12:24:28 -04:00
2023-09-27 06:49:16 -04:00
If you get a `The Windows SDK version 5.1 was not found` compilation error, [see here for how to fix ](doc/compile-fixes.md#visual-studio-unsupported-platform-toolset )
2019-06-27 09:06:17 -04:00
2020-07-11 19:36:31 -04:00
##### Using Visual Studio (command line)
1. Use 'Developer Tools for Visual Studio' from Start Menu
2023-06-09 09:25:21 -04:00
2. Navigate to the directory with ClassiCube's source code
2024-09-17 05:00:51 -04:00
3. Run `cl.exe *.c /link user32.lib gdi32.lib winmm.lib dbghelp.lib shell32.lib comdlg32.lib /out:ClassiCube.exe`
2020-07-11 19:36:31 -04:00
##### Using MinGW-w64
2024-09-17 05:00:51 -04:00
Assuming that you used the installer from https://sourceforge.net/projects/mingw-w64/ :
2019-03-10 12:24:28 -04:00
1. Install MinGW-W64
2. Use either *Run Terminal* from Start Menu or run *mingw-w64.bat* in the installation folder
2023-06-10 03:37:22 -04:00
3. Navigate to the directory with ClassiCube's source code
2024-09-17 05:00:51 -04:00
4. Run `gcc -fno-math-errno *.c -o ClassiCube.exe -mwindows -lwinmm`
2019-03-10 12:24:28 -04:00
2020-07-11 19:36:31 -04:00
##### Using MinGW
2024-09-17 05:00:51 -04:00
Assuming that you used the installer from https://osdn.net/projects/mingw/ :
2019-03-23 06:09:51 -04:00
1. Install MinGW. You need mingw32-base-bin and msys-base-bin packages.
2. Run *msys.bat* in the *C:\MinGW\msys\1.0* folder.
2023-06-09 09:25:21 -04:00
2. Navigate to the directory with ClassiCube's source code
2024-09-17 05:00:51 -04:00
4. Run `gcc -fno-math-errno *.c -o ClassiCube.exe -mwindows -lwinmm`
2020-07-11 19:36:31 -04:00
2023-07-22 23:53:40 -04:00
##### Using TCC (Tiny C Compiler)
2024-03-31 02:14:59 -04:00
Setting up TCC:
1. Download and extract `tcc-0.9.27-win64-bin.zip` from https://bellard.org/tcc/
2024-08-23 19:16:32 -04:00
2. Download `winapi-full-for-0.9.27.zip` from https://bellard.org/tcc/
3. Copy `winapi` folder and `_mingw_dxhelper.h` from `winapi-full-for-0.9.27.zip` into TCC's `include` folder
2024-03-31 02:14:59 -04:00
Compiling with TCC:
1. Navigate to the directory with ClassiCube's source code
2. In `ExtMath.c` , change `fabsf` to `fabs` and `sqrtf` to `sqrt`
2024-09-17 05:00:51 -04:00
3. Run `tcc.exe -o ClassiCube.exe *.c -lwinmm -lgdi32 -luser32 -lcomdlg32 -lshell32` < br >
2024-03-31 02:14:59 -04:00
(Note: You may need to specify the full path to `tcc.exe` instead of just `tcc.exe` )
2021-07-23 23:51:30 -04:00
## Compiling - Linux
2019-03-23 06:09:51 -04:00
2020-07-11 19:36:31 -04:00
##### Using gcc/clang
2024-09-17 05:00:51 -04:00
1. Install X11, XInput2, and OpenGL development libraries if necessary. < br >
For Ubuntu, these are the `libx11-dev` , `libxi-dev` and `libgl1-mesa-dev` packages
2024-09-20 18:12:34 -04:00
2. Run either:
* `make linux` or
* `cc -fno-math-errno src/*.c -o ClassiCube -rdynamic -lpthread -lX11 -lXi -lGL -ldl`
2021-10-18 06:13:17 -04:00
##### Cross compiling for Windows (32 bit):
2024-09-17 05:00:51 -04:00
1. Install MinGW-w64 if necessary. (Ubuntu: `gcc-mingw-w64` package)
2. Run ```i686-w64-mingw32-gcc -fno-math-errno src/*.c -o ClassiCube.exe -mwindows -lwinmm```
2019-02-17 22:30:23 -05:00
2021-10-18 06:13:17 -04:00
##### Cross compiling for Windows (64 bit):
2024-09-17 05:00:51 -04:00
1. Install MinGW-w64 if necessary. (Ubuntu: `gcc-mingw-w64` package)
2. Run ```x86_64-w64-mingw32-gcc -fno-math-errno src/*.c -o ClassiCube.exe -mwindows -lwinmm```
2019-04-03 02:32:55 -04:00
2021-10-18 06:13:17 -04:00
##### Raspberry Pi
2019-12-14 00:13:37 -05:00
Although the regular linux compiliation flags will work fine, to take full advantage of the hardware:
2024-07-12 19:21:21 -04:00
```gcc -fno-math-errno src/*.c -o ClassiCube -DCC_BUILD_RPI -rdynamic -lpthread -lX11 -lXi -lEGL -lGLESv2 -ldl```
2019-12-14 00:13:37 -05:00
2021-07-23 23:51:30 -04:00
## Compiling - macOS
2024-09-17 05:00:51 -04:00
1. Install a C compiler if necessary. The easiest way of obtaining one is by installing **Xcode** .
2024-09-20 18:12:34 -04:00
2. Run either:
* `make darwin` or
* `cc -fno-math-errno src/*.c src/*.m -o ClassiCube -framework Cocoa -framework OpenGL -framework IOKit -lobjc`
2024-03-20 06:53:19 -04:00
2024-05-29 06:53:48 -04:00
##### Using Xcode GUI
2024-09-17 05:00:51 -04:00
1. Open the `misc/macOS/CCMAC.xcodeproj` project in Xcode
2. Compile the project
2024-05-29 06:53:48 -04:00
2022-08-17 07:17:09 -04:00
## Compiling - for Android
2023-09-27 06:49:16 -04:00
NOTE: If you are distributing a modified version, **please change the package ID from `com.classicube.android.client` to something else** - otherwise Android users won't be able to have both ClassiCube and your modified version installed at the same time on their Android device
2023-07-14 19:41:40 -04:00
2022-08-17 07:17:09 -04:00
##### Using Android Studio GUI
Open `android` folder in Android Studio (TODO explain more detailed)
##### Using command line (gradle)
Run `gradlew` in android folder (TODO explain more detailed)
## Compiling - for iOS
iOS version will have issues as it's incomplete and only tested in iOS Simulator
2023-09-27 06:49:16 -04:00
NOTE: If you are distributing a modified version, **please change the bundle ID from `com.classicube.ios.client` to something else** - otherwise iOS users won't be able to have both ClassiCube and your modified version installed at the same time on their iOS device
2023-07-14 19:41:40 -04:00
2022-08-17 07:17:09 -04:00
##### Using Xcode GUI
2024-09-25 06:43:20 -04:00
1. Open the `misc/ios/CCIOS.xcodeproj` project in Xcode
2024-09-17 05:00:51 -04:00
2. Compile the project
2022-08-17 07:17:09 -04:00
##### Using command line (Xcode)
`xcodebuild -sdk iphoneos -configuration Debug` (TODO explain more detailed)
2024-04-16 07:24:31 -04:00
## Compiling - webclient
2024-04-09 17:56:50 -04:00
2024-09-17 05:00:51 -04:00
1. Install emscripten if necessary.
2024-09-20 18:12:34 -04:00
2. Run either:
* `make web` or
* `emcc src/*.c -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=1Mb --js-library interop_web.js`
2024-04-09 17:56:50 -04:00
The generated javascript file has some issues. [See here for how to fix ](doc/compile-fixes.md#webclient-patches )
2020-07-11 19:36:31 -04:00
2024-09-20 18:12:34 -04:00
For details on how to integrate the webclient into a website, see [here ](doc/hosting-webclient.md )
2020-07-11 19:36:31 -04:00
2024-04-16 07:24:31 -04:00
< details >
< summary > < h2 > Compiling - consoles< / h2 > < / summary >
2019-04-20 08:21:32 -04:00
2024-09-21 04:55:31 -04:00
All console ports need assistance from someone experienced with homebrew development - if you're interested, please get in contact on the [ClassiCube Discord. ](https://classicube.net/discord )
2024-04-09 17:56:50 -04:00
2024-04-16 07:24:31 -04:00
< details >
< summary > < h3 > Nintendo consoles (click to expand)< / h3 > < / summary >
2024-04-09 17:56:50 -04:00
#### Switch
Run `make switch` . You'll need [libnx ](https://github.com/switchbrew/libnx ) and [mesa ](https://github.com/devkitPro/mesa )
**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here ](https://devkitpro.org/wiki/Getting_Started ) - you need the `switch-dev` group and the `switch-mesa switch-glm` packages)**
#### Wii U
Run `make wiiu` . You'll need [wut ](https://github.com/devkitPro/wut/ )
**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here ](https://devkitpro.org/wiki/Getting_Started ) - you need the `wiiu-dev` group)**
2019-06-27 09:06:17 -04:00
2023-05-11 07:59:12 -04:00
#### 3DS
2023-06-30 23:30:39 -04:00
Run `make 3ds` . You'll need [libctru ](https://github.com/devkitPro/libctru )
2023-05-11 07:59:12 -04:00
2023-07-22 23:53:40 -04:00
**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here ](https://devkitpro.org/wiki/Getting_Started ) - you need the `3ds-dev` group)**
2023-06-30 23:30:39 -04:00
#### Wii
2023-06-23 06:42:12 -04:00
2023-06-30 23:30:39 -04:00
Run `make wii` . You'll need [libogc ](https://github.com/devkitPro/libogc )
2023-06-23 06:42:12 -04:00
2023-07-22 23:53:40 -04:00
**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here ](https://devkitpro.org/wiki/Getting_Started ) - you need the `wii-dev` group)**
2023-06-30 23:30:39 -04:00
#### GameCube
2023-06-23 06:42:12 -04:00
2023-06-30 23:30:39 -04:00
Run `make gamecube` . You'll need [libogc ](https://github.com/devkitPro/libogc )
2023-06-23 06:42:12 -04:00
2023-07-22 23:53:40 -04:00
**NOTE: It is highly recommended that you install the precompiled devkitpro packages from [here ](https://devkitpro.org/wiki/Getting_Started ) - you need the `gamecube-dev` group)**
2024-04-16 07:24:31 -04:00
#### Nintendo DS/DSi
Run `make ds` . You'll need [BlocksDS ](https://github.com/blocksds/sdk )
2024-04-09 17:56:50 -04:00
#### Nintendo 64
2023-06-23 06:42:12 -04:00
2024-04-09 17:56:50 -04:00
Run `make n64` . You'll need the opengl branch of [libdragon ](https://github.com/DragonMinded/libdragon/tree/opengl )
2024-03-16 16:31:59 -04:00
2024-04-16 07:24:31 -04:00
< / details >
2024-03-16 16:31:59 -04:00
2024-04-09 17:56:50 -04:00
2024-04-16 07:24:31 -04:00
< details >
< summary > < h3 > Sony consoles (click to expand)< / h3 > < / summary >
2024-03-16 16:31:59 -04:00
2024-04-09 17:56:50 -04:00
#### PlayStation Vita
Run `make vita` . You'll need [vitasdk ](https://vitasdk.org/ )
2024-03-16 16:31:59 -04:00
2023-09-16 08:50:22 -04:00
#### PlayStation Portable
Run `make psp` . You'll need [pspsdk ](https://github.com/pspdev/pspsdk )
**NOTE: It is recommended that you install the precompiled pspsdk version from [here ](https://github.com/pspdev/pspdev/releases )**
#### PlayStation 3
Run `make ps3` . You'll need [PSL1GHT ](https://github.com/ps3dev/PSL1GHT )
2024-04-09 17:56:50 -04:00
#### PlayStation 2
Run `make ps2` . You'll need [ps2sdk ](https://github.com/ps2dev/ps2sdk )
2024-04-16 07:24:31 -04:00
#### PlayStation 1
Run `make ps1` . You'll need [PSn00bSDK ](https://github.com/Lameguy64/PSn00bSDK/ )
< / details >
< details >
< summary > < h3 > Microsoft consoles (click to expand)< / h3 > < / summary >
#### Xbox 360
2023-09-16 08:50:22 -04:00
2024-04-16 07:24:31 -04:00
Run `make 360` . You'll need [libxenon ](https://github.com/Free60Project/libxenon )
#### Xbox (original)
2023-08-12 07:10:50 -04:00
Run `make xbox` . You'll need [nxdk ](https://github.com/XboxDev/nxdk )
2024-04-16 07:24:31 -04:00
< / details >
< details >
< summary > < h3 > SEGA consoles (click to expand)< / h3 > < / summary >
2024-04-09 17:56:50 -04:00
### SEGA consoles
2023-08-12 07:10:50 -04:00
#### Dreamcast
Run `make dreamcast` . You'll need [KallistiOS ](https://github.com/KallistiOS/KallistiOS )
2024-04-27 00:41:55 -04:00
#### Saturn
Run `make saturn` . You'll need [libyaul ](https://github.com/yaul-org/libyaul )
2024-04-16 07:24:31 -04:00
< / details >
< / details >
< details >
< summary > < h2 > Compiling - other platforms (click to expand)< / h2 > < / summary >
#### FreeBSD
2024-09-17 05:00:51 -04:00
1. Install `libxi` , `libexecinfo` , `curl` and `openal-soft` packages if needed
2024-09-20 18:12:34 -04:00
2. Run either:
* `make freebsd` or
* `cc src/*.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo`
2024-04-16 07:24:31 -04:00
#### OpenBSD
2024-09-17 05:00:51 -04:00
1. Install `libexecinfo` , `curl` and `openal` packages if needed
2024-09-20 18:12:34 -04:00
2. Run either:
* `make opensd` or
* `cc src/*.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`
2024-04-16 07:24:31 -04:00
#### NetBSD
2024-09-17 05:00:51 -04:00
1. Install `libexecinfo` , `curl` and `openal-soft` packages if needed
2024-09-20 18:12:34 -04:00
2. Run either:
* `make netbsd` or
* `cc src/*.c -o ClassiCube -I /usr/X11R7/include -I /usr/pkg/include -L /usr/X11R7/lib -L /usr/pkg/lib -lpthread -lX11 -lXi -lGL -lexecinfo`
2024-04-16 07:24:31 -04:00
#### DragonflyBSD
2024-09-20 18:12:34 -04:00
1. Install `libxi` , `libexecinfo` , `curl` and `openal-soft` packages if needed
2. Run either:
* `make dragonfly` or
* `cc src/*.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo`
2024-04-16 07:24:31 -04:00
#### Solaris
2024-09-20 18:12:34 -04:00
1. Install required packages if needed
2. Run either:
* `make sunos` or
* `gcc -fno-math-errno src/*.c -o ClassiCube -lsocket -lX11 -lXi -lGL`
2024-04-16 07:24:31 -04:00
#### Haiku
2024-09-20 18:12:34 -04:00
1. Install `gcc` , `haiku_devel` , `openal_devel` packages if needed
2. Run either:
* `make haiku` or
2024-10-31 05:01:31 -04:00
* `cc -fno-math-errno src/*.c src/*.cpp -o ClassiCube -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker`
2024-04-16 07:24:31 -04:00
#### BeOS
2024-09-17 05:00:51 -04:00
1. Install a C compiler
2024-09-20 18:12:34 -04:00
2. Run either:
* `make beos` or
2024-10-31 05:01:31 -04:00
* `cc -fno-math-errno src/*.c src/*.cpp -o ClassiCube -lGL -lbe -lgame -ltracker`
2024-04-16 07:24:31 -04:00
#### IRIX
2024-09-20 18:12:34 -04:00
1. Install required packages if needed
2. Run either:
* `make irix` or
* gcc -fno-math-errno src/*.c -o ClassiCube -lGL -lX11 -lXi -lpthread -ldl`
2024-04-16 07:24:31 -04:00
#### SerenityOS
2024-09-17 05:00:51 -04:00
1. Install SDL2 port if needed
2024-09-20 18:12:34 -04:00
2. Run either:
* `make serenityos` or
* `cc src/*.c -o ClassiCube -lgl -lSDL2`
2024-04-16 07:24:31 -04:00
2024-06-07 22:03:52 -04:00
#### Classic Mac OS
2024-09-17 05:00:51 -04:00
1. Install Retro68
2. Run either
* ```make macclassic_68k``` (For a M68k build)
* ```make macclassic_ppc``` (For a PPC build)
2024-06-07 22:03:52 -04:00
The PowerPC build will usually perform much better
2024-04-16 07:24:31 -04:00
#### Other systems
You'll have to write the necessary code. You should read `portability.md` in doc folder.
< / details >
2021-07-23 23:51:30 -04:00
## Documentation
2019-02-17 22:30:23 -05:00
Functions and variables in .h files are mostly documented.
2023-06-09 09:25:21 -04:00
Further information (e.g. style) for ClassiCube's source code can be found in the doc and misc folders.
2019-12-04 15:39:35 -05:00
2021-07-23 23:51:30 -04:00
#### Known compilation errors
[Fixes for compilation errors when using musl or old glibc for C standard library ](doc/compile-fixes.md#common-compilation-errors )
2019-12-04 15:39:35 -05:00
#### 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.
2024-09-17 05:00:51 -04:00
* Press F to cycle view distance. Lower view distances can improve performance.
2019-12-04 15:39:35 -05:00
* 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>` .
2020-03-10 06:00:30 -04:00
2024-04-16 07:24:31 -04:00
< details >
< summary > < h2 > Open source technologies (click to expand)< / h2 > < / summary >
2020-03-10 06:00:30 -04:00
2021-05-18 17:27:29 -04:00
* [curl ](https://curl.se/ ) - HTTP/HTTPS for linux and macOS
* [FreeType ](https://www.freetype.org/ ) - Font handling for all platforms
* [GCC ](https://gcc.gnu.org/ ) - Compiles client for linux
* [MinGW-w64 ](http://mingw-w64.org/doku.php ) - Compiles client for windows
* [Clang ](https://clang.llvm.org/ ) - Compiles client for macOS
2021-08-13 08:41:19 -04:00
* [Emscripten ](https://emscripten.org/ ) - Compiles client for web
2023-07-29 06:02:29 -04:00
* [RenderDoc ](https://renderdoc.org/ ) - Graphics debugging
2023-09-16 08:50:22 -04:00
* [BearSSL ](https://www.bearssl.org/ ) - SSL/TLS support on consoles
2024-04-16 07:24:31 -04:00
* [libnx ](https://github.com/switchbrew/libnx ) - Backend for Switch
* [Ryujinx ](https://github.com/Ryujinx/Ryujinx ) - Emulator used to test Switch port
* [wut ](https://github.com/devkitPro/wut/ ) - Backend for Wii U
* [Cemu ](https://github.com/cemu-project/Cemu ) - Emulator used to test Wii U port
2023-07-29 06:02:29 -04:00
* [libctru ](https://github.com/devkitPro/libctru ) - Backend for 3DS
* [citro3D ](https://github.com/devkitPro/citro3d ) - Rendering backend for 3DS
2023-08-11 19:38:47 -04:00
* [Citra ](https://github.com/citra-emu/citra ) - Emulator used to test 3DS port
* [libogc ](https://github.com/devkitPro/libogc ) - Backend for Wii and GameCube
2023-08-04 06:11:14 -04:00
* [libfat ](https://github.com/devkitPro/libfat ) - Filesystem backend for Wii/GC
* [Dolphin ](https://github.com/dolphin-emu/dolphin ) - Emulator used to test Wii/GC port
2023-11-16 16:52:58 -05:00
* [libdragon ](https://github.com/DragonMinded/libdragon ) - Backend for Nintendo 64
* [ares ](https://github.com/ares-emulator/ares ) - Emulator used to test Nintendo 64 port
2024-04-27 00:41:55 -04:00
* [BlocksDS ](https://github.com/blocksds/sdk ) - Backend for Nintendo DS
2024-04-16 07:24:31 -04:00
* [melonDS ](https://github.com/melonDS-emu/melonDS ) - Emulator used to test Nintendo DS port
* [vitasdk ](https://github.com/vitasdk ) - Backend for PS Vita
* [Vita3K ](https://github.com/Vita3K/Vita3K ) - Emulator used to test Vita port
* [pspsdk ](https://github.com/pspdev/pspsdk ) - Backend for PSP
* [PPSSPP ](https://github.com/hrydgard/ppsspp ) - Emulator used to test PSP port
* [PSL1GHT ](https://github.com/ps3dev/PSL1GHT ) - Backend for PS3
* [RPCS3 ](https://github.com/RPCS3/rpcs3 ) - Emulator used to test PS3 port
2023-12-09 21:10:45 -05:00
* [ps2sdk ](https://github.com/ps2dev/ps2sdk ) - Backend for PS2
2023-12-21 04:47:32 -05:00
* [PCSX2 ](https://github.com/PCSX2/pcsx2 ) - Emulator used to test PS2 port
2024-04-16 07:24:31 -04:00
* [PSn00bSDK ](https://github.com/Lameguy64/PSn00bSDK/ ) - Backend for PS1
* [duckstation ](https://github.com/stenzek/duckstation ) - Emulator used to test PS1 port
* [libxenon ](https://github.com/Free60Project/libxenon ) - Backend for Xbox 360
* [nxdk ](https://github.com/XboxDev/nxdk ) - Backend for Xbox
* [xemu ](https://github.com/xemu-project/xemu ) - Emulator used to test Xbox port
* [cxbx-reloaded ](https://github.com/Cxbx-Reloaded/Cxbx-Reloaded ) - Emulator used to test Xbox port
* [KallistiOS ](https://github.com/KallistiOS/KallistiOS ) - Backend for Dreamcast
* [GLdc ](https://github.com/Kazade/GLdc ) - Basis of rendering backend for Dreamcast
* [flycast ](https://github.com/flyinghead/flycast ) - Emulator used to test Dreamcast port
2024-04-27 00:41:55 -04:00
* [libyaul ](https://github.com/yaul-org/libyaul ) - Backend for Saturn
* [mednafen ](https://mednafen.github.io/ ) - Emulator used to test Saturn port
2023-08-11 19:38:47 -04:00
2024-04-16 07:24:31 -04:00
< / details >
2021-08-13 08:41:19 -04:00
## Sound Credits
ClassiCube uses sounds from [Freesound.org ](https://freesound.org )< br >
2021-10-14 01:08:45 -04:00
Full credits are listed in [doc/sound-credits.md ](doc/sound-credits.md )