Post your screenshots!

User avatar
Evergreen
Member
Posts: 2135
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen
Location: A forest in the midwest
Contact:

by Evergreen » Post

Sam in all of his/her glory: (made by Jordach on the logoskyblock server)

Image
Back from the dead!

mauvebic
Member
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Post

I have to give points to MVRDV though, this is the most complicated thing i've built yet, I can't imagine what the real thing will be like to build.

Image
(still not finished)
Last edited by mauvebic on Sun Aug 11, 2013 01:45, edited 1 time in total.

User avatar
Evergreen
Member
Posts: 2135
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen
Location: A forest in the midwest
Contact:

by Evergreen » Post

Pretty hilarious screenshot I got while testing facedir in nyancat rainbows:
Image
Back from the dead!

User avatar
paramat
Developer
Posts: 3700
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat
IRC: paramat
Location: UK

by paramat » Post

Mauvebic that is beautiful.

User avatar
Casimir
Member
Posts: 1206
Joined: Fri Aug 03, 2012 16:59
GitHub: CasimirKaPazi

by Casimir » Post

Image
Working on perlinore again.

mauvebic
Member
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Post

Image
Windows are done (several 1K stacks lol) - still got fix internal walls in the "cloud" part, do the balconies and rooftop terraces with greenery, two stairwells and get rid of those shadows. The next project will be simpler :p

sfan5
Moderator
Posts: 4094
Joined: Wed Aug 24, 2011 09:44
GitHub: sfan5
IRC: sfan5
Location: Germany

by sfan5 » Post

Day 4 on LogoSkyBlock:
Image
Mods: Mesecons | WorldEdit | Nuke & Minetest builds for Windows (32-bit & 64-bit)

mauvebic
Member
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Post

3 hours and spare change to place all the lights
Image
Image

User avatar
paramat
Developer
Posts: 3700
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat
IRC: paramat
Location: UK

by paramat » Post

Beautiful.

User avatar
paramat
Developer
Posts: 3700
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat
IRC: paramat
Location: UK

by paramat » Post

I love that invert explosion. Not sure what the 3rd screenshot is. Are you going to nuke the meru tower?

User avatar
PilzAdam
Member
Posts: 4026
Joined: Fri Jul 20, 2012 16:19
GitHub: PilzAdam
IRC: PilzAdam
Location: Germany

by PilzAdam » Post

Hybrid Dog wrote:I edited the nuke mod and made a big hole with vm (it took ca. 8min) (r=120):
8 minutes? oO
I tried it myself and it took more like 20 seconds. Here is the relevant code:

Code: Select all

        local vm = minetest.get_voxel_manip()
        local p1, p2 = vm:read_from_map(
            {x=-IRON_TNT_RANGE+pos.x, y=-IRON_TNT_RANGE+pos.y, z=-IRON_TNT_RANGE+pos.z},
            {x=IRON_TNT_RANGE+pos.x, y=IRON_TNT_RANGE+pos.y, z=IRON_TNT_RANGE+pos.z}
        )
        local va = VoxelArea:new{MinEdge=p1, MaxEdge=p2}
        local data = vm:get_data()
        for x=-IRON_TNT_RANGE,IRON_TNT_RANGE do
        for y=-IRON_TNT_RANGE,IRON_TNT_RANGE do
        for z=-IRON_TNT_RANGE,IRON_TNT_RANGE do
            if x*x+y*y+z*z <= IRON_TNT_RANGE * IRON_TNT_RANGE + IRON_TNT_RANGE then
                local i = va:index(pos.x+x, pos.y+y, pos.z+z)
                --activate_if_tnt(data[i], {x=pos.x+x,y=pos.y+y,z=pos.z+z}, pos, IRON_TNT_RANGE)
                data[i] = c_air
            end
        end
        end
        end
        vm:set_data(data)
        vm:write_to_map()
        vm:update_map()
Make sure that c_air is defined.
Also the mapblock sending takes long, you are faster when you just rejoin the server (or restart singleplayer).

Shire
Member
Posts: 19
Joined: Sat Jul 06, 2013 13:20

by Shire » Post

Image


A "small" part to a much larger project that I hope to complete some time soon. EDIT! I've come to the conclusion that this'll take a week or so. There's going to be four towers, each comprised of seven layers and a glass roof. The seven layers will be as followed:

22 blocks
20 blocks
18 blocks
16 blocks
14 blocks
12 blocks
10 blocks

...And then each tower will be capped by triangular, obsidian glass roof. The four towers will be connected by halls that will be eighty-six blocks in length...at an unknown height of blocks. I have no idea what'll be in the center of this.
Last edited by Shire on Wed Aug 14, 2013 02:12, edited 1 time in total.

User avatar
Inocudom
Member
Posts: 3121
Joined: Sat Sep 29, 2012 01:14
IRC: Inocudom
In-game: Inocudom

by Inocudom » Post

Shire wrote:http://i1203.photobucket.com/albums/bb3 ... cf7d4c.png


A "small" part to a much larger project that I hope to complete some time soon. EDIT! I've come to the conclusion that this'll take a week or so. There's going to be four towers, each comprised of seven layers and a glass roof. The seven layers will be as followed:

22 blocks
20 blocks
18 blocks
16 blocks
14 blocks
12 blocks
10 blocks

...And then each tower will be capped by triangular, obsidian glass roof. The four towers will be connected by halls that will be eighty-six blocks in length...at an unknown height of blocks. I have no idea what'll be in the center of this.
It looks like you are using the building_blocks mod. There is a newer version of it out than what you have. You might want to get it.

Your project looks like it could be interesting.
Last edited by Inocudom on Wed Aug 14, 2013 03:40, edited 1 time in total.

Shire
Member
Posts: 19
Joined: Sat Jul 06, 2013 13:20

by Shire » Post

Inocudom wrote:
Shire wrote:http://i1203.photobucket.com/albums/bb3 ... cf7d4c.png


A "small" part to a much larger project that I hope to complete some time soon. EDIT! I've come to the conclusion that this'll take a week or so. There's going to be four towers, each comprised of seven layers and a glass roof. The seven layers will be as followed:

22 blocks
20 blocks
18 blocks
16 blocks
14 blocks
12 blocks
10 blocks

...And then each tower will be capped by triangular, obsidian glass roof. The four towers will be connected by halls that will be eighty-six blocks in length...at an unknown height of blocks. I have no idea what'll be in the center of this.
It looks like you are using the building_blocks mod. There is a newer version of it out than what you have. You might want to get it.

Your project looks like it could be interesting.
I'll look into updating and downloading that mod then as soon as possible.
Last edited by Shire on Wed Aug 14, 2013 04:02, edited 1 time in total.

Shire
Member
Posts: 19
Joined: Sat Jul 06, 2013 13:20

by Shire » Post

Image
Due to it looking a bit thin, I think I'm going to bump it up to seven towers instead of the original four. This is just a skeleton of the first tower, just to give an idea of what it'll look like.
Last edited by Shire on Wed Aug 14, 2013 04:04, edited 1 time in total.

User avatar
vqrulane
Member
Posts: 17
Joined: Thu Dec 13, 2012 16:33

by vqrulane » Post

My current city map.
Image

User avatar
PilzAdam
Member
Posts: 4026
Joined: Fri Jul 20, 2012 16:19
GitHub: PilzAdam
IRC: PilzAdam
Location: Germany

by PilzAdam » Post

Hybrid Dog wrote:
PilzAdam wrote:
Hybrid Dog wrote:I edited the nuke mod and made a big hole with vm (it took ca. 8min) (r=120):
8 minutes? oO
I tried it myself and it took more like 20 seconds. Here is the relevant code:

Code: Select all

        local vm = minetest.get_voxel_manip()
        local p1, p2 = vm:read_from_map(
            {x=-IRON_TNT_RANGE+pos.x, y=-IRON_TNT_RANGE+pos.y, z=-IRON_TNT_RANGE+pos.z},
            {x=IRON_TNT_RANGE+pos.x, y=IRON_TNT_RANGE+pos.y, z=IRON_TNT_RANGE+pos.z}
        )
        local va = VoxelArea:new{MinEdge=p1, MaxEdge=p2}
        local data = vm:get_data()
        for x=-IRON_TNT_RANGE,IRON_TNT_RANGE do
        for y=-IRON_TNT_RANGE,IRON_TNT_RANGE do
        for z=-IRON_TNT_RANGE,IRON_TNT_RANGE do
            if x*x+y*y+z*z <= IRON_TNT_RANGE * IRON_TNT_RANGE + IRON_TNT_RANGE then
                local i = va:index(pos.x+x, pos.y+y, pos.z+z)
                --activate_if_tnt(data[i], {x=pos.x+x,y=pos.y+y,z=pos.z+z}, pos, IRON_TNT_RANGE)
                data[i] = c_air
            end
        end
        end
        end
        vm:set_data(data)
        vm:write_to_map()
        vm:update_map()
Make sure that c_air is defined.
Also the mapblock sending takes long, you are faster when you just rejoin the server (or restart singleplayer).
this is my code:

Code: Select all

local function explode(pos, range)
    local t1 = os.clock()
    local manip = minetest.get_voxel_manip()
    local width = range+1
    local emerged_pos1, emerged_pos2 = manip:read_from_map({x=pos.x-width, y=pos.y-width, z=pos.z-width},
        {x=pos.x+width, y=pos.y+width, z=pos.z+width})
    local area = VoxelArea:new({MinEdge=emerged_pos1, MaxEdge=emerged_pos2})

    local nodes = {}
    local ignore = minetest.get_content_id("ignore")
    for i = 1, get_volume(emerged_pos1, emerged_pos2) do
        nodes[i] = ignore
    end

    local c_air = minetest.get_content_id("air")

    local radius = range^2 + range
    for x=-range,range do
        for y=-range,range do
            for z=-range,range do
                local r = x^2+y^2+z^2 
                if r <= radius then
                    local np={x=pos.x+x, y=pos.y+y, z=pos.z+z}
                    local n = minetest.env:get_node(np)
                    if n.name ~= "air"
                    and n.name ~= "default:chest" then
    --                and math.random(1,2^rad) < range*8 then
                        if math.floor(math.sqrt(r) +0.5) > range-1 then
                            if math.random(1,5) >= 2 then
                                destroy_node(np)
                                if minetest.env:get_node(np).name ~= "default:chest" then
                                    nodes[area:index(np.x, np.y, np.z)] = c_air
                                end
                            elseif math.random(1,10) == 1 then
                                minetest.sound_play("default_glass_footstep", {pos = np, gain = 0.5, max_hear_distance = 4})
                            end
                        else
                            destroy_node(np)
                            if minetest.env:get_node(np).name ~= "default:chest" then
                                nodes[area:index(np.x, np.y, np.z)] = c_air
                            end
                        end
                    --[[elseif n.name == "default:chest" then
                        local p = np
                        while minetest.env:get_node({x=p.x, y=p.y-1, z=p.z}).name == "air" do
                            p.y=p.y-1

                        end

                        minetest.env:add_node(p, {name="default:chest"})
--                        copy_meta(np, p)
                        minetest.env:remove_node(np)

                        --minetest.env:get_meta(minetest.env:get_meta(pos))]]
                    end
                    activate_if_tnt(n.name, np, pos, range)
                end
            end
        end
    end
    manip:set_data(nodes)
    manip:write_to_map()
    print(string.format("[nuke] exploded in: %.2fs", os.clock() - t1))
    local t1 = os.clock()
    manip:update_map()
    print(string.format("[nuke] map updated in: %.2fs", os.clock() - t1))
end
So it's not necessary to set ignore everywhere?
You do have too much code in the time critical part.
Calling get_node() in there makes it a lot slower.
What does destroy_node() do? If it removes the node at the position then its not needed at all. Setting another value in the data of the vmanip is enough to replace a node.
I dont know how sound_play() behaves, it might be too slow.

User avatar
PilzAdam
Member
Posts: 4026
Joined: Fri Jul 20, 2012 16:19
GitHub: PilzAdam
IRC: PilzAdam
Location: Germany

by PilzAdam » Post

Hybrid Dog wrote:
PilzAdam wrote:
Hybrid Dog wrote: this is my code:

Code: Select all

local function explode(pos, range)
    local t1 = os.clock()
    local manip = minetest.get_voxel_manip()
    local width = range+1
    local emerged_pos1, emerged_pos2 = manip:read_from_map({x=pos.x-width, y=pos.y-width, z=pos.z-width},
        {x=pos.x+width, y=pos.y+width, z=pos.z+width})
    local area = VoxelArea:new({MinEdge=emerged_pos1, MaxEdge=emerged_pos2})

    local nodes = {}
    local ignore = minetest.get_content_id("ignore")
    for i = 1, get_volume(emerged_pos1, emerged_pos2) do
        nodes[i] = ignore
    end

    local c_air = minetest.get_content_id("air")

    local radius = range^2 + range
    for x=-range,range do
        for y=-range,range do
            for z=-range,range do
                local r = x^2+y^2+z^2 
                if r <= radius then
                    local np={x=pos.x+x, y=pos.y+y, z=pos.z+z}
                    local n = minetest.env:get_node(np)
                    if n.name ~= "air"
                    and n.name ~= "default:chest" then
    --                and math.random(1,2^rad) < range*8 then
                        if math.floor(math.sqrt(r) +0.5) > range-1 then
                            if math.random(1,5) >= 2 then
                                destroy_node(np)
                                if minetest.env:get_node(np).name ~= "default:chest" then
                                    nodes[area:index(np.x, np.y, np.z)] = c_air
                                end
                            elseif math.random(1,10) == 1 then
                                minetest.sound_play("default_glass_footstep", {pos = np, gain = 0.5, max_hear_distance = 4})
                            end
                        else
                            destroy_node(np)
                            if minetest.env:get_node(np).name ~= "default:chest" then
                                nodes[area:index(np.x, np.y, np.z)] = c_air
                            end
                        end
                    --[[elseif n.name == "default:chest" then
                        local p = np
                        while minetest.env:get_node({x=p.x, y=p.y-1, z=p.z}).name == "air" do
                            p.y=p.y-1

                        end

                        minetest.env:add_node(p, {name="default:chest"})
--                        copy_meta(np, p)
                        minetest.env:remove_node(np)

                        --minetest.env:get_meta(minetest.env:get_meta(pos))]]
                    end
                    activate_if_tnt(n.name, np, pos, range)
                end
            end
        end
    end
    manip:set_data(nodes)
    manip:write_to_map()
    print(string.format("[nuke] exploded in: %.2fs", os.clock() - t1))
    local t1 = os.clock()
    manip:update_map()
    print(string.format("[nuke] map updated in: %.2fs", os.clock() - t1))
end
So it's not necessary to set ignore everywhere?
You do have too much code in the time critical part.
Calling get_node() in there makes it a lot slower.
What does destroy_node() do?
It's used to preserve the items which would be dropped (I disabled it so it did nothing.):

Code: Select all

local function describe_chest()
    if math.random(5) == 1 then return "You nuked. I HAVE NOT!" end
    if math.random(10) == 1 then return "Hehe, I'm the result of your explosion hee!" end
    if math.random(20) == 1 then return "Look into me, I'm fat!" end
    if math.random(30) == 1 then return "Please don't rob me. Else you are as evil as the other persons who took my inventoried stuff." end
    if math.random(300) == 1 then return "I'll follow you until I ate you. Like I did with the other objects here..." end
    return "Feel free to take the nuked items out of me!"
end



local function set_chest(p) --add a chest if the previous one is full
    local pos = p
    while minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "air" do
        pos.y=pos.y-1
    end
    minetest.env:add_node(pos, {name="default:chest"})
    local meta = minetest.get_meta(pos)
    meta:set_string("formspec",default.chest_formspec)
    meta:set_string("infotext", describe_chest())
    local inve = meta:get_inventory()
    inve:set_size("main", 8*4)
    nuke_chestpos = pos
end

local function destroy_node(pos)
    if nuke_preserve_items then
        local drops = minetest.get_node_drops(minetest.env:get_node(pos).name)
        if nuke_drop_items then
            for _, item in ipairs(drops) do
                if item ~= "default:cobble" then
                    minetest.env:add_item(pos, item)
                end
            end
        elseif nuke_puncher ~= nil then
            local inv = nuke_puncher:get_inventory()
            if inv then
                for _, item in ipairs(drops) do
                    if inv:room_for_item("main", item) then
                        inv:add_item("main", item)
                    else
                        if nuke_chestpos == nil then
                            set_chest(pos)
                        end
                        local chestinv = minetest.get_meta(nuke_chestpos):get_inventory()
                        if not chestinv:room_for_item("main", item) then
                            set_chest(pos)
                        end
                        chestinv:add_item("main", item)
                    end
                end
            end
        end
    end
end
Maybe math.random causes the lags.
Is it faster if I use PseudoRandom?
math.random() shouldnt be a problem, you should rather not use minetest.get_node() at all. You could instead check the content ID of the chest.

mauvebic
Member
Posts: 1550
Joined: Fri Jan 27, 2012 11:32

by mauvebic » Post

Image
Image
Image

User avatar
jojoa1997
Member
Posts: 2890
Joined: Thu Dec 13, 2012 05:11
Location: Earth

by jojoa1997 » Post

Now that would be a good nether. Add a couple evels above it and put it underground and it would look like a real biome
Coding;
1X coding
3X debugging
12X tweaking to be just right

User avatar
paramat
Developer
Posts: 3700
Joined: Sun Oct 28, 2012 00:05
GitHub: paramat
IRC: paramat
Location: UK

by paramat » Post

Interesting structures and nice mese texture.

User avatar
Inocudom
Member
Posts: 3121
Joined: Sat Sep 29, 2012 01:14
IRC: Inocudom
In-game: Inocudom

by Inocudom » Post

Hybrid Dog wrote:A chunk took ca. 3s to generate.
I had to use GIMP else it would bee too dark because the calc_lighting() and update_liquids() don't work for me.
Spoiler
Spoiler
if you swim up to an lavafall (if update_liquids() would work)
or if you use a pick (the shift elevator could be useful).
http://ubuntuone.com/410pvtgm17nk4CTcDvauNU

diving...
http://ubuntuone.com/7MTaeACpaBqn5D8pk2AIRr
This nether is better than the other one.

User avatar
Mossmanikin
Member
Posts: 599
Joined: Sun May 19, 2013 16:26
Location: where we don't speak english.

by Mossmanikin » Post


Noob 4 life!
My stuff

Sokomine
Member
Posts: 4276
Joined: Sun Sep 09, 2012 17:31
GitHub: Sokomine
IRC: Sokomine
In-game: Sokomine

by Sokomine » Post

Two sheep take a stroll at a beach, while an ostrich watches over another sheep:
Image
A list of my mods can be found here.

User avatar
Mossmanikin
Member
Posts: 599
Joined: Sun May 19, 2013 16:26
Location: where we don't speak english.

by Mossmanikin » Post

Sokomine wrote:Two sheep take a stroll at a beach, while an ostrich watches over another sheep:
http://mg.viewskew.com/mgoblin_media/me ... 470946.png
Cute. :)
That's the alternative to struggle for existence. ;)

Noob 4 life!
My stuff

Post Reply

Who is online

Users browsing this forum: No registered users and 9 guests