kunjgit / GameZone

This open source repository contains collection of games build on basic tech stacks in web development . Use your creativity and build your own game and contribute to the repository by making PR ๐ŸŽฎ
https://kunjgit.github.io/GameZone/
Apache License 2.0
572 stars 832 forks source link

[New game]: The World #793

Closed U-DAY-333 closed 1 year ago

U-DAY-333 commented 1 year ago

๐ŸŽฎ Game Request

The world resembles that of Minecraft, a popular voxel-type 3D game based on boxes. You can add and remove everything and anything, different types of nodes are available. The borders are only limited by the size of an integer in Javascript, that means the world is generated dynamically as the player visits new areas. There is no vertical limit, but rendering distance is somewhat limited.

The topography of the world is generated by a pseudo-random function. The underlying system imitates that of Minecraft: the world is made of 16 by 16 by infinity node "chuncks". The pseudo-random function generates a single height value for each chunk and the height values in between are interpolated. Everything under the height value is filled with nodes and everything above is left empty. Depending on the height different types of soil can be found (grass, dirt, sand...).

Contrary to Minecraft the world renderer uses a 2D perlin-noise generator rather than 3D, there are no ores or tunnels underground, no enemies or mobs, no trees or physics. Since the renderer takes all the processing power the features must be limited.

A height map and a frames per second graph can be enabled in the menu.

Point down the features

The rendering is a simple painter's algorithm, everything is drawn from back to front, so nodes close to the camera are drawn over the nodes further away. As canvas doesn't have any 3D rendering capabilities the engine uses very basic 3D rendering techniques. Some optimisation techniques like back-face culling, occlusion culling and frustum culling have been implemented. Octrees aren't adapted to this game and scale, chunks are better suited.

To make things go faster a lower rendering distance can be selected.

Canvas doesn't support textures, so texture implementation must be made from ground up: an affine texture mapping system is used. Rendering with textures makes the game noticeably slower so a simple renderer, that uses plain colors, is also available.

Textures are stored in a png file, the texture placement is exactly the same as Minecraft's, so one could use any current Minecraft texture pack with this game.

Select program in which you are contributing

GSSoC23

Code of Conduct

kunjgit commented 1 year ago

Hey @U-DAY-333 ! Thank you for raising an issue ๐Ÿ’— You can self assign the issue by commenting /assign in comment ๐Ÿ˜€ Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES ๐Ÿš€ Donโ€™t Forget to โญ our GameZone๐ŸŽฎ Make sure you join our Discord๐Ÿ•น๏ธ

kunjgit commented 1 year ago

Hey @U-DAY-333! We are already having a similar game request in #765 ๐Ÿ‘€ Make sure you come up with a cool unique idea ๐Ÿ˜€ Waiting for your new game idea ๐Ÿ’—.

kunjgit commented 1 year ago

Hey @U-DAY-333 ! Thank you so much for your raising the issue๐Ÿ’— Itโ€™s all yours, you can come anytime again and make some contributions! ๐Ÿš€ Alone, we can do little, but together we can do so much! ๐Ÿ˜‡