Added GUIDE to Readme.txt
This commit is contained in:
+40
-54
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user