Adapting LWJGL #26
Labels
area: Audio
area: Code Quality
area: Compatibility
area: Extensibility
area: GUI
area: Performance
area: Platform/OS
area: QoL/UX
area: Rendering
area: Textures
engine: Audio
engine: Graphics
engine: Menu
feature: Addition
feature: Expansion
feature: Update
type: Migrated
type: Plan
type: Ultra Massive
Milestone
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.
The text was updated successfully, but these errors were encountered: