User Tools

Site Tools


general_information

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
general_information [2017/07/24 00:05]
gobrosse
general_information [2018/01/25 11:43] (current)
gobrosse
Line 1: Line 1:
 ====== Documentation::​General Information ====== ====== Documentation::​General Information ======
  
-**DISCLAIMER: This game only exists because of Minecraft.** There is no getting away from this and let's make it clear from the word go, without the historic strides Minecraft made to the video game medium, this project would have never existed. Minecraft, for all it's terrible technical issues and lame commercial derivatives ​overexploitations, is one hell of a great game and ChunkStories is a project that I started as a former modder, frustrated with the state and lack of care the game developers had for a proper modding API.+**The obvious statement: This game is openly ​Minecraft-inspired.** There is no getting away from this and let's make it clear from the word go, without the historic strides Minecraft made, this project would have never existed. Minecraft, for all it's terrible technical issues and lame commercial derivatives ​lately, is one hell of a great game and ChunkStories is a project that I started as a former ​passionate ​modder, frustrated with the state and lack of care the game developers had for a proper modding API.
  
 ===== Technology used ===== ===== Technology used =====
Line 7: Line 7:
 ChunkStories is built in Java, using the glorious [[http://​lwjgl.org|LWJGL3]] library that provides us access to OpenGL and OpenAL. The JOrbis Library is used for OGG Vorbis deconding, Jansi is used for pretty console commandline on the server and lz4 is the library used to compress our data. Vecmath and slick-utils were refactored out in early 2016 of the codebase and ChunkStories now has it's own minimalistic sound engine and switched to JOML for better performance in summer 2017. ChunkStories is built in Java, using the glorious [[http://​lwjgl.org|LWJGL3]] library that provides us access to OpenGL and OpenAL. The JOrbis Library is used for OGG Vorbis deconding, Jansi is used for pretty console commandline on the server and lz4 is the library used to compress our data. Vecmath and slick-utils were refactored out in early 2016 of the codebase and ChunkStories now has it's own minimalistic sound engine and switched to JOML for better performance in summer 2017.
  
-The game boasts client/​server model and is designed with modding, iteration and experimentation as major goals. The default shaders and rendering pipeline implements a deferred renderer, with support for SSAO, SSR, HDR, bloom, environment mapping and shadow mapping. ​It makes use of Java's qualities when it comes to runtime code loading and decent portability, and will run on Windows XP to 10 (somewhat tested at the edgesdon't come crying if your EOL Vista x32 notebook has issues ​with it's ATI drivers from 2009), Linux (Debian and derivatives are fine and other distros should be good too) and MacOS X, depending on the mood of the Apple shader compiler.+The game boasts client/​server model and is designed with modding, iteration and experimentation as major goals. The default shaders and rendering pipeline implements a deferred renderer, with support for SSAO, SSR, HDR, bloom, environment mapping and shadow mapping. ​The API *is* open-source, and is freely available ​on my Github pagealong with good chunk of example content.
  
 The game is built using Eclipse, Git, Paint.NET, Notepad++, PuTTY, WinSCP, Firefox, Blender and Audacity. I use VisualVM, RenderDoc, apitrace and AMD PerfStudio to do debugging, as well as WireShark occasionally. This wiki runs using DokuWiki. The game is built using Eclipse, Git, Paint.NET, Notepad++, PuTTY, WinSCP, Firefox, Blender and Audacity. I use VisualVM, RenderDoc, apitrace and AMD PerfStudio to do debugging, as well as WireShark occasionally. This wiki runs using DokuWiki.
  
-===== Conventions ===== 
- 
-It's probably important to specify a few conventions that Chunk Stories uses. 
- 
-==== Master & Client ==== 
- 
-In the code and engine internals, you can see such nomenclature :​WorldClient,​ WorldMaster,​ isMaster() etc ... 
- 
-//Client// means 'Is an end-user : it can render the world, control entities etc' 
-//Master// means 'Runs the world logic, manages end-users and has the authority on it' 
- 
-I did not use '​client'​ and '​server'​ for good reasons : there is no reason a client can't also be a master : this situation happens when you have a local singleplayer or multiplayer world running on the bare client. 
- 
-==== Sides and axises ==== 
- 
-These sides are used face-related operation such as block selection or culling. 
- 
-  * 0 LEFT   (X-) 
-  * 1 FRONT  (Z+) 
-  * 2 RIGHT  (X+) 
-  * 3 BACK   (Z-) 
-  * 4 TOP    (Y+) 
-  * 5 BOTTOM (Y-) 
- 
-As you can see, the Y axis is height, X is east-west and Z north-south. 
- 
-==== Voxel cell data setup ==== 
- 
-The engine stores all voxels in 32-bit signed ( Java won't allow unsigned :c ) ints, packed in 32x32x32 cubical chunks, packed themselves in 8x8x8 regions.\\ 
-\\ 
-These ints are composed as : 0xMMBSIIII\\ 
-\\ 
-0->​15 ​ 16-bit I block**I**D,​ allowing for 65536 different blocks types\\ 
-16->19 4-bit  S Sun light from the sun\\ 
-20->23 4-bit  B Block light, "​yellowish"​ light from torches etc\\ 
-24->31 8-bit  M 8-bit metadata, extended from 4 bits in previous file formats revisions 
general_information.1500847515.txt.gz ยท Last modified: 2017/07/24 00:05 by gobrosse