A game of Go for Minetest.
How to play a game of Go:
- Craft Go boards & (infinite) stones
- Place a Go board
- Make a move or pass (either right-click the board to open the formspec, then click on an intersection or right-click with infinite Go stones of the appropriate color)
- Wait for your opponent to make a move (or pass)
- Go back to step 3
- After both you and your opponent have passed consecutively the marking phase begins
- Mark captured groups (only if any groups remain that don't have two eyes; otherwise the board is scored immediately)
- Wait for your opponent to mark captured groups
- After both you and your opponent have accepted which groups were marked as captured, proceed to scoring
- Reset the board
Using a bare hand, the board can be picked up at any time (only the protection owner can pick it up if the location where it resides is protected). The full game state will be kept by the item - simply place the board again to resume the game.
Standard Rules of Go, where the following choices have been made:
- Basic ("japanese") ko rule, but no super ko rules
- Area ("chinese") scoring; games should ideally be played out (no neutral area left at the end of the game, all groups have two eyes) - otherwise groups need to be marked as captured manually
Required ("hard") dependencies:
Optional development dependencies:
Optional "hinted" dependencies that may provide items for crafts (various alternatives exist):
both are part of Minetest Game and most derivatives.
Note that technically these mods don't have to load first for Go to work, hence they are only "hinted".
Optional, supported dependencies:
For the craft recipes, items with the following groups are required:
group:dye,color_blackfor black stones;
group:dye,color_whitefor white stones
if no items of a group are available, items that use the group in their craft won't be craftable.
The options for implementing in-game Go boards are the following:
- Use entities for stones. Not feasible at all due to entities being very heavy.
- Change the texture of the board as stones are placed; mix & match texture modifiers and dynamic media. Fills up the client cache; textures would get very large if stone textures are more than just a single color.
- Have two stones for every position hidden inside the board, move one up using a bone offset. Puts some strain on the network for sending the update bone position commands but is rather fine other than that & doesn't leak memory. Many boards will eventually lead to FPS drops as skeletal animation is implemented rather inefficiently, running on the CPU. This is what this mod uses.
In the formspec stones would flicker the moment they are placed if styles were used for immediate feedback. This is because as soon as you stop pressing, the hovered state will be shown again until the new formspec reaches you. Elements that stay pressed (i.e. checkboxes) don't support the necessary styling yet. Thus placing stones has a certain "lag" to it.
Another limitation is that no settings (or defaults) can be forced by a mod or game (apart from editing the global settings, which is extremely dirty and error-prone). Thus decent settings have to be recommended:
- Enabling shaders (
enable_shaders = true) is highly recommended to enhance the 3D look & feel of the board
- Entity selectionboxes should be hidden (
show_entity_selectionbox = false); if entity highlighting is used, it should not be set to halo, but rather to outline (
node_highlighting = box) as to not obstruct the view on the board
- Smooth GUI image scaling should be enabled (
gui_scaling_filter = true)
- Enable trilinear texture filtering (
trilinear_filter = true), mipmapping (
mip_map = true) & anisotropic filtering (
anisotropic_filter = true) for smoother board appearance
- Consider enabling multi-sample anti-aliasing (
fsaa = 2) for smooth board edges if it doesn't trigger a nasty rendering bug on your setup
You can set these settings by adding the following lines at the end of your configuration file (
enable_shaders = true show_entity_selectionbox = false gui_scaling_filter = true trilinear_filter = true mip_map = true anisotropic_filter = true
(MSAA not included due to the aforementioned bug)
Additionally, when playing using the formspec, first hiding the HUD (usually by pressing <kbd>F1</kbd>) is recommended.
- English: 100%
- German: 100%
- Code: Written by Lars Müller and licensed under the MIT license
- Media: CC0 & CC-BY 3.0 as follows:
- Models, textures & locales: Own work, all licensed CC0
go_board_place.ogg: OGG version of a
j1987, licensed under the CC0 license
go_stone_place.2.ogg: Derivatives of
Glass Place 2.wavby
kelsey_w, licensed under CC-BY 3.0
go_stone_place.3.ogg: Derivative of
Glass Pick Up & Place.wavby
kelsey_w, licensed under CC-BY 3.0