summaryrefslogtreecommitdiffstats
path: root/README.md
blob: b6ffee6600fe9375fccd9eeed2e36201a9e67162 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# AltCraft
AltCraft is implementation of [Minecraft: Java Edition](https://minecraft.net) in C++.

This is aimed at being fast, being free and being easy expandable.
# Features and TODOs
### General
- [x] Compiles!
- [x] Some general optimizations
- [x] Some graphics and gameplay settings (mouse sensitivity, rendering distance, username, etc)
- [x] C++17
- [x] Minecraft 1.12.1
- [ ] Decouple bundled dependencies
### Original Minecraft resources support
- [x] Block models
- [ ] Block states
- [ ] Generating texture atlas at runtime
### Network
- [x] Connecting to server and receiving/transmitting of packets
- [x] Server with compression (receiving packets only)
- [ ] Mojang account auth
- [ ] Server with encryption
### Physics
- [x] Simple AABB-collision detection
- [x] Simple physics
- [ ] Advanced physics
- [ ] Optimization: Octree
### Gameplay
- [x] Player moving
- [x] Chat and inventory partially implemented
- [x] GUI based on [Dear ImGui](https://github.com/ocornut/imgui) library
- [ ] Digging
- [ ] Block placing
- [ ] Simple lighting
- [ ] Chat
- [ ] Inventory
### Graphics
- [x] OpenGL 3.3
- [x] Rendering world
- [x] Rendering entities position
- [x] Realtime blocks updating
- [ ] Rendering models of entities
- [ ] Advanced lighting and shadowing
- [ ] Optimization: Occlusion culling algorithm
- [ ] Optimization: Greedy mesh simplification

# Build
1. Install C++17 compiler, CMake 3.8, SDL2, libZLib.
>Linux: GCC7 and system package manager.

>Windows: Visual Studio 2017 and vcpkg.
3. Generate project-files for your compiler by CMake.
```
    mkdir build && cd build
    cmake ..
```
2. Copy *.minecraft/version/1.12.1/1.12.1.jar/assets/* to *AltCraft-root/cwd/*
>You can extract .jar file as .zip archive.

>*/cwd/assets/minecraft/models/block/block.json* must be a valid path.
4. Compile generated files. Content of */cwd/* will be automatically copied to directory with compiled binary.
>Linux: `make` in directory with generated files.

>Windows: Use VS2017 to open .sln file and build project.
5. Enjoy!