diff --git a/README.txt b/README.txt index bdf1f98..0a63ba7 100644 --- a/README.txt +++ b/README.txt @@ -1,4 +1,4 @@ -driftgame 0.1.1 by paramat +driftgame 0.1.2 by paramat A game for Minetest Engine 5.2.0 and later Built on the 'minipeli' game by paramat @@ -12,7 +12,6 @@ Using this game --------------- Due to client->server->client control delay it is recommended that this game is used in singleplayer or in local multiplayer. Generation of new areas of world may slightly affect the control response of the vehicle, the best control response will occur in previously generated areas. -Left arrow and right arrow blocks are given to a new player to mark out a race track. Third-person camera mode is recommended when driving for a better view. How to start playing this game diff --git a/mods/mapgen/init.lua b/mods/mapgen/init.lua index d0cada7..c122d13 100644 --- a/mods/mapgen/init.lua +++ b/mods/mapgen/init.lua @@ -206,7 +206,7 @@ minetest.register_biome({ node_top = "mapgen:grass", depth_top = 1, node_filler = "mapgen:dirt", - depth_filler = 1, + depth_filler = 2, node_riverbed = "mapgen:sand", depth_riverbed = 2, node_cave_liquid = "mapgen:water_source", diff --git a/mods/track/init.lua b/mods/track/init.lua index e323a66..aeff00f 100644 --- a/mods/track/init.lua +++ b/mods/track/init.lua @@ -3,20 +3,29 @@ local pathy = 8 local np_patha = { - offset = 0, + offset = -0.2, scale = 1, - spread = {x = 256, y = 256, z = 256}, + spread = {x = 384, y = 384, z = 384}, seed = 11711, - octaves = 3, - persist = 0.5 + octaves = 4, + persist = 0.6 } local np_pathb = { - offset = 0, + offset = -0.2, scale = 1, - spread = {x = 256, y = 256, z = 256}, + spread = {x = 384, y = 384, z = 384}, seed = 303, - octaves = 3, + octaves = 1, + persist = 0.5 +} + +local np_blend = { + offset = 0.0, + scale = 6.0, + spread = {x = 192, y = 192, z = 192}, + seed = 95059, + octaves = 1, persist = 0.5 } @@ -42,7 +51,7 @@ minetest.register_node("track:road_white", { minetest.register_node("track:arrow_left", { description = "Arrow Block Left", tiles = {"track_red.png", "track_red.png", - "track_red.png", "track_red.png", + "track_arrow_left.png", "track_red.png", "track_red.png", "track_arrow_left.png"}, paramtype = "light", light_source = 14, @@ -53,7 +62,7 @@ minetest.register_node("track:arrow_left", { minetest.register_node("track:arrow_right", { description = "Arrow Block Right", tiles = {"track_red.png", "track_red.png", - "track_red.png", "track_red.png", + "track_arrow_left.png^[transformFX", "track_red.png", "track_red.png", "track_arrow_left.png^[transformFX"}, paramtype = "light", light_source = 14, @@ -81,8 +90,10 @@ local c_roadwhite = minetest.get_content_id("track:road_white") local nobj_patha = nil local nobj_pathb = nil +local nobj_blend = nil local nvals_patha = {} local nvals_pathb = {} +local nvals_blend = {} local data = {} @@ -112,8 +123,10 @@ minetest.register_on_generated(function(minp, maxp, seed) nobj_patha = nobj_patha or minetest.get_perlin_map(np_patha, pmapdims) nobj_pathb = nobj_pathb or minetest.get_perlin_map(np_pathb, pmapdims) + nobj_blend = nobj_blend or minetest.get_perlin_map(np_blend, pmapdims) nobj_patha:get2dMap_flat(pmapminp, nvals_patha) nobj_pathb:get2dMap_flat(pmapminp, nvals_pathb) + nobj_blend:get2dMap_flat(pmapminp, nvals_blend) local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") local area = VoxelArea:new{MinEdge = emin, MaxEdge = emax} @@ -123,26 +136,39 @@ minetest.register_on_generated(function(minp, maxp, seed) for z = z0 - 4, z1 + 4 do -- Initial noise index at x0 - 4 for this z local ni = 1 + (z - (z0 - 5)) * pmapdim + 1 - local n_xprepatha = nvals_patha[(ni - 1)] - local n_xprepathb = nvals_pathb[(ni - 1)] + local xpreblend = (math.tanh(nvals_blend[(ni - 1)]) + 1) / 2 + local n_xprepath = (1 - xpreblend) * nvals_patha[(ni - 1)] + + xpreblend * nvals_pathb[(ni - 1)] + --local n_xprepatha = nvals_patha[(ni - 1)] + --local n_xprepathb = nvals_pathb[(ni - 1)] for x = x0 - 4, x1 + 4 do - local n_patha = nvals_patha[ni] - local n_pathb = nvals_pathb[ni] - local n_zprepatha = nvals_patha[(ni - pmapdim)] - local n_zprepathb = nvals_pathb[(ni - pmapdim)] + local blend = (math.tanh(nvals_blend[ni]) + 1) / 2 + local n_path = (1 - blend) * nvals_patha[ni] + blend * nvals_pathb[ni] + --local n_patha = nvals_patha[ni] + --local n_pathb = nvals_pathb[ni] + local zpreblend = (math.tanh(nvals_blend[(ni - pmapdim)]) + 1) / 2 + local n_zprepath = (1 - zpreblend) * nvals_patha[(ni - pmapdim)] + + zpreblend * nvals_pathb[(ni - pmapdim)] + --local n_zprepatha = nvals_patha[(ni - pmapdim)] + --local n_zprepathb = nvals_pathb[(ni - pmapdim)] -- Detect sign change of noise - if (n_patha >= 0 and n_xprepatha < 0) - or (n_patha < 0 and n_xprepatha >= 0) - or (n_patha >= 0 and n_zprepatha < 0) - or (n_patha < 0 and n_zprepatha >= 0) + if (n_path >= 0 and n_xprepath < 0) + or (n_path < 0 and n_xprepath >= 0) + or (n_path >= 0 and n_zprepath < 0) + or (n_path < 0 and n_zprepath >= 0) then - or (n_pathb >= 0 and n_xprepathb < 0) - or (n_pathb < 0 and n_xprepathb >= 0) - or (n_pathb >= 0 and n_zprepathb < 0) - or (n_pathb < 0 and n_zprepathb >= 0)-- then + --(n_patha >= 0 and n_xprepatha < 0) + --or (n_patha < 0 and n_xprepatha >= 0) + --or (n_patha >= 0 and n_zprepatha < 0) + --or (n_patha < 0 and n_zprepatha >= 0) + + --or (n_pathb >= 0 and n_xprepathb < 0) + --or (n_pathb < 0 and n_xprepathb >= 0) + --or (n_pathb >= 0 and n_zprepathb < 0) + --or (n_pathb < 0 and n_zprepathb >= 0) -- Smooth corners of junctions - or math.pow(math.abs(n_patha), 0.1) * - math.pow(math.abs(n_pathb), 0.1) < 0.5 then + --or math.pow(math.abs(n_patha), 0.1) * + --math.pow(math.abs(n_pathb), 0.1) < 0.5 then -- Place track brush of radius 4 for k = -4, 4 do local vi = area:index(x - 4, pathy, z + k) @@ -162,8 +188,9 @@ minetest.register_on_generated(function(minp, maxp, seed) end ni = ni + 1 - n_xprepatha = n_patha - n_xprepathb = n_pathb + n_xprepath = n_path + --n_xprepatha = n_patha + --n_xprepathb = n_pathb end end