My New OctoPrint Plugin!
▲ 5 r/octoprint+3 crossposts

My New OctoPrint Plugin!

Hello everyone! I have been working on a new OctoPrint plugin to help with spool management. Currently it is on v0.1.0, so my first release that i am willing to share with the community. For now, filament tracking is manual, but in the future I plan to add automatic tracking and QR code support, RFID support, and NFC support. This is my first ever plugin and I am excited to share it with the community!

https://github.com/wpallender/SpoolWizard

u/WJava_Game_Dev — 22 hours ago
▲ 3 r/javagamedev+1 crossposts

Learning Java

So I specifically want to become pretty proficient in Java over the summer, before I take AP CSA (Java only). I already have taken multiple CS classes in the past and worked on my own projects. But never anything big with Java, whenever I have used it, I've used AI, then I get discouraged because I want to code without using so much AI. Anyway, I'm getting sidetracked.
I want to also make some games with Java, because why not. Are there any courses that are either free or really cheap that you recommend. I don't like using youtube videos, as I just copy the code, I need something to know the language.

reddit.com
u/WJava_Game_Dev — 1 month ago
▲ 7 r/javagamedev+1 crossposts

Need Help Debugging

As you can see in the video, whenever I move the character up or to the left, there seems to be an issue with chunk loading, black spots appear. It does not seem to be an issue when moving the character down or to the right.

I understand thats a lot of code, but I have been searching for the problem for hours, and just cant find it.

Chunk.Java

package world;

import world.FastNoiseLite;
import java.util.Random;

public class Chunk {

public static final int SIZE = 16;

public int[][] tiles;      // Terrain layer
public int[][] objects;    // Objects layer (trees, etc.)

public int chunkX;
public int chunkY;

private FastNoiseLite noise;

Random rand = new Random();

public Chunk(int chunkX, int chunkY, FastNoiseLite noise) {

this.chunkX = chunkX;
this.chunkY = chunkY;
this.noise = noise;

tiles = new int[SIZE][SIZE];
objects = new int[SIZE][SIZE];  // Initialize objects layer

generateTerrain();

}

private void generateTerrain() {
for(int x = 0; x < SIZE; x++) {
for(int y = 0; y < SIZE; y++) {

int worldX = chunkX * SIZE + x;
int worldY = chunkY * SIZE + y;

float noiseValue = noise.GetNoise(worldX, worldY);

noiseValue = (noiseValue + 1) / 2f;

if(noiseValue < 0.35f) {
tiles[x][y] = 0; // Water
} else if(noiseValue < 0.42f) {
tiles[x][y] = 1; // Sand
} else if(noiseValue < 0.65f) {
tiles[x][y] = 2; // Grass
} else {
tiles[x][y] = 2; // Grass - Forest (lay down grass first)
if(rand.nextInt(100) < 70) {
objects[x][y] = 3; // Tree object on top
}
}
}
}
}

}

And some more code

World.Java

package world;

import world.FastNoiseLite;
import java.util.HashMap;

public class World {

public long seed;
public FastNoiseLite noise;

private HashMap<String, Chunk> chunks;

public World(long seed) {
this.seed = seed;

noise = new FastNoiseLite((int)seed);
noise.SetNoiseType(FastNoiseLite.NoiseType.Perlin);
noise.SetFrequency(0.05f);

chunks = new HashMap<>();
}

public Chunk getOrCreateChunk(int chunkX, int chunkY) {
String key = chunkX + "," + chunkY;
if (!chunks.containsKey(key)) {
chunks.put(key, new Chunk(chunkX, chunkY, noise));
}
return chunks.get(key);
}

public Chunk getChunk(int chunkX, int chunkY) {
String key = chunkX + "," + chunkY;
return chunks.get(key);
}

}

And finally a snippet of code

 public void run() {  
double drawInterval = 1000000000/fps; 
double delta = 0; 
double lastTime = System.nanoTime(); 
long currentTime; 
long timer = 0; 
int 
drawCount
 = 0;  
while(gameThread != null) {  
currentTime = System.nanoTime();  
delta += (currentTime - lastTime) / drawInterval; 
timer += (currentTime - lastTime); 
lastTime = currentTime;  
if(delta >= 1) { 
double deltaTime = 1.0 / fps; 
// Pass delta time in seconds 
update(deltaTime); 
repaint(); 
delta--; 
drawCount++; }  
if(timer >= 1000000000) { 
drawCount = 0;
 timer = 0; }  } }  
u/Override protected void paintComponent(Graphics g) { 
super.paintComponent(g);  Graphics2D g2 = (Graphics2D)g;  g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);  // Calculate which tiles are visible (in world coordinates) int startTileX = (int)((cameraX - tileSize) / tileSize); int startTileY = (int)((cameraY - tileSize) / tileSize); int endTileX = (int)((cameraX + screenWidth) / tileSize) + 1; int endTileY = (int)((cameraY + screenHeight) / tileSize) + 1;  // Render all visible tiles for(int tileY = startTileY; tileY <= endTileY; tileY++) { for(int tileX = startTileX; tileX <= endTileX; tileX++) { int chunkX = tileX / Chunk.SIZE; int chunkY = tileY / Chunk.SIZE; int localX = tileX - (chunkX * Chunk.SIZE); int localY = tileY - (chunkY * Chunk.SIZE);  // Handle negative coordinates if(localX < 0) { chunkX--; localX += Chunk.SIZE; } if(localY < 0) { chunkY--; localY += Chunk.SIZE; }  Chunk chunk = world.getChunk(chunkX, chunkY); if(chunk == null) continue;  int tile = chunk.tiles[localX][localY];  // Calculate screen position int screenX = (int)(tileX * tileSize - cameraX); int screenY = (int)(tileY * tileSize - cameraY);  // Render terrain tile switch(tile) { case 0: g2.drawImage(tileM.tile[3].image, screenX, screenY, tileSize, tileSize, null); break; case 1: g2.drawImage(tileM.tile[2].image, screenX, screenY, tileSize, tileSize, null); break; case 2: g2.drawImage(tileM.tile[0].image, screenX, screenY, tileSize, tileSize, null); break; }  // Render object on top (trees, etc.) int object = chunk.objects[localX][localY]; if(object > 0) { switch(object) { case 3: g2.drawImage(tileM.tile[1].image, screenX, screenY, tileSize, tileSize, null); break; } } } }
u/WJava_Game_Dev — 2 months ago

Looking for feedback on my 2D procedural survival game (Java project)

Game Title: Survival Game

Playable Link: https://w-java-games.itch.io/java-survival-game

Platform: Itch.IO

Hey! I’m working on a small 2D survival game in Java with procedural world generation and chunk-based rendering.

I just uploaded an early build and would really appreciate feedback.

What I’d love feedback on:

  • Does the world generation feel interesting or repetitive?
  • Performance (any lag or stuttering?)
  • Controls (movement feel smooth or clunky?)
  • What should I add next?

About the game:

  • Procedural world generation (seed-based)
  • Chunk loading system
  • Basic survival sandbox mechanics (early stage)
  • Custom tile rendering system

This is still an early version, so bugs and missing features are expected.

Even one sentence of feedback helps a lot.

reddit.com
u/WJava_Game_Dev — 2 months ago
▲ 2 r/GameDevs+1 crossposts

Looking for feedback on my 2D procedural survival game (Java project)

Game Title: Survival Game

Playable Link: https://w-java-games.itch.io/java-survival-game

Platform: Itch.IO

Hey! I’m working on a small 2D survival game in Java with procedural world generation and chunk-based rendering.

I just uploaded an early build and would really appreciate feedback.

What I’d love feedback on:

  • Does the world generation feel interesting or repetitive?
  • Performance (any lag or stuttering?)
  • Controls (movement feel smooth or clunky?)
  • What should I add next?

About the game:

  • Procedural world generation (seed-based)
  • Chunk loading system
  • Basic survival sandbox mechanics (early stage)
  • Custom tile rendering system

This is still an early version, so bugs and missing features are expected.

Even one sentence of feedback helps a lot.

reddit.com
u/WJava_Game_Dev — 2 months ago