Added GUIDE to Readme.txt

This commit is contained in:
Leonardo
2021-07-14 11:14:44 +02:00
parent 29b3e9fadc
commit e40ee20460
3 changed files with 40 additions and 108 deletions
+40 -54
View File
@@ -1,69 +1,55 @@
This mod adds a Level Of Detail (LOD) system to Minecraft.
This implementation renders simplified chunks outside the normal render distance
allowing for an increased view distance without harming performance.
Or in other words: this mod let's you see farther without turning your game into a slide show.
If you want to see a quick demo, check out the video I made here:
https://youtu.be/CCT-3s02tYA
Forge version: 1.16.5-36.1.0
Notes:
This version has been confirmed to work in Eclipse.
This branch is used only to test the QuadTree data structure. This branch cannot be used to compile the mode and the classes
that are not listed below in the next section are not updated to the last version of the main branch.
========================
source code installation
QUADTREE VERSION - HOW IT WORK AND HOW TO USE
========================
This are the file that you should use if you want to import the quadTree to your current version.
See the Forge Documentation online for more detailed instructions:
http://mcforge.readthedocs.io/en/latest/gettingstarted/
DistanceGenerationMode (added NONE)
LodQuadTreeDimensionFileHandler
LodDataPoint (added hash and equal function)
LodQuadTreeNode
LodQuadTree
LodQuadTreeDimension
LodQuadTreeWorld (this is identical to LodWorld but uses LodQuadTreeDimension)
Step 1: Create a system variable called "JAVA_MC_HOME" with the location of the JDK 1.8.0_251 (This is needed for gradle to work correctly)
and those two optional classes
BiomeColorsUtils is a class that i've created that contain various static methods to create colors from a biom
QuadTreeImage uses the ChunkBase map generation to test the QuadTree. You should refresh dependencies to import
the KaptainWutax code (check the build.gradle if you want to use them. I still can only use the code in intellij
but can't import it in the final mod jar, because i'm still new to this stuff, so it wouldn't work in game at the moment)
Step 2: replace JAVA_HOME with JAVA_MC_HOME in gradle.bat
Step 3: open a command line in the project folder
Step 4: run the command: "./gradlew geneclipseruns"
Step 5: run the command: "./gradlew eclipse"
Step 6: Make sure the eclipse has the JDK 1.8.0_251 installed. (This is needed so that eclipse can run minecraft)
Step 7: Import the project into eclipse
You should then update the builders, the renderer, the templates... to work with this.
--HOW IT WORK
I've tried to make this classes as similar as possible to yours. This way you could even do the same stuff that you are doing now
like using all the Lod with the same quality. LodDetail is not used anywhere and is replaced by a level value in
LodQuadTreeNode.
=========
compiling
=========
A LodQuadTree has a quad tree structure. So it has 4 children of the same type and a LodQuadTreeNode that contain all
the information of the node such as position, level (the level is the depth of the quad tree) and the LodDataPoint.
If in the future you want to add multiple LodDataPoint per position (maybe you want to show floating island) you could still
do it by transforming the lodDataPoint variable in a LodDataPoint array.
Step 1: open a command line in the project folder
The two most important factor of a Node is the level and the level position. At level 9 you find the region (of width 2^9=512)
at level 4 you find the chunk (of width 2^4=16) and at level 0 you find the blocks (of width 2^0=1). The pos is like the
region pos and the chunk pos but for every level.
The complexity of a node indicate how the node was built, so i've used the DistanceGenerationMode enum. The complexity is
ordered by the order in the enum (NONE -> BIOME_ONLY -> BIOME_ONLY_SIMULATE_HEIGHT -> SURFACE -> FEATURES -> SERVER). The idea
is that you cannot override a node with a node that is less complex. This way you could use different type of generation based
on the distance.
Step 2: run the command: "./gradlew build"
LodQuadTreeDimensionFileHandler is used to save all the region (quadTree). I've just converted your method of saving
to work with this.
Step 3: the compiled jar file will be in the folder "build\libs"
--HOW TO USE
You can create the LodQuadTreeWorld and the LodQuadTreeDimension in the same way as yours.
You can build a LodQuadTreeNode by specifying the level, the position in the level, the LodDataPoint, the complexity
(the DistanceGenerationMode setting selected to generate the information of the node or NONE if the node is fake and empty).
==============
Other commands
==============
"./gradlew --refresh-dependencies" to refresh local dependencies.
"./gradlew clean" to reset everything (this does not affect your code) and then start the process again.
============
Note to self
============
The Minecraft source code is NOT added to your workspace in a editable way. Minecraft is treated like a normal Library. Sources are there for documentation and research purposes only.
Source code uses mcp mappings not Mojangs.
The source code can be 'created' with the ./eclipse command and can be found in the following path:
minecraft-lod-mod\build\fg_cache\mcp\ VERSION \joined\ RANDOM_STRING \patch\output.jar
How to select the node that i want to generate?
At the moment you can select this in two ways: the first is to use the getLodNodeToGenerate
@@ -1,26 +0,0 @@
package com.seibel.lod.enums;
/**
* NE, SE, SW, NW
*
* @author James Seibel
* @version 1-20-2020
*/
public enum LodCorner
{
/** -Z, +X */
NE(0),
/** +Z, +X */
SE(1),
/** +Z, -X */
SW(2),
/** -Z, -X */
NW(3);
public final int value;
private LodCorner(int newValue)
{
value = newValue;
}
}
@@ -1,29 +1 @@
This are the file that you should use
DistanceGenerationMode (added NONE)
LodQuadTreeDimensionFileHandler
LodDataPoint (added hash and equal function)
LodQuadTreeNode
LodQuadTree
LodQuadTreeDimension
LodQuadTreeWorld (this is identical to LodWorld but uses LodQuadTreeDimension)
HOW IT WORK
I've tried to make this classes as similar at yours. This way you could even do the same stuff that you are doing now
like using all the Lod with the same quality. LodDetail is not used anywhere and is replaced by a level value in
LodQuadTreeNode.
A LodQuadTree has a quad tree structure. So it has 4 children of the same type and a LodQuadTreeNode that contain all
the information of the node such as position, level (the level is the depth of the quad tree) and the LodDataPoint.
If in the future you want to add multiple LodDataPoint per position (maybe you want to show floating island) you could still
do it by transforming the lodDataPoint variable in a LodDataPoint array.
The two most important factor of a Node is the level and the level position. At level 9 you find the region (of width 2^9=512)
at level 4 you find the chunk (of width 2^4=16) and at level 0 you find the blocks (of width 2^0=1). The pos is like the
region pos and the chunk pos but for every level.
The complexity of a node indicate how the node was built, so i've used the DistanceGenerationMode enum. The complexity is
ordered by the order in the enum (NONE -> BIOME_ONLY -> BIOME_ONLY_SIMULATE_HEIGHT -> SURFACE -> FEATURES -> SERVER). The idea
is that you cannot override a node with a node that is less complex. This way you could use different type of generation based
on the distance.
HOW TO USE