Some improvements to readme wording

This commit is contained in:
UnknownShadow200 2024-09-17 19:00:51 +10:00 committed by GitHub
parent 07c3018b42
commit eec503e517
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

118
readme.md
View File

@ -1,5 +1,7 @@
ClassiCube is a custom Minecraft Classic compatible client written in C from scratch.<br> ClassiCube is a custom Minecraft Classic compatible client written in C from scratch.<br>
**It is not affiliated with (or supported by) Mojang AB, Minecraft, or Microsoft in any way.** > [!IMPORTANT]
**ClassiCube is not affiliated with (or supported by) Mojang AB, Minecraft, or Microsoft in any way.** <br><br>
**ClassiCube is not trying to replicate modern Minecraft. It will never support survival, Minecraft accounts, or modern Minecraft servers.**
# What ClassiCube is # What ClassiCube is
@ -17,9 +19,7 @@ ClassiCube aims to replicate the 2009 Minecraft Classic client while offering **
</details> </details>
ClassiCube is not trying to replicate modern Minecraft versions. It will never support survival, logging in with Minecraft accounts or connecting to Minecraft servers. You can **download ClassiCube** [here](https://www.classicube.net/download/) and the very latest builds [here](https://www.classicube.net/nightlies/).
You can **download ClassiCube** [from here](https://www.classicube.net/download/) and the very latest builds [from here](https://www.classicube.net/nightlies/).
![classic](https://github.com/ClassiCube/ClassiCube/assets/6509348/eedee53f-f53e-456f-b51c-92c62079eee0) ![classic](https://github.com/ClassiCube/ClassiCube/assets/6509348/eedee53f-f53e-456f-b51c-92c62079eee0)
@ -28,7 +28,7 @@ You can **download ClassiCube** [from here](https://www.classicube.net/download/
# We need your help # We need your help
ClassiCube strives to replicate the original Minecraft Classic experience by **strictly following a [clean room](https://en.wikipedia.org/wiki/Clean_room_design) reverse engineering approach**. 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**.
If you're interested in documenting or verifying the behaviour of the original Minecraft Classic, please get in contact with me. (`unknownshadow200` on Discord) If you're interested in documenting or verifying the behaviour of the original Minecraft Classic, please get in contact with me. (`unknownshadow200` on Discord)
@ -37,26 +37,28 @@ If you're interested in documenting or verifying the behaviour of the original M
Initially, you will need to run ClassiCube.exe to download the required assets from minecraft.net and classicube.net.<br> Initially, you will need to run ClassiCube.exe to download the required assets from minecraft.net and classicube.net.<br>
Just click 'OK' to the dialog menu that appears when you start the launcher. Just click 'OK' to the dialog menu that appears when you start the launcher.
**Singleplayer** > **Note:** When running from within VirtualBox, disable Mouse Integration, otherwise the in-game camera won't work properly.
**Singleplayer mode**
Run ClassiCube.exe, then click Singleplayer at the main menu. Run ClassiCube.exe, then click Singleplayer at the main menu.
**Multiplayer** **Multiplayer mode**
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/). 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/).
**Note:** When running from within VirtualBox, disable Mouse Integration, otherwise the camera will not work properly
#### *Stuck on OpenGL 1.1?* #### *Stuck on OpenGL 1.1?*
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. 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.
Otherwise: Otherwise:
* On Windows, you can still run the OpenGL build of ClassiCube anyways. (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 Windows, you can still run the OpenGL build of ClassiCube anyways. <br>
* On other operating systems, you will have to [compile the game yourself](#Compiling). Don't forget to add `-DCC_BUILD_GL11` to the compilation command line so that the compiled game supports OpenGL 1.1. (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.
# Supported systems # Supported systems
ClassiCube runs on: ClassiCube runs on:
* Windows - 95 and later * Windows - 95 and later
* macOS - 10.5 or later (but can be compiled to work with 10.3/10.4 though) * macOS - 10.5 or later (can be compiled for 10.3/10.4 though)
* Linux - needs `libcurl` and `libopenal` * Linux - needs `libcurl` and `libopenal`
* Android - 2.3 or later * Android - 2.3 or later
* iOS - 8.0 or later * iOS - 8.0 or later
@ -64,8 +66,8 @@ ClassiCube runs on:
And also runs on: And also runs on:
* Raspberry Pi - needs <code>libcurl</code> and <code>libopenal</code> * Raspberry Pi - needs <code>libcurl</code> and <code>libopenal</code>
* FreeBSD - needs <code>libexecinfo</code>, <code>curl</code> and <code>openal-soft</code> packages (if you have a GitHub account, can [download from here](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_freebsd.yml)) * 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 (if you have a GitHub account, can [download from here](https://github.com/ClassiCube/ClassiCube/actions/workflows/build_netbsd.yml)) * 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))
* OpenBSD - needs <code>libexecinfo</code>, <code>curl</code> and <code>openal</code> packages * OpenBSD - needs <code>libexecinfo</code>, <code>curl</code> and <code>openal</code> packages
* Solaris - needs <code>curl</code> and <code>openal</code> packages * Solaris - needs <code>curl</code> and <code>openal</code> packages
* 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)) * 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))
@ -92,34 +94,35 @@ And also runs on:
# Compiling # Compiling
*Note: The various instructions below automatically compile ClassiCube with the recommended defaults for the platform. <br> *Note: The instructions below automatically compile ClassiCube with the recommended defaults for the platform. <br>
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.* 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.*
## Compiling - Windows ## Compiling - Windows
##### Using Visual Studio ##### Using Visual Studio
Open ClassiCube.sln *(File -> Open -> Project/Solution)* and compile it *(Build -> Build Solution)*. 1. Open ClassiCube.sln *(File -> Open -> Project/Solution)*
2. Compile/Build it *(Build -> Build Solution)*.
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) 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)
##### Using Visual Studio (command line) ##### Using Visual Studio (command line)
1. Use 'Developer Tools for Visual Studio' from Start Menu 1. Use 'Developer Tools for Visual Studio' from Start Menu
2. Navigate to the directory with ClassiCube's source code 2. Navigate to the directory with ClassiCube's source code
3. Enter `cl.exe *.c /link user32.lib gdi32.lib winmm.lib dbghelp.lib shell32.lib comdlg32.lib /out:ClassiCube.exe` 3. Run `cl.exe *.c /link user32.lib gdi32.lib winmm.lib dbghelp.lib shell32.lib comdlg32.lib /out:ClassiCube.exe`
##### Using MinGW-w64 ##### Using MinGW-w64
I am assuming you used the installer from https://sourceforge.net/projects/mingw-w64/ Assuming that you used the installer from https://sourceforge.net/projects/mingw-w64/ :
1. Install MinGW-W64 1. Install MinGW-W64
2. Use either *Run Terminal* from Start Menu or run *mingw-w64.bat* in the installation folder 2. Use either *Run Terminal* from Start Menu or run *mingw-w64.bat* in the installation folder
3. Navigate to the directory with ClassiCube's source code 3. Navigate to the directory with ClassiCube's source code
4. Enter `gcc -fno-math-errno *.c -o ClassiCube.exe -mwindows -lwinmm` 4. Run `gcc -fno-math-errno *.c -o ClassiCube.exe -mwindows -lwinmm`
##### Using MinGW ##### Using MinGW
I am assuming you used the installer from https://osdn.net/projects/mingw/ Assuming that you used the installer from https://osdn.net/projects/mingw/ :
1. Install MinGW. You need mingw32-base-bin and msys-base-bin packages. 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. 2. Run *msys.bat* in the *C:\MinGW\msys\1.0* folder.
2. Navigate to the directory with ClassiCube's source code 2. Navigate to the directory with ClassiCube's source code
4. Enter `gcc -fno-math-errno *.c -o ClassiCube.exe -mwindows -lwinmm` 4. Run `gcc -fno-math-errno *.c -o ClassiCube.exe -mwindows -lwinmm`
##### Using TCC (Tiny C Compiler) ##### Using TCC (Tiny C Compiler)
Setting up TCC: Setting up TCC:
@ -130,24 +133,23 @@ Setting up TCC:
Compiling with TCC: Compiling with TCC:
1. Navigate to the directory with ClassiCube's source code 1. Navigate to the directory with ClassiCube's source code
2. In `ExtMath.c`, change `fabsf` to `fabs` and `sqrtf` to `sqrt` 2. In `ExtMath.c`, change `fabsf` to `fabs` and `sqrtf` to `sqrt`
3. Enter `tcc.exe -o ClassiCube.exe *.c -lwinmm -lgdi32 -luser32 -lcomdlg32 -lshell32`<br> 3. Run `tcc.exe -o ClassiCube.exe *.c -lwinmm -lgdi32 -luser32 -lcomdlg32 -lshell32`<br>
(Note: You may need to specify the full path to `tcc.exe` instead of just `tcc.exe`) (Note: You may need to specify the full path to `tcc.exe` instead of just `tcc.exe`)
## Compiling - Linux ## Compiling - Linux
##### Using gcc/clang ##### Using gcc/clang
1. Install X11, XInput2, and OpenGL development libraries if necessary. <br>
Install appropriate libs as required. For ubuntu these are: libx11-dev, libxi-dev and libgl1-mesa-dev For Ubuntu, these are the `libx11-dev`, `libxi-dev` and `libgl1-mesa-dev` packages
2. Run ```cc -fno-math-errno src/*.c -o ClassiCube -rdynamic -lpthread -lX11 -lXi -lGL -ldl```
```gcc -fno-math-errno src/*.c -o ClassiCube -rdynamic -lpthread -lX11 -lXi -lGL -ldl```
##### Cross compiling for Windows (32 bit): ##### Cross compiling for Windows (32 bit):
1. Install MinGW-w64 if necessary. (Ubuntu: `gcc-mingw-w64` package)
```i686-w64-mingw32-gcc -fno-math-errno src/*.c -o ClassiCube.exe -mwindows -lwinmm``` 2. Run ```i686-w64-mingw32-gcc -fno-math-errno src/*.c -o ClassiCube.exe -mwindows -lwinmm```
##### Cross compiling for Windows (64 bit): ##### Cross compiling for Windows (64 bit):
1. Install MinGW-w64 if necessary. (Ubuntu: `gcc-mingw-w64` package)
```x86_64-w64-mingw32-gcc -fno-math-errno src/*.c -o ClassiCube.exe -mwindows -lwinmm``` 2. Run ```x86_64-w64-mingw32-gcc -fno-math-errno src/*.c -o ClassiCube.exe -mwindows -lwinmm```
##### Raspberry Pi ##### Raspberry Pi
Although the regular linux compiliation flags will work fine, to take full advantage of the hardware: Although the regular linux compiliation flags will work fine, to take full advantage of the hardware:
@ -155,14 +157,13 @@ Although the regular linux compiliation flags will work fine, to take full advan
```gcc -fno-math-errno src/*.c -o ClassiCube -DCC_BUILD_RPI -rdynamic -lpthread -lX11 -lXi -lEGL -lGLESv2 -ldl``` ```gcc -fno-math-errno src/*.c -o ClassiCube -DCC_BUILD_RPI -rdynamic -lpthread -lX11 -lXi -lEGL -lGLESv2 -ldl```
## Compiling - macOS ## Compiling - macOS
1. Install a C compiler if necessary. The easiest way of obtaining one is by installing **Xcode**.
```cc -fno-math-errno src/*.c src/*.m -o ClassiCube -framework Cocoa -framework OpenGL -framework IOKit -lobjc``` 2. Run ```cc -fno-math-errno src/*.c src/*.m -o ClassiCube -framework Cocoa -framework OpenGL -framework IOKit -lobjc```
Note: You may need to install Xcode before you can compile ClassiCube
##### Using Xcode GUI ##### Using Xcode GUI
Open the `misc/macOS/CCMAC.xcodeproj` project in Xcode, and then compile it 1. Open the `misc/macOS/CCMAC.xcodeproj` project in Xcode
2. Compile the project
## Compiling - for Android ## Compiling - for Android
@ -184,7 +185,8 @@ NOTE: If you are distributing a modified version, **please change the bundle ID
##### Using Xcode GUI ##### Using Xcode GUI
Open the `ios/CCIOS.xcodeproj` project in Xcode, and then compile it 1. Open the `ios/CCIOS.xcodeproj` project in Xcode
2. Compile the project
##### Using command line (Xcode) ##### Using command line (Xcode)
@ -192,7 +194,8 @@ Open the `ios/CCIOS.xcodeproj` project in Xcode, and then compile it
## Compiling - webclient ## Compiling - webclient
```emcc src/*.c -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=1Mb --js-library interop_web.js``` 1. Install emscripten if necessary.
2. Run ```emcc src/*.c -s ALLOW_MEMORY_GROWTH=1 -s TOTAL_STACK=1Mb --js-library interop_web.js```
The generated javascript file has some issues. [See here for how to fix](doc/compile-fixes.md#webclient-patches) The generated javascript file has some issues. [See here for how to fix](doc/compile-fixes.md#webclient-patches)
@ -201,7 +204,7 @@ For more details on how to integrate into a website, see [here](doc/hosting-webc
<details> <details>
<summary><h2>Compiling - consoles</h2></summary> <summary><h2>Compiling - consoles</h2></summary>
All console ports needs assistance from someone experienced with homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord) All console ports need assistance from someone experienced with homebrew development - if you're interested, please get in contact with me. (`unknownshadow200` on Discord)
<details> <details>
<summary><h3>Nintendo consoles (click to expand)</h3></summary> <summary><h3>Nintendo consoles (click to expand)</h3></summary>
@ -312,21 +315,18 @@ Run `make saturn`. You'll need [libyaul](https://github.com/yaul-org/libyaul)
#### FreeBSD #### FreeBSD
Install libxi, libexecinfo, curl and openal-soft package if needed 1. Install `libxi`, `libexecinfo`, `curl` and `openal-soft` packages if needed
2. Run ```cc src/*.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo```
```cc src/*.c -o ClassiCube -I /usr/local/include -L /usr/local/lib -lm -lpthread -lX11 -lXi -lGL -lexecinfo```
#### OpenBSD #### OpenBSD
Install libexecinfo, curl and openal package if needed 1. Install `libexecinfo`, `curl` and `openal` packages if needed
2. Run ```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```
```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```
#### NetBSD #### NetBSD
Install libexecinfo, curl and openal-soft package if needed 1. Install `libexecinfo`, `curl` and `openal-soft` packages if needed
2. Run ```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```
```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```
#### DragonflyBSD #### DragonflyBSD
@ -338,29 +338,29 @@ Install libexecinfo, curl and openal-soft package if needed
#### Haiku #### Haiku
Install openal_devel package if needed 1. Install openal_devel packages if needed
2. Run ```cc -fno-math-errno src/*.c interop_BeOS.cpp -o ClassiCube -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker```
```cc -fno-math-errno src/*.c interop_BeOS.cpp -o ClassiCube -lGL -lnetwork -lstdc++ -lbe -lgame -ltracker```
#### BeOS #### BeOS
```cc -fno-math-errno src/*.c interop_BeOS.cpp -o ClassiCube -lGL -lbe -lgame -ltracker``` 1. Install a C compiler
2. Run ```cc -fno-math-errno src/*.c interop_BeOS.cpp -o ClassiCube -lGL -lbe -lgame -ltracker```
#### IRIX #### IRIX
```gcc -fno-math-errno -lGL -lX11 -lXi -lpthread -ldl``` ```gcc -fno-math-errno src/*.c -o ClassiCube -lGL -lX11 -lXi -lpthread -ldl```
#### SerenityOS #### SerenityOS
Install SDL2 port if needed 1. Install SDL2 port if needed
2. Run ```cc src/*.c -o ClassiCube -lgl -lSDL2```
```cc src/*.c -o ClassiCube -lgl -lSDL2```
#### Classic Mac OS #### Classic Mac OS
Install Retro68 to compile (supports both M68k and PowerPC compiling) 1. Install Retro68
2. Run either
```make macclassic_68k``` or ```make macclassic_ppc``` * ```make macclassic_68k``` (For a M68k build)
* ```make macclassic_ppc``` (For a PPC build)
The PowerPC build will usually perform much better The PowerPC build will usually perform much better
@ -384,7 +384,7 @@ Further information (e.g. style) for ClassiCube's source code can be found in th
* Press escape (after joining a world) or pause to switch to the pause menu. * 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. * 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. * 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. * Press F to cycle view distance. Lower view distances can improve performance.
* If the server has disabled hacks, key combinations such as fly and speed will not do anything. * 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 the list of built in commands, type `/client`.