Page 1 of 1

Remaking Boulder Dash in 3D OpenSource voxel engine Minetest

Posted: Sun Apr 21, 2024 7:44 pm
by neuromancer
I'm remaking Boulder Dash in the Open Source voxel engine Minetest.
It's kind of Boulder-Dash meets Minecraft. It's in its very early stages. Would love to get your thoughts. Hopefully at some point I will support a 3D version of BDCFF format. I think where each [map] is 1 vertical layer.
For some reason you need to right click the link and do "open link in new tab". Or just google "minetest boulder dig" and it will take you to the contentdb page.
https://content.minetest.net/packages/N ... ulder_dig/
Image

Re: Remaking Boulder Dash in 3D OpenSource voxel engine Minetest

Posted: Fri Jun 21, 2024 4:02 am
by neuromancer
Looking for people to help create levels. If you want to help and have questions you can contact me by right click this link https://content.minetest.net/packages/N ... ulder_dig/ and say open in new window. (or just google mintest boulder_dig). I just added a pseudo bdcff format capability. Level 8 is an example of this. 3 tables need to be updated in the init.lua file to create a level. Everything needed to create level 8 is shown below:
The inbox location is handled here:

Code: Select all

levels = { 	[8] = {gems_needed = 5, gem_points_regular = 10, gem_points_bonus = 20, x_start_loc= 2, y_start_loc=4 , z_start_loc = 3}, }
schematic files must have their paths defined here:

Code: Select all

local schematic_path1 = modpath .. "\\schematics\\bomb_butterfly.lua"
...
Moving nodes like butterflies and fireflies must be placed using the place_node command and can't be put in the schematic file:

Code: Select all

script_tables = { 
		--lvl 8: bomb butterfly
	{
		{"build_ascii_schematic", schematic_path1},	
		{"place_node",2,1,2,"boulder_dig:firefly", true},
		{"place_node",4,1,2,"boulder_dig:firefly_right", true},
		{"place_node",6,1,2,"boulder_dig:butterfly", true},
		{"place_node",8,1,2,"boulder_dig:butterfly_right", true},
		{"place_node",10,1,2,"boulder_dig:butterfly", true},
		{"place_node",12,1,2,"boulder_dig:butterfly_right", true},
		{"place_node",14,1,2,"boulder_dig:butterfly", true},
		{"place_node",16,1,2,"boulder_dig:butterfly_right", true},
		{"place_node",18,1,2,"boulder_dig:butterfly", true},
		{"place_node",20,1,2,"boulder_dig:butterfly_right", true},
		{"place_node",22,1,2,"boulder_dig:butterfly", true},
		{"place_node",24,1,2,"boulder_dig:butterfly_right", true},
		{"place_node",26,1,2,"boulder_dig:butterfly", true},
		{"place_node",28,1,2,"boulder_dig:butterfly_right", true},			
	}, }
The location to activate the exit box is handled here:

Code: Select all

exit_script_table = {
	--lvl 8: bomb_butterfly
	{
		{"place_node",1,1,3,"boulder_dig:exit", true},
	},	
}
Look in the mod's schematics folder and you will find a file called bomb_butterfly.lua to see an example of how to define the layout of the level. It looks like this:

Code: Select all

return {
	nodes = {
		[" "] = {name = "air"},
		["."] = {name = "default:dirt"},
		["w"] = {name = "default:cobble"},
		["M"] = {name = "boulder_dig:magic_wall"},
		["X"] = {name = "boulder_dig:exit_dormant"},
		--["H"] = {name = "HIDDENOUTBOX"},
		["W"] = {name = "default:steelblock"},
		["Q"] = {name = "boulder_dig:firefly"},  --left
		["o"] = {name = "boulder_dig:firefly_right"},  --up
		["O"] = {name = "boulder_dig:firefly_right"},  --right
		["q"] = {name = "boulder_dig:firefly_right"},   --down
		["r"] = {name = "boulders:boulder"},
		--["rf"] = {name = "BOULDERf"},
		["d"] = {name = "boulder_dig:gemstone"},
		--["df"] = {name = "DIAMONDf"},
		--["P"] = {name = "INBOX"},
		--["x"] = {name = "HEXPANDINGWALL"},
		--["v"] = {name = "VEXPANDINGWALL"},
		--["V"] = {name = "EXPANDINGWALL"},	
		["c"] = {name = "boulder_dig:butterfly_right"},  --down
		["C"] = {name = "boulder_dig:butterfly"},    --left
		["b"] = {name = "boulder_dig:butterfly_right"},  --up
		["B"] = {name = "boulder_dig:butterfly_right"},   --right
		["a"] = {name = "boulder_dig:amoeba"},
		--["s"] = {name = "SLIME"},	
		["t"] = {name = "xpanes:bar_flat"},
	},
	layers = {
		{
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
		},

		{
			"tttttttttttttttttttttttttttttt",
			"t. . . . . . . . . . . . . . t",
			"t. . . . . . . . . . . . . . t",
			"tX . . . . . . . . . . . . . t",
			"t. . . . . . . . . . . . . . t",
			"t. . . . . . . . . . . . . . t",
			"tttttttttttttttttttttttttttttt",			
		},
		{
			"tttttttttttttttttttttttttttttt",
			"t                            t",
			"t                            t",
			"t                            t",
			"t                            t",
			"t                            t",
			"tttttttttttttttttttttttttttttt",		
		},
		{
			"tttttttttttttttttttttttttttttt",
			"tMMMMMMMMMMMMMMMMMMMMMMMMMMMMt",
			"tMMMMMMMMMMMMMMMMMMMMMMMMMMMMt",
			"tMMMMMMMMMMMMMMMMMMMMMMMMMM Mt",
			"tMMMMMMMMMMMMMMMMMMMMMMMMMMMMt",
			"tMMMMMMMMMMMMMMMMMMMMMMMMMMMMt",
			"tttttttttttttttttttttttttttttt",
		},

		{
			"tttttttttttttttttttttttttttttt",
			"t     r      r   r         r t",
			"t r         r      r    r    t",
			"t         r           r     rt",
			"t r          r               t",
			"t    r   r      r   r        t",
			"tttttttttttttttttttttttttttttt",	
		},
		{
			"tttttttttttttttttttttttttttttt",
			"t                            t",
			"t                            t",
			"t                            t",
			"t                            t",
			"t                            t",
			"tttttttttttttttttttttttttttttt",	
		},
		{
			"tttttttttttttttttttttttttttttt",
			"tttttttttttttttttttttttttttttt",
			"tttttttttttttttttttttttttttttt",
			"tttttttttttttttttttttttttttttt",
			"tttttttttttttttttttttttttttttt",
			"tttttttttttttttttttttttttttttt",
			"tttttttttttttttttttttttttttttt",
		},

	},
}

Re: Remaking Boulder Dash in 3D OpenSource voxel engine Minetest

Posted: Sun Jun 23, 2024 2:51 pm
by neuromancer
I've added expanding walls & slimes, so now I've implemented almost all of the functionality of BoulderDash. Commented items still need to be added. Inbox is handled in the levels table so the functionality already exists.:

Code: Select all

return {
	nodes = {
		[" "] = {name = "air"},
		["."] = {name = "default:dirt"},
		["w"] = {name = "default:cobble"},
		["M"] = {name = "boulder_dig:magic_wall"},
		["X"] = {name = "boulder_dig:exit_dormant"},
		--["H"] = {name = "HIDDENOUTBOX"},
		["W"] = {name = "default:steelblock"},
		["Q"] = {name = "boulder_dig:firefly"},  --left
		["o"] = {name = "boulder_dig:firefly_right"},  --up
		["O"] = {name = "boulder_dig:firefly_right"},  --right
		["q"] = {name = "boulder_dig:firefly_right"},   --down
		["r"] = {name = "boulders:boulder"},
		--["rf"] = {name = "BOULDERf"},
		["d"] = {name = "boulder_dig:gemstone"},
		--["df"] = {name = "DIAMONDf"},
		--["P"] = {name = "INBOX"},
		["x"] = {name = "boulder_dig:x_expanding_wall"},
		["v"] = {name = "boulder_dig:z_expanding_wall"},
		["V"] = {name = "boulder_dig:expanding_wall"},	
		["c"] = {name = "boulder_dig:butterfly_right"},  --down
		["C"] = {name = "boulder_dig:butterfly"},    --left
		["b"] = {name = "boulder_dig:butterfly_right"},  --up
		["B"] = {name = "boulder_dig:butterfly_right"},   --right
		["a"] = {name = "boulder_dig:amoeba"},
		["s"] = {name = "boulder_dig:slime"},		
		["t"] = {name = "xpanes:bar_flat"},
	},
	layers = {
		{
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
			"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",
		},