Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adapting LWJGL #26

Open
BenCheung0422 opened this issue Dec 23, 2024 · 0 comments
Open

Adapting LWJGL #26

BenCheung0422 opened this issue Dec 23, 2024 · 0 comments

Comments

@BenCheung0422
Copy link
Member

BenCheung0422 commented Dec 23, 2024

Original: MinicraftPlus/minicraft-plus-revived#318, MinicraftPlus/minicraft-plus-revived#695, MinicraftPlus/minicraft-plus-revived#724, MinicraftPlus/minicraft-plus-revived#725
Supersedes #22

Background

Java built-in features like AWT and Sound API, provide only limited functionalities. Many functions are limited on implementation and cannot be easily further scaled, including scalable canvas size (#22). However, this repository should still be sticking with desktop only, no mobiles.

Scalable Canvas Size

The current canvas size is quite fixed, especially the aspect ratio. If the window size is changed, the canvas is just either magnified or diminished, without extending to fit the window area. This would be the basic feature when adapting GLFW.

Like in Minecraft, the canvas should fit completely the window area, and no whole zooming would specifically be applied. The UI element size should also be configurable accordingly and sizes are not scaled with canvas. Also, there should be the minimum size of the window, which should not be less than 800x600, and should be small enough for any common desktop terminal size. Note that the aspect ratio can be any, so even ratio like 32:9 could be accepted. If the window is forcedly set (not by command line argument or window resizing function) to a smaller size, the canvas is either not rendered or rendered with just a warning screen.

Moreover, the hotkey ability to horizontally scroll entries manually introduced in #5 should be removed. This may cause hotkey conflicts, in addition that the necessity of this is likely insignificant.

Lighting & Shaders

Lighting and shaders should be supported well by using OpenGL. However, shader support might be complex in this context.

Advanced Audio by OpenAL

Basic elements include distance attenuation, mixing, channels would be the parts to be done.

Scalable Texture Resolution

For all the textures, flexible resolutions should be supported for different classes and types of textures, including tiles, entities, UI elements and various sprites. Limiting to just the small 8x8 or 16x16 sprite system is very restricting and not quite customizable. Also, details and diversity of visual elements are pretty limited. Better, for tiles, 3D modelling can be supported well for finer textures. However, this should not affect the scaling of sizes of the particular visual elements, but such elements should remain in the same sizes across different textures, only details and dimension ratios are affected.

Parallel Programming

Many elements in the game can be boosted by parallel programming provided OpenCL, this includes rendering (wide visual effects like raining), physics (collisions, particles, etc.), AI pathfinding, world generation, audio processing and the calculations based on looping and arrays. Detailed implementations would be considered later.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment