Coder Social home page Coder Social logo

curioustorvald / terrarum Goto Github PK

View Code? Open in Web Editor NEW
13.0 4.0 0.0 416.81 MB

Modular game engine for a side-scrolling tilemap platformer, and a game that runs on top of it

License: Other

GLSL 0.91% TeX 0.73% Batchfile 0.02% Kotlin 76.03% Lua 0.08% Shell 0.19% Java 5.99% HTML 1.48% CSS 0.43% JavaScript 0.44% Python 0.16% C 13.52% BASIC 0.01% Makefile 0.01%
game-development game-engine libgdx side-scroller tilemap

terrarum's Introduction

Aperçu

This project is to create a modular game engine that accommodates a 2D side-scrolling tilemap platformer, and a game that runs on top of it.

The project is divided into two parts: Terrarum the Game Engine and Terrarum the actual game.

Terrarum the Game Engine

This game engine aims to provide following features:

  • Tiled lighting simulation with transmittance sim in full RGB and UV for fluorescence
  • Corner Occlusion
  • 2D Skeletal Sprite
  • Built-in Mod support
  • Simple AABB Physics
  • Fluid simulation based on Cellular Automata
  • Built-in multilingual font — please refer to its own Repository

Terrarum the Actual Game

Terrarum is a side-view tilemap platformer-adventure-sandbox game.

Player Setup

System Requirements

Requires 64 bit processor and operation system.

Minimum Recommended
OS Windows 7/macOS Sierra/Ubuntu 16.04 Windows 10/macOS Big Sur/Linux with Kernel 5.4
CPU AMD Phenom X4 9600/Intel Core 2 Duo E8400 AMD Ryzen 5 1500X/Intel Core i7-4770K/Apple M1
Memory 4 GB RAM 8 GB RAM
OpenGL 3.3 4.0
Graphics GeForce 9600 GT Anything that supports OpenGL 4.0
Storage 2 GB available 2 GB available but faster
  • Playing the game on the Minimum Requirement is ill advised: framerate will be sub-20 and the world generation will take more than 10 minutes

Development Environment

  • Requirements:
    • JDK 17 or higher
    • IntelliJ IDEA Community Edition

Kotlin runtimes must be downloaded using the IntelliJ IDEA. All other libraries are included in the repository.

The project includes modified version of the GraalVM-JS, in which the only difference is the regex-22.3.1-edit.jar is a modification of regex-22.3.1.jar where the only difference is its MANIFEST.MD

Copyright

Please refer to COPYING.md but it's mostly GPL 3.

terrarum's People

Contributors

curioustorvald avatar donggeunlee96 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

terrarum's Issues

Game slows down on low FPS

The idea of async update and render was to resolve the issue, but now it seems it simply doesn't matter, and the phys engine uses fixed constant for time calculation (which is silly, I know). May it's time to work on that...

One way to tell is, on low FPS, legs move quickly (sprite anim) but the actor doesn't actually move that fast.

Try this for light calcuation?

* * *
* @ *
* * *

main:
	for all blocks in visible_world call calc_main.

subroutine calc_main(@):
	check all nearby: -- might improve performance over air tiles?
		if (their wall) == non-solid && (their air) == non-solid then skip calc_main.
	for all * call spread(@).

subroutine spread(L):
	recursively do:
		a b c
		d @ #
		f g h
		whereas:
			# is a previous cell of the recursion. (can be any of a..h)
			-- basically we skip over #
		break when {a>=K && b>=K && c>=K && d>=K && f>=K && g>=K && h>=K}.
			a>=b (whereas a and b are cvec4) is true iff a.r>=b.r && a.g>=b.g && a.b>=b.b && a.a>=b.a.
		write to {a,b,c,d,f,g,h} with value K whereas:
			let K be (source_light - attenuation).
			attenuation is a value set onto the block.

NOTICE: make sure Git-LFS works on your computer

Compare the file size of the binary files (.tga usually), don't push if the file size is significantly larger, which means it's somehow NOT LFS-tracked.

Stupid me didn't, and changes were painstakingly cherry-picked and force-pushed.

Grey box if player pos (0,0)

Grey box likely related to lightmap render (Can’t tell it’s from RGB- or A-pass, could be both). It moves twice the speed of camera moving.

Tech Trees

Introduce Tech Trees to suggest players what they can do and what they are supposed to do to survive. E. g. Minecraft does this with its new advancememts.

Chunked World Savegame Format for Fast Autosaving

  • A chunk is 90x90 tiles in size (90 turns out to be balanced being small in size yet efficient in compression)
  • A world gotta be able to hold at least 1048576 chunks
  • A world's layer count is less than 16 layers
    → this neatly packs into a 24-bit number, like this: 0xLC_CCCC
    And then we can put World Index onto this, like: 0xWW_WWLC_CCCC

Since 0..0xFFFFFFFF is occupied, we should use different address space, e.g. 0x0000_WWWW_LLCC_CCCC, and just occupy larger address space because why not?
(note: world index starts from 1)

0x0000_0000_0000_WWWW holds World Meta information.

Make quickslot work again

Don’t care if it’s called Quickslot, Hotbar, whatevs; make it work again.

Registering must be done in the inventory. Selecting the slot causes player to “equip on grip” the item in the slot. If equip slot is not a grip (armours, rings, …) then don’t equip the item.
Quickslot must render the icon of the item been registered.

Some more events for event-driven programming

  • World Click event (primary click, secondary click)

    • managed by ingame?
    • Won't be fired if the local screen area is obstructed by UI (to prevent a case where you click on the UI and you also fires a weapon)
  • Collision event

    • managed by actor-with-phys

Opening inventory hangs the GUI on Linux

OS: Linux Mint 19 (Cinnamon), Nvidia driver 430, 435 tested
HW: i7-6700K, NV 1660 Ti manufactured by Gigabyte, Samsung PM981

Opening inventory makes the whole GNOME to hang indefinitely.

In driver version 430, bottom third of the inventory will not be rendered, in driver version 435, inventory doesn't even have a time to be rendered.

NOTE: I couldn't find a way installing older drivers (e.g. 418), I can issue sudo apt install nvidia-driver-418 but version 430 is what actually installed.

Platform allows the player to be "planted" to the ground slightly so that the feet tile is Y+1 than it should be

Screenshot-1692125478351

How to reproduce:

  1. On the above block placement, stand slightly (a pixel or two) left to the platform, then hold down and right at the same time
  2. If all things worked well, your position will be Y+0.9 more than it should be (for the above screenshot, Ypos should be 5152.0 rather than 5152.9037)
  3. You'll know it worked because now you're walking as if you're on a block of ice because the game's reading the friction value of the air tile as the feet tile position is Y+1 than it should be

Wires Won't Render Across the World Seam

How to reproduce:

  1. Somehow pre-install the wires across the seam
  2. Unequip the wire
  3. Move to the right-end of the world (just go left until X-position wraps around)
  4. Update the wire actors by re-equipping the wire
  5. Wire disappears!

Segfault introduced with lightmap precalculation

This is an unusual error log that may or may not be helpful

[TerrarumIngame] Adding actor 9545698 (Test Subject 1)
[TerrarumIngame] ... java.lang.Thread.getStackTrace(Thread.java:1559)
[TerrarumIngame] ... net.torvald.terrarum.TerrarumKt.printStackTrace(Terrarum.kt:574)
[TerrarumIngame] ... net.torvald.terrarum.modulebasegame.TerrarumIngame.addNewActor(TerrarumIngame.kt:1129)
[TerrarumIngame] ... net.torvald.terrarum.modulebasegame.TerrarumIngame.setTheRealGamerFirstTime(TerrarumIngame.kt:217)
[TerrarumIngame] ... net.torvald.terrarum.modulebasegame.TerrarumIngame.postInit(TerrarumIngame.kt:283)
[TerrarumIngame] ... net.torvald.terrarum.modulebasegame.TerrarumIngame.render(TerrarumIngame.kt:481)
[TerrarumIngame] ... net.torvald.terrarum.AppLoader.render(AppLoader.java:531)
[TerrarumIngame] ... com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
[TerrarumIngame] ... com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
[UIInventoryFull] rebuilding list
Exception in thread "LWJGL Application" java.lang.NullPointerException
	at net.torvald.terrarum.modulebasegame.IngameRenderer.processBlur(IngameRenderer.kt)
	at net.torvald.terrarum.modulebasegame.IngameRenderer.prepLightmapRGBA(IngameRenderer.kt:355)
	at net.torvald.terrarum.modulebasegame.IngameRenderer.invoke(IngameRenderer.kt:205)
	at net.torvald.terrarum.modulebasegame.TerrarumIngame.renderGame(TerrarumIngame.kt:609)
	at net.torvald.terrarum.modulebasegame.TerrarumIngame.access$renderGame(TerrarumIngame.kt:48)
	at net.torvald.terrarum.modulebasegame.TerrarumIngame$render$2.invoke(TerrarumIngame.kt:507)
	at net.torvald.terrarum.modulebasegame.TerrarumIngame$render$2.invoke(TerrarumIngame.kt:48)
	at net.torvald.terrarum.AppLoader.measureDebugTime(AppLoader.java:1200)
	at net.torvald.terrarum.modulebasegame.TerrarumIngame.render(TerrarumIngame.kt:507)
	at net.torvald.terrarum.AppLoader.render(AppLoader.java:531)
	at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
	at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Disconnected from the target VM, address: '127.0.0.1:38127', transport: 'socket'
pure virtual method called
terminate called without an active exception

Process finished with exit code 134 (interrupted by signal 6: SIGABRT)

[Ref only] Player can be stuck on specific platform and solid block arrangement

Screenshot-1692168596815

How to reproduce:

  1. On the above block placement, stand in the middle of the two wooden blocks, second topmost platform, then hold left or right
  2. Player will be stuck upon hitting either of the solid blocks

This issue has been tentatively fixed on the commit 32803b6 (incomplete fix for horizontal bouncing on T-shaped platform arrangement) and is posted to provide reference for comments of the source code.

As of current commit (1469), while the new map load, it looks for the nonexisting tile numbers

Here's a full log:

Connected to the target VM, address: '127.0.0.1:60452', transport: 'socket'
os.name = Windows 10 (with identifier WINDOWS)
os.version = 10.0
default directory: C:\Users\minjaesong\AppData\Roaming/Terrarum
java version = 11.0.1
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.lwjgl.LWJGLUtil$3 (file:/C:/Users/minjaesong/Documents/terrarum/lib/gdx-backend-lwjgl.jar) to method java.lang.ClassLoader.findLibrary(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.lwjgl.LWJGLUtil$3
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
LwjglGraphics: created OpenGL 3.2+ core profile (GLES 3.0) context. This is experimental!
[Controllers] added manager for application, 1 managers active
[AppLoader] Calibrating the gamepad...
[AppLoader] Axis 0: 0.0
[AppLoader] Axis 1: 0.0
[AppLoader] Axis 2: 0.0
[AppLoader] Axis 3: 0.0
[AppLoader] Resize called
[AppLoader] java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
[AppLoader] net.torvald.terrarum.AppLoader.resize(AppLoader.java:472)
[AppLoader] com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:205)
[AppLoader] com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
[AppLoader] Resize end
[TerrarumSansBitmap] loading texture ascii_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture hangul_johab.tga
[TerrarumSansBitmap] loading texture latinExtA_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture latinExtB_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture kana.tga
[TerrarumSansBitmap] loading texture cjkpunct.tga
[TerrarumSansBitmap] loading texture wenquanyi.tga.gz
[TerrarumSansBitmap] loading texture cyrilic_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture fullwidth_forms.tga
[TerrarumSansBitmap] loading texture unipunct_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture greek_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture thai_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture hayeren_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture kartuli_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture ipa_ext_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture futhark.tga
[TerrarumSansBitmap] loading texture latinExt_additional_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture puae000-e0ff.tga
[TerrarumSansBitmap] loading texture cyrilic_bulgarian_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture cyrilic_serbian_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture tsalagi_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture insular_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture devanagari_bengali_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture kartuli_allcaps_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture diacritical_marks_variable.tga [VARIABLE]
[TerrarumSansBitmap] loading texture greek_polytonic_xyswap_variable.tga [VARIABLE, XYSWAP]
[TerrarumSansBitmap] loading texture latinExtC_variable.tga [VARIABLE]
[ModMgr] Loading module basegame
[ModMgr] 	Module #0 -- Terrarum | 0.2.0 | Terrarum
	The base game | 2017-07-14
	Entry point: net.torvald.terrarum.modulebasegame.EntryPoint
	External libraries: 
	Dependencies: 
[CSVFetcher] Reading CSV ./assets/mods/basegame/materials/materials.csv
[MaterialCodex] Building materials table
[MaterialCodex] ROCK	15	3000	1	0.42
[MaterialCodex] CUPR	210	8960	2	1.0
[MaterialCodex] EGLS	33	2325	4	0.82
[MaterialCodex] IRON	350	7874	5	1.42
[MaterialCodex] ARGN	170	10490	9	0.91
[MaterialCodex] STAL	531	7874	14	1.73
[MaterialCodex] EAUR	768	8192	21	1.36
[MaterialCodex] TIAL	900	4420	33	2.16
[MaterialCodex] ADMT	2000	2700	71	3.42
[MaterialCodex] OOZE	20	1000	1	-1.0
[MaterialCodex] BONE	130	2000	1	0.23
[CSVFetcher] Reading CSV ./assets/mods/basegame/blocks/blocks.csv
[BlockCodex] Building block properties table
[BlockCodex] 0	BLOCK_AIR
[BlockCodex] 1	BLOCK_MIASMA
[BlockCodex] 16	BLOCK_STONE
[BlockCodex] 17	BLOCK_STONE_QUARRIED
[BlockCodex] 18	BLOCK_STONE_TILE_WHITE
[BlockCodex] 19	BLOCK_STONE_BRICKS
[BlockCodex] 32	BLOCK_DIRT
[BlockCodex] 33	BLOCK_GRASS
[BlockCodex] 34	BLOCK_GRASSWALL
[BlockCodex] 35	BLOCK_FOLIAGE_GREEN
[BlockCodex] 36	BLOCK_FOLIAGE_LIME
[BlockCodex] 37	BLOCK_FOLIAGE_GOLD
[BlockCodex] 38	BLOCK_FOLIAGE_RED
[BlockCodex] 39	BLOCK_FOLIAGE_ICEBLUE
[BlockCodex] 40	BLOCK_FOLIAGE_PURPLE
[BlockCodex] 48	BLOCK_PLANK_NORMAL
[BlockCodex] 49	BLOCK_PLANK_EBONY
[BlockCodex] 50	BLOCK_PLANK_BIRCH
[BlockCodex] 51	BLOCK_PLANK_BLOODROSE
[BlockCodex] 64	BLOCK_TRUNK_NORMAL
[BlockCodex] 65	BLOCK_TRUNK_EBONY
[BlockCodex] 66	BLOCK_TRUNK_BIRCH
[BlockCodex] 67	BLOCK_TRUNK_BLOODROSE
[BlockCodex] 80	BLOCK_SAND
[BlockCodex] 81	BLOCK_SAND_WHITE
[BlockCodex] 82	BLOCK_SAND_RED
[BlockCodex] 83	BLOCK_SAND_DESERT
[BlockCodex] 84	BLOCK_SAND_BLACK
[BlockCodex] 85	BLOCK_SAND_GREEN
[BlockCodex] 96	BLOCK_GRAVEL
[BlockCodex] 97	BLOCK_GRAVEL_GREY
[BlockCodex] 112	BLOCK_ORE_MALACHITE
[BlockCodex] 113	BLOCK_ORE_HEMATITE
[BlockCodex] 114	BLOCK_ORE_NATURAL_GOLD
[BlockCodex] 115	BLOCK_ORE_NATURAL_SILVER
[BlockCodex] 116	BLOCK_ORE_RUTILE
[BlockCodex] 117	BLOCK_ORE_AURICHALCUMITE
[BlockCodex] 128	BLOCK_GEM_RUBY
[BlockCodex] 129	BLOCK_GEM_EMERALD
[BlockCodex] 130	BLOCK_GEM_SAPPHIRE
[BlockCodex] 131	BLOCK_GEM_TOPAZ
[BlockCodex] 132	BLOCK_GEM_DIAMOND
[BlockCodex] 133	BLOCK_GEM_AMETHYST
[BlockCodex] 144	BLOCK_SNOW
[BlockCodex] 145	BLOCK_ICE_FRAGILE
[BlockCodex] 146	BLOCK_ICE_NATURAL
[BlockCodex] 147	BLOCK_ICE_CLEAR_MAGICAL
[BlockCodex] 148	BLOCK_GLASS_CRUDE
[BlockCodex] 149	BLOCK_GLASS_CLEAN
[BlockCodex] 160	BLOCK_PLATFORM_STONE
[BlockCodex] 161	BLOCK_PLATFORM_WOODEN
[BlockCodex] 162	BLOCK_PLATFORM_EBONY
[BlockCodex] 163	BLOCK_PLATFORM_BIRCH
[BlockCodex] 164	BLOCK_PLATFORM_BLOODROSE
[BlockCodex] 176	BLOCK_TORCH
[BlockCodex] 177	BLOCK_TORCH_FROST
[BlockCodex] 192	BLOCK_TORCH
[BlockCodex] 193	BLOCK_TORCH_FROST
[BlockCodex] 208	BLOCK_ILLUMINATOR_WHITE
[BlockCodex] 209	BLOCK_ILLUMINATOR_YELLOW
[BlockCodex] 210	BLOCK_ILLUMINATOR_ORANGE
[BlockCodex] 211	BLOCK_ILLUMINATOR_RED
[BlockCodex] 212	BLOCK_ILLUMINATOR_FUCHSIA
[BlockCodex] 213	BLOCK_ILLUMINATOR_PURPLE
[BlockCodex] 214	BLOCK_ILLUMINATOR_BLUE
[BlockCodex] 215	BLOCK_ILLUMINATOR_CYAN
[BlockCodex] 216	BLOCK_ILLUMINATOR_GREEN
[BlockCodex] 217	BLOCK_ILLUMINATOR_GREEN_DARK
[BlockCodex] 218	BLOCK_ILLUMINATOR_BROWN
[BlockCodex] 219	BLOCK_ILLUMINATOR_TAN
[BlockCodex] 220	BLOCK_ILLUMINATOR_GREY_LIGHT
[BlockCodex] 221	BLOCK_ILLUMINATOR_GREY_MED
[BlockCodex] 222	BLOCK_ILLUMINATOR_GREY_DARK
[BlockCodex] 223	BLOCK_ILLUMINATOR_BLACK
[BlockCodex] 224	BLOCK_ILLUMINATOR_WHITE
[BlockCodex] 225	BLOCK_ILLUMINATOR_YELLOW
[BlockCodex] 226	BLOCK_ILLUMINATOR_ORANGE
[BlockCodex] 227	BLOCK_ILLUMINATOR_RED
[BlockCodex] 228	BLOCK_ILLUMINATOR_FUCHSIA
[BlockCodex] 229	BLOCK_ILLUMINATOR_PURPLE
[BlockCodex] 230	BLOCK_ILLUMINATOR_BLUE
[BlockCodex] 231	BLOCK_ILLUMINATOR_CYAN
[BlockCodex] 232	BLOCK_ILLUMINATOR_GREEN
[BlockCodex] 233	BLOCK_ILLUMINATOR_GREEN_DARK
[BlockCodex] 234	BLOCK_ILLUMINATOR_BROWN
[BlockCodex] 235	BLOCK_ILLUMINATOR_TAN
[BlockCodex] 236	BLOCK_ILLUMINATOR_GREY_LIGHT
[BlockCodex] 237	BLOCK_ILLUMINATOR_GREY_MED
[BlockCodex] 238	BLOCK_ILLUMINATOR_GREY_DARK
[BlockCodex] 239	BLOCK_ILLUMINATOR_BLACK
[BlockCodex] 240	BLOCK_SANDSTONE
[BlockCodex] 241	BLOCK_SANDSTONE_WHITE
[BlockCodex] 242	BLOCK_SANDSTONE_RED
[BlockCodex] 243	BLOCK_SANDSTONE_DESERT
[BlockCodex] 244	BLOCK_SANDSTONE_BLACK
[BlockCodex] 245	BLOCK_SANDSTONE_GREEN
[BlockCodex] 256	BLOCK_LANTERN_IRON_REGULAR
[BlockCodex] 257	BLOCK_SUNSTONE
[BlockCodex] 258	BLOCK_DAYLIGHT_CAPACITOR
[BlockCodex] 272	BLOCK_SCAFFOLDING_NORMAL
[BlockCodex] 273	BLOCK_SCAFFOLDING_EBONY
[BlockCodex] 274	BLOCK_SCAFFOLDING_BIRCH
[BlockCodex] 275	BLOCK_SCAFFOLDING_BLOODROSE
[BlockCodex] 4091	ACTORBLOCK_NO_COLLISION
[BlockCodex] 4092	ACTORBLOCK_FULL_COLLISION
[BlockCodex] 4093	ACTORBLOCK_ALLOW_MOVE_DOWN
[BlockCodex] 4094	ACTORBLOCK_NO_PASS_RIGHT
[BlockCodex] 4095	ACTORBLOCK_NO_PASS_LEFT
[BlockCodex] 4096	BLOCK_WATER
[BlockCodex] 4097	BLOCK_LAVA
[BlockCodex] -1	BLOCK_NULL
[CSVFetcher] Reading CSV ./assets/mods/basegame/items/itemid.csv
[GameItemLoader] Reading item #8448 with className net.torvald.terrarum.modulebasegame.gameitems.PickaxeCopper

[GameItemLoader] Reading item #8449 with className net.torvald.terrarum.modulebasegame.gameitems.PickaxeIron
[GameItemLoader] Reading item #8450 with className net.torvald.terrarum.modulebasegame.gameitems.PickaxeSteel
[GameItemLoader] Reading item #8466 with className net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire
[GameItemLoader] Reading item #8467 with className net.torvald.terrarum.modulebasegame.gameitems.TikiTorchTester
[Lang] Loading languages from ./assets/locales/
[JsonFetcher] Reading JSON .\assets\locales\de\Polyglot-100_de.json
[JsonFetcher] Reading JSON .\assets\locales\de\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\svSE\Polyglot-100_svSE.json
[JsonFetcher] Reading JSON .\assets\locales\svSE\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\noNB\Polyglot-100_noNB.json
[JsonFetcher] Reading JSON .\assets\locales\noNB\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\zhTW\Polyglot-100_zhTW.json
[JsonFetcher] Reading JSON .\assets\locales\zhTW\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\csCZ\Polyglot-100_csCZ.json
[JsonFetcher] Reading JSON .\assets\locales\csCZ\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\trTR\Polyglot-100_trTR.json
[JsonFetcher] Reading JSON .\assets\locales\trTR\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\jaJP\Polyglot-100_jaJP.json
[JsonFetcher] Reading JSON .\assets\locales\jaJP\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\plPL\Polyglot-100_plPL.json
[JsonFetcher] Reading JSON .\assets\locales\plPL\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\nlNL\Polyglot-100_nlNL.json
[JsonFetcher] Reading JSON .\assets\locales\nlNL\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\roRO\Polyglot-100_roRO.json
[JsonFetcher] Reading JSON .\assets\locales\roRO\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\thTH\Polyglot-100_thTH.json
[JsonFetcher] Reading JSON .\assets\locales\thTH\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\jakanaJP\Polyglot-100_jakanaJP.json
[JsonFetcher] Reading JSON .\assets\locales\jakanaJP\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\ptBR\Polyglot-100_ptBR.json
[JsonFetcher] Reading JSON .\assets\locales\ptBR\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\zhCN\Polyglot-100_zhCN.json
[JsonFetcher] Reading JSON .\assets\locales\zhCN\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\bgBG\Polyglot-100_bgBG.json
[JsonFetcher] Reading JSON .\assets\locales\bgBG\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\frFR\Polyglot-100_frFR.json
[JsonFetcher] Reading JSON .\assets\locales\frFR\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\en\Polyglot-100_en.json
[JsonFetcher] Reading JSON .\assets\locales\en\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\fiFI\Polyglot-100_fiFI.json
[JsonFetcher] Reading JSON .\assets\locales\fiFI\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\daDK\Polyglot-100_daDK.json
[JsonFetcher] Reading JSON .\assets\locales\daDK\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\huHU\Polyglot-100_huHU.json
[JsonFetcher] Reading JSON .\assets\locales\huHU\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\it\Polyglot-100_it.json
[JsonFetcher] Reading JSON .\assets\locales\it\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\es\Polyglot-100_es.json
[JsonFetcher] Reading JSON .\assets\locales\es\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\ruRU\Polyglot-100_ruRU.json
[JsonFetcher] Reading JSON .\assets\locales\ruRU\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\isIC\Polyglot-100_isIC.json
[JsonFetcher] Reading JSON .\assets\locales\isIC\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\koKR\Polyglot-100_koKR.json
[JsonFetcher] Reading JSON .\assets\locales\koKR\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\ptPT\Polyglot-100_ptPT.json
[JsonFetcher] Reading JSON .\assets\locales\ptPT\terrarum.json
[JsonFetcher] Reading JSON .\assets\locales\elGR\Polyglot-100_elGR.json
[JsonFetcher] Reading JSON .\assets\locales\elGR\terrarum.json
[Lang] Loading languages from ./assets/mods/basegame/locales/
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\de\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\svSE\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\noNB\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\zhTW\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\csCZ\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\trTR\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\jaJP\devmsg.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\jaJP\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\jaJP\tips.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\plPL\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\nlNL\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\roRO\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\thTH\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\jakanaJP\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\ptBR\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\zhCN\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\bgBG\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\frFR\devmsg.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\frFR\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\frFR\tips.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\en\blocks.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\en\devmsg.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\en\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\en\help.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\en\tips.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\fiFI\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\fiFI\tips.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\daDK\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\huHU\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\it\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\es\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\ruRU\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\isIC\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\koKR\blocks.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\koKR\devmsg.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\koKR\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\koKR\tips.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\ptPT\game.json
[JsonFetcher] Reading JSON .\assets\mods\basegame\locales\elGR\game.json
[EntryPoint] recording item ID 
0 1 16 17 18 19 32 33 34 35 36 37 38 39 40 48 49 50 51 64 65 66 67 80 81 82 83 84 85 96 97 112 113 114 115 116 117 128 129 130 131 132 133 144 145 146 147 148 149 160 161 162 163 164 176 177 192 193 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 256 257 258 272 273 274 275 4091 4092 4093 4094 4095 4096 4097 4112 4113 4114 4115 4128 4129 4130 4131 4132 4133 4134 4135 4136 4144 4145 4146 4147 4160 4161 4162 4163 4176 4177 4178 4179 4180 4181 4192 4193 4208 4209 4210 4211 4212 4213 4224 4225 4226 4227 4228 4229 4240 4241 4242 4243 4244 4245 4256 4257 4258 4259 4260 4272 4273 4288 4289 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4352 4353 4354 4368 4369 4370 4371 8187 8188 8189 8190 8191 Welcome back!
[ModMgr] basegame loaded successfully
[ModMgr] Loading module dwarventech
[ModMgr] 	Module #1 -- Dwarven Techs | 0.2.0 | Terrarum
	Dwarven technicians are emerged from their hiding | 2017-07-14
	Entry point: net.torvald.terrarum.modulecomputers.EntryPoint
	External libraries: 
	Dependencies: basegame 0.2.*
[ModMgr] dwarventech has nonexisting entry point, skipping...
[AppLoader] all modules loaded successfully
[GameWorld] Creation of new world with index 1, called by:
[GameWorld] --> java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld.setWorldIndex(GameWorld.kt:31)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld.<init>(GameWorld.kt:100)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld$Companion.makeNullWorld(GameWorld.kt:478)
[GameWorld] --> net.torvald.terrarum.worlddrawer.BlocksDrawer.<clinit>(BlocksDrawerNew.kt:35)
[GameWorld] --> net.torvald.terrarum.AppLoader.postInit(AppLoader.java:617)
[GameWorld] --> net.torvald.terrarum.AppLoader.render(AppLoader.java:391)
[GameWorld] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
[GameWorld] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
[BlocksDrawer] Making terrain textures...
[BlocksDrawer] Making terrain and wall item textures...
[BlocksDrawer] init() exit
[GameWorld] Creation of new world with index 1, called by:
[GameWorld] --> java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld.setWorldIndex(GameWorld.kt:31)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld.<init>(GameWorld.kt:100)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld$Companion.makeNullWorld(GameWorld.kt:478)
[GameWorld] --> net.torvald.terrarum.worlddrawer.LightmapRenderer.<clinit>(LightmapRendererNew.kt:40)
[GameWorld] --> net.torvald.terrarum.AppLoader.postInit(AppLoader.java:618)
[GameWorld] --> net.torvald.terrarum.AppLoader.render(AppLoader.java:391)
[GameWorld] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
[GameWorld] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Terrarum version 0.2.1424
LibGDX version 1.9.10
os.arch = amd64
processor = Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
vendor = GenuineIntel
[LightmapRenderer] Overscan open: 40; opaque: 10
[AppLoader] PostInit done
[AppLoader] Changing screen to net.torvald.terrarum.Terrarum
GL_VERSION = 320
GL_MAX_TEXTURE_SIZE = 32768
GL info:
Type: OpenGL
Version: 3:2:0
Vendor: NVIDIA Corporation
Renderer: GeForce GTX 1660 Ti/PCIe/SSE2
[Terrarum] locale = enGB
[AppLoader] Changing screen to net.torvald.terrarum.TitleScreen
[TitleScreen] show() called
[TitleScreen] Intro pre-load
[GameWorldExtension] Creation of new world with index 1, called by:
[GameWorldExtension] --> java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
[GameWorldExtension] --> net.torvald.terrarum.gameworld.GameWorld.setWorldIndex(GameWorld.kt:31)
[GameWorldExtension] --> net.torvald.terrarum.gameworld.GameWorld.<init>(GameWorld.kt:100)
[GameWorldExtension] --> net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension.<init>(GameWorldExtension.kt:11)
[GameWorldExtension] --> net.torvald.terrarum.TitleScreen.loadThingsWhileIntroIsVisible(TitleScreen.kt:130)
[GameWorldExtension] --> net.torvald.terrarum.TitleScreen.show(TitleScreen.kt:196)
[GameWorldExtension] --> net.torvald.terrarum.AppLoader.setScreen(AppLoader.java:573)
[GameWorldExtension] --> net.torvald.terrarum.Terrarum.show(Terrarum.kt:400)
[GameWorldExtension] --> net.torvald.terrarum.AppLoader.setScreen(AppLoader.java:573)
[GameWorldExtension] --> net.torvald.terrarum.AppLoader.render(AppLoader.java:428)
[GameWorldExtension] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
[GameWorldExtension] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
[TitleScreen] Demo world gen complete
[TitleScreen] show() exit
[TitleScreen] resize() called
[BlocksDrawer] Resize event
[LightmapRenderer] Resize event
[TitleScreen] resize() exit
[AppLoader] Screen transisiton complete: net.torvald.terrarum.TitleScreen
[Terrarum] newsize: 1110x740 | internal: 1110x740
[AppLoader] Screen transisiton complete: net.torvald.terrarum.Terrarum
[JsonFetcher] Reading JSON .\assets\mods\basegame\weathers\WeatherGeneric.json
[GdxColorMap] Loading colormap from generic_skybox.tga
[] Caution: actor  is visible but the sprite was not set.
[BlocksDrawer] Resize event
[LightmapRenderer] Resize event
[LightmapRenderer] World change detected -- old world: 1976455744, new world: 1131391431
[GdxColorMap] Loading colormap from black_body_col_1000_40000_K.tga
[GameWorld] Creation of new world with index 1, called by:
[GameWorld] --> java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld.setWorldIndex(GameWorld.kt:31)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld.<init>(GameWorld.kt:100)
[GameWorld] --> net.torvald.terrarum.gameworld.GameWorld$Companion.makeNullWorld(GameWorld.kt:478)
[GameWorld] --> net.torvald.terrarum.IngameInstance.<init>(IngameInstance.kt:27)
[GameWorld] --> net.torvald.terrarum.modulebasegame.Ingame.<init>(Ingame.kt:46)
[GameWorld] --> net.torvald.terrarum.modulebasegame.ui.UIProxyNewRandomGame.endOpening(UIProxyNewRandomGame.kt:35)
[GameWorld] --> net.torvald.terrarum.ui.UIHandler.update(UIHandler.kt:139)
[GameWorld] --> net.torvald.terrarum.ui.UICanvas.update(UICanvas.kt:93)
[GameWorld] --> net.torvald.terrarum.modulebasegame.ui.UIRemoCon.updateUI(UIRemoCon.kt:151)
[GameWorld] --> net.torvald.terrarum.ui.UIHandler.update(UIHandler.kt:122)
[GameWorld] --> net.torvald.terrarum.ui.UICanvas.update(UICanvas.kt:93)
[GameWorld] --> net.torvald.terrarum.TitleScreen.updateScreen(TitleScreen.kt:239)
[GameWorld] --> net.torvald.terrarum.TitleScreen$render$1.invoke(TitleScreen.kt:214)
[GameWorld] --> net.torvald.terrarum.TitleScreen$render$1.invoke(TitleScreen.kt:38)
[GameWorld] --> net.torvald.terrarum.AppLoader.measureDebugTime(AppLoader.java:920)
[GameWorld] --> net.torvald.terrarum.TitleScreen.render(TitleScreen.kt:214)
[GameWorld] --> net.torvald.terrarum.Terrarum.render(Terrarum.kt:410)
[GameWorld] --> net.torvald.terrarum.AppLoader.render(AppLoader.java:433)
[GameWorld] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
[GameWorld] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
[AppLoader] Changing screen to net.torvald.terrarum.LoadScreen
[BlockLayer] BlockLayer successfully freed
[BlockLayer] BlockLayer successfully freed
[Ingame] Ingame called
[Ingame] --> java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
[Ingame] --> net.torvald.terrarum.modulebasegame.Ingame.printStackTrace(Ingame.kt:1019)
[Ingame] --> net.torvald.terrarum.modulebasegame.Ingame.enter(Ingame.kt:240)
[Ingame] --> net.torvald.terrarum.modulebasegame.Ingame.show(Ingame.kt:173)
[Ingame] --> net.torvald.terrarum.LoadScreen$show$runnable$1.invoke(LoadScreen.kt:79)
[Ingame] --> net.torvald.terrarum.LoadScreen$show$runnable$1.invoke(LoadScreen.kt:17)
[Ingame] --> net.torvald.terrarum.LoadScreen$sam$java_lang_Runnable$0.run(LoadScreen.kt)
[Ingame] --> java.base/java.lang.Thread.run(Thread.java:834)
[GameWorldExtension] Creation of new world with index 1, called by:
[GameWorldExtension] --> java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
[GameWorldExtension] --> net.torvald.terrarum.gameworld.GameWorld.setWorldIndex(GameWorld.kt:31)
[GameWorldExtension] --> net.torvald.terrarum.gameworld.GameWorld.<init>(GameWorld.kt:100)
[GameWorldExtension] --> net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension.<init>(GameWorldExtension.kt:11)
[GameWorldExtension] --> net.torvald.terrarum.modulebasegame.Ingame.enter(Ingame.kt:252)
[GameWorldExtension] --> net.torvald.terrarum.modulebasegame.Ingame.show(Ingame.kt:173)
[GameWorldExtension] --> net.torvald.terrarum.LoadScreen$show$runnable$1.invoke(LoadScreen.kt:79)
[GameWorldExtension] --> net.torvald.terrarum.LoadScreen$show$runnable$1.invoke(LoadScreen.kt:17)
[GameWorldExtension] --> net.torvald.terrarum.LoadScreen$sam$java_lang_Runnable$0.run(LoadScreen.kt)
[GameWorldExtension] --> java.base/java.lang.Thread.run(Thread.java:834)
[AppLoader] Screen transisiton complete: net.torvald.terrarum.LoadScreen
[WorldGenerator] Seed: 7200772931191691930
[WorldGenerator] Raising and eroding terrain...
[WorldGenerator] Shaping world...
[mapgenerator] Carving caves...
[mapgenerator] Carving caves...
[mapgenerator] Carving caves...
[mapgenerator] Carving caves...
[mapgenerator] Carving caves...
[mapgenerator] Carving caves...
[mapgenerator] Carving caves...
[mapgenerator] Carving caves...
[mapgenerator] Carving caves...
[WorldGenerator] Planting grass...
[WorldGenerator] Placing floating islands...
[AppLoader] Changing screen to net.torvald.terrarum.modulebasegame.Ingame
[Ingame] Ingame called
[Ingame] --> java.base/java.lang.Thread.getStackTrace(Thread.java:1606)
[Ingame] --> net.torvald.terrarum.modulebasegame.Ingame.printStackTrace(Ingame.kt:1019)
[Ingame] --> net.torvald.terrarum.modulebasegame.Ingame.enter(Ingame.kt:240)
[Ingame] --> net.torvald.terrarum.modulebasegame.Ingame.show(Ingame.kt:173)
[Ingame] --> net.torvald.terrarum.AppLoader.setScreen(AppLoader.java:573)
[Ingame] --> net.torvald.terrarum.Terrarum.setScreen(Terrarum.kt:404)
[Ingame] --> net.torvald.terrarum.LoadScreen.render(LoadScreen.kt:279)
[Ingame] --> net.torvald.terrarum.Terrarum.render(Terrarum.kt:410)
[Ingame] --> net.torvald.terrarum.AppLoader.render(AppLoader.java:433)
[Ingame] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
[Ingame] --> com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
[Ingame] loaded successfully.
[BlocksDrawer] Resize event
[LightmapRenderer] Resize event
Exception in thread "LWJGL Application" java.lang.NullPointerException: Blockprop with raw id 37984 does not exist.
	at net.torvald.terrarum.blockproperties.BlockCodex.get(BlockCodex.kt:79)
	at net.torvald.terrarum.worlddrawer.LightmapRenderer$buildNoopMask$1.invoke(LightmapRendererNew.kt:403)
	at net.torvald.terrarum.worlddrawer.LightmapRenderer.buildNoopMask(LightmapRendererNew.kt:422)
	at net.torvald.terrarum.worlddrawer.LightmapRenderer.access$buildNoopMask(LightmapRendererNew.kt:37)
	at net.torvald.terrarum.worlddrawer.LightmapRenderer$fireRecalculateEvent$2.invoke(LightmapRendererNew.kt:235)
	at net.torvald.terrarum.worlddrawer.LightmapRenderer$fireRecalculateEvent$2.invoke(LightmapRendererNew.kt:37)
	at net.torvald.terrarum.AppLoader.measureDebugTime(AppLoader.java:920)
	at net.torvald.terrarum.worlddrawer.LightmapRenderer.fireRecalculateEvent$terrarum(LightmapRendererNew.kt:233)
	at net.torvald.terrarum.modulebasegame.Ingame.resize(Ingame.kt:969)
	at net.torvald.terrarum.AppLoader.setScreen(AppLoader.java:574)
	at net.torvald.terrarum.Terrarum.setScreen(Terrarum.kt:404)
	at net.torvald.terrarum.LoadScreen.render(LoadScreen.kt:279)
	at net.torvald.terrarum.Terrarum.render(Terrarum.kt:410)
	at net.torvald.terrarum.AppLoader.render(AppLoader.java:433)
	at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
	at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Disconnected from the target VM, address: '127.0.0.1:60452', transport: 'socket'

Process finished with exit code 0

LibGDX Potential Memory Leak Candidates

This is primarily a list of my fuck-ups, so you (yes you, future CuriousTorvald!) don't have to fuck-up again.

  • Not disposed of temporary textures/pixmaps/etc.
  • if (!init) with no corresponding init = true, of which contains:
    • new SpriteBatch()
    • new ShapeRenderer()
    • new Pixmap/Texture/FrameBuffer/etc.

Please update the list whoever makes some genius-level fuck-ups again and managed to fix it. Much thanks.

Inventory UI leaks memory

Out of 3 screens of the inventory, only the minimap doesn't leak one.

System RAM is definitely leaking, and it looks like so is the VRAM (the increment stops after some time).

Memory leak

Probably related with render part that operates with GDX

IME Idea: Have both "Candidates" and "String Rewrite" system

  • Candidates system: for Chinese and Japanese
  • String Rewrite system: for diacritics, some symbol composition (e.g '<' then '<' composes '«') and Korean

Using String Rewrite system for Korean is preferred method as it's the system both Microsoft and Apple uses and it only requires one "candidate" on current candidates system so why bother with the candidate window?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.