Bogarash[2d RPG]GM1.4

YanBG

Member
Yeah it's a bit weird, i'm still figuring which textures look better. But i have 8 different sets of walls and roofs and that makes it easier to compare. What do you think about this one(roof shingles are better too)? Did you mean the walls should be modeled out of many pieces?





 
Last edited:
F

Felipe Rybakovas

Guest
Yeah it's a bit weird, i'm still figuring which textures look better. But i have 8 different sets of walls and roofs and that makes it easier to compare. What do you think about this one(roof shingles are better too)? Did you mean the walls should be modeled out of many pieces?


Some more:




For me :

The first one
The third one but the one with the red clay bricks
the last one.


But for real, you should try use the logs from your city log walls.... remove the point and see how it goes.
 

YanBG

Member
I was working on the skills and added this outline/sprite around the icons, the big background is placeholder.

 

YanBG

Member
Good old Tanner is back, i just have to give him some boots. Here is the trick, all 3 characters in the picture are the same guy but with different clothes!

 

YanBG

Member
I'm working on the party system and decided to improve the portraits, they are rendered from 3d models(would need some 2d final touches):



I might cut them into pieces and swap beards/helms/clothes to get more variations.
 

YanBG

Member
The roofs took a few months but i finally coded the last cross section:




There are still a few things i have in mind(more than 2 rooms, 2nd floor, flat roofs etc) but it's a progress. I only wonder if there was a better way to code it(less lines). It's quite new to GM though, i migth post it as resource if people are interested.
 
F

Felipe Rybakovas

Guest
Wow! Great roofs man! Really!

I would be very glad if you share how you've done that!
 

YanBG

Member
If you like the models more too, i've changed the lighting as well.

Here is the code for script _roof:
Code:
var dist=21,xx=argument[0],yy=argument[1],bkg=argument[2];//Grid positions
var tx=(xx-yy)*TILE,ty=(xx+yy)*TILE/2-TILE*4;//Isometric positions
for(var i=0;i<array_height_2d(house);i++){//List of predefined houses
    var posx=house[i,0],posy=house[i,1],w=house[i,2],h=house[i,3],off=house[i,4]*TILE*2,d=(posx+w/2+posy+h/2)*TILE/2+TILE*50;//House parameters
    if house[i,6]>0{//Side room
    if w<h&&xx>=posx+w+1&&yy>=posy&&xx<=posx+w+house[i,6]&&yy<=posy+w{
        if house[i,5]=1{//Gable Roof
            if yy<posy+w/2{//right&up
                if !random(50)&&yy!=posy{
                    tile_add(bkg,TILE*8,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);//Chimney
                }else if !random(20)&&yy!=posy{
                    tile_add(bkg,TILE*16,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);//Skylight
                }else{
                    tile_add(bkg,0,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }
            }else{//left&bottom
                if !random(50)&&yy!=posy+w{
                    tile_add(bkg,TILE*10,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy+w{
                    tile_add(bkg,TILE*18,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*2,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }
            }
        }else{//Hip Roof
        if yy<posy+w/2{
            if xx-posx-house[i,6]<abs(yy-posy-w){
                if !random(50)&&yy!=posy{
                    tile_add(bkg,TILE*8,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy{
                    tile_add(bkg,TILE*16,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,0,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }
            }else if xx-posx-house[i,6]=abs(yy-posy-w){
                tile_add(bkg,TILE*28,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
            }
        }else{
            if xx-posx-w-house[i,6]<yy-posy-w{
                if !random(50)&&yy!=posy+w{
                    tile_add(bkg,TILE*10,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy+w{
                    tile_add(bkg,TILE*18,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*2,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }
            }else if xx-posx-w-house[i,6]=yy-posy-w{
                tile_add(bkg,TILE*24,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
            }
        }
        if xx>posx+w+house[i,6]-w/2+1{
            if yy-posy>abs(xx-posx-w-house[i,6])&&yy-posy-w<xx-posx-w-house[i,6]{
                if !random(50)&&xx!=posx+h{
                    tile_add(bkg,TILE*12,off,TILE*2,TILE*2,tx,ty-(house[i,6]-xx+posx+w)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx+w{
                    tile_add(bkg,TILE*20,off,TILE*2,TILE*2,tx,ty-(house[i,6]-xx+posx+w)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*4,off,TILE*2,TILE*2,tx,ty-(house[i,6]-xx+posx+w)*(TILE-dist),-d);
                }
            }
        }
        }
    }else if w>h&&xx>=posx&&yy>=posy+h+1&&xx<=posx+h&&yy<=posy+h+house[i,6]{
        if house[i,5]=1{//Gable Roof
            if xx<posx+h/2{
                if !random(50)&&xx!=posx{
                    tile_add(bkg,TILE*14,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx{
                    tile_add(bkg,TILE*22,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*6,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }
            }else{
                if !random(50)&&xx!=posx+h{
                    tile_add(bkg,TILE*12,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx+h{
                    tile_add(bkg,TILE*20,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*4,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }
            }
        }else{//Hip Roof
        if xx<posx+h/2{
            if yy-posy-house[i,6]<abs(xx-posx-h){
                if !random(50)&&xx!=posx{
                    tile_add(bkg,TILE*14,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx{
                    tile_add(bkg,TILE*22,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*6,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }
            }else if yy-posy-house[i,6]=abs(xx-posx-h){
                tile_add(bkg,TILE*26,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
            }
        }else{
            if yy-posy-h-house[i,6]<xx-posx-h{
                if !random(50)&&xx!=posx+h{
                    tile_add(bkg,TILE*12,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx+w{
                    tile_add(bkg,TILE*20,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*4,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }
            }else if yy-posy-h-house[i,6]=xx-posx-h{
                tile_add(bkg,TILE*24,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
            }

        }
        if yy>posy+h+house[i,6]-w/2+1{
            if xx-posx>abs(yy-posy-h-house[i,6])&&xx-posx-h<yy-posy-h-house[i,6]{
                if !random(50)&&yy!=posy+w{
                    tile_add(bkg,TILE*10,off,TILE*2,TILE*2,tx,ty-(house[i,6]-yy+posy+h)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy+w{
                    tile_add(bkg,TILE*18,off,TILE*2,TILE*2,tx,ty-(house[i,6]-yy+posy+h)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*2,off,TILE*2,TILE*2,tx,ty-(house[i,6]-yy+posy+h)*(TILE-dist),-d);
                }
            }
        }
        }
        }
    }
    if xx>=posx&&yy>=posy&&xx<=posx+w&&yy<=posy+h{
        if house[i,5]=0{//Hip Roof
        if house[i,6]>0{
            if w<h&&yy>posy+w/2&&yy<posy+w&&yy-posy-w/2<xx-posx-w/2{
                if !random(50)&&yy!=posy+h{
                    tile_add(bkg,TILE*10,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy+h{
                    tile_add(bkg,TILE*18,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*2,off,TILE*2,TILE*2,tx,ty-(w-yy+posy)*(TILE-dist),-d);
                }
            }
            if w>h&&xx>posx+h/2&&xx<posx+h&&xx-posx-h/2<yy-posy-h/2{
                if !random(50)&&xx!=posx+w{
                    tile_add(bkg,TILE*12,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx+w{
                    tile_add(bkg,TILE*20,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*4,off,TILE*2,TILE*2,tx,ty-(h-xx+posx)*(TILE-dist),-d);
                }
            }
        }
        if xx<posx+w/2{
            if yy-posy>xx-posx&&(yy-posy<abs(xx-posx-h)||(house[i,6]>0&&w>h&&xx<posx+h/2)){
                if !random(50)&&xx!=posx{
                    tile_add(bkg,TILE*14,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx{
                    tile_add(bkg,TILE*22,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*6,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }
            }else if yy-posy=xx-posx&&w<=h{
                tile_add(bkg,TILE*30,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
            }else if yy-posy=abs(xx-posx-h)&&w<=h{//||house[i,6]=0)
                tile_add(bkg,TILE*26,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
            }
        }else{
            if yy-posy-h<xx-posx-w&&yy-posy>abs(xx-posx-w)&&(house[i,6]=0||w>h||yy-posy-w>xx-posx-w){
                if !random(50)&&xx!=posx+w{
                    tile_add(bkg,TILE*12,off,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx+w{
                    tile_add(bkg,TILE*20,off,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*4,off,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
                }
            }else if house[i,6]>0&&w<h&&yy-posy-w=xx-posx-w{
                tile_add(bkg,TILE*30,off+TILE*16,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
            }else if yy-posy-h=xx-posx-w&&w<=h{
                tile_add(bkg,TILE*24,off,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
            }else if yy-posy=abs(xx-posx-w)&&w<=h{
                tile_add(bkg,TILE*28,off,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
            }

        }
        if yy<posy+h/2{
            if xx-posx>yy-posy&&(xx-posx<abs(yy-posy-w)||(house[i,6]>0&&w<h&&yy<posy+w/2)){
                if !random(50)&&yy!=posy{
                    tile_add(bkg,TILE*8,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy{
                    tile_add(bkg,TILE*16,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,0,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }
            }else if xx-posx=yy-posy&&w>h{
                tile_add(bkg,TILE*30,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
            }else if xx-posx=abs(yy-posy-w)&&w>h{
                tile_add(bkg,TILE*28,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
            }
        }else{
            if xx-posx-w<yy-posy-h&&xx-posx>abs(yy-posy-h)&&(house[i,6]=0||w<h||xx-posx-h>yy-posy-h){
                if !random(50)&&yy!=posy+h{
                    tile_add(bkg,TILE*10,off,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy+h{
                    tile_add(bkg,TILE*18,off,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*2,off,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
                }
            }else if house[i,6]>0&&w>h&&xx-posx-h=yy-posy-h{
                tile_add(bkg,TILE*30,off+TILE*16,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
            }else if xx-posx-w=yy-posy-h&&w>h{
                tile_add(bkg,TILE*24,off,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
            }else if xx-posx=abs(yy-posy-h)&&w>h&&house[i,6]=0{
                tile_add(bkg,TILE*26,off,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
            }
        }
        }else{//Gable Roof
        if w<h{
            if xx<posx+w/2{
                if !random(50)&&xx!=posx{
                    tile_add(bkg,TILE*14,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx{
                    tile_add(bkg,TILE*22,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*6,off,TILE*2,TILE*2,tx,ty-(xx-posx)*(TILE-dist),-d);
                }
            }else{
                if !random(50)&&xx!=posx+w{
                    tile_add(bkg,TILE*12,off,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
                }else if !random(20)&&xx!=posx+w{
                    tile_add(bkg,TILE*20,off,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*4,off,TILE*2,TILE*2,tx,ty-(w-xx+posx)*(TILE-dist),-d);
                }
            }
        }else{
            if yy<posy+h/2{
                if !random(50)&&yy!=posy{
                    tile_add(bkg,TILE*8,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy{
                    tile_add(bkg,TILE*16,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,0,off,TILE*2,TILE*2,tx,ty-(yy-posy)*(TILE-dist),-d);
                }
            }else{
                if !random(50)&&yy!=posy+h{
                    tile_add(bkg,TILE*10,off,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
                }else if !random(20)&&yy!=posy+h{
                    tile_add(bkg,TILE*18,off,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
                }else{
                    tile_add(bkg,TILE*2,off,TILE*2,TILE*2,tx,ty-(h-yy+posy)*(TILE-dist),-d);
                }
            }
        }
        }
    }
}
I'll have to make it prettier lol, simpler version in example project.
 
Last edited:

YanBG

Member
Yeah. Although right now since i'm switching to chunks(again) i just set their unique seed(with x/y) before (re-)generating them, so it always plays the same. Idk if it's really better for testing but i'm trying it. It's possible to release that "preset" map with the game.

But i need to add a lot more checks for detail and optimize it first.
 
F

Felipe Rybakovas

Guest
What do you think about having 90d rotation, like the old 2d sim games? Needs some more work but i can reverse/switch the tile placing:

It's good for variation, but I dont think this will add much to the game itself.
So you need to see if the cost to produce this kind of variation will pay off
 
F

Felipe Rybakovas

Guest
It would help with objects hidden behind walls but i'll focus on other stuff for now.

Like 2nd floor, there can be 3rd but it looks too tall. The transition can use a layer/level system like suggested here https://forum.yoyogames.com/index.php?threads/multiple-floors-heights-in-one-room.930/

I can use it for the caves etc too. Without adding more rooms and having no transitions/loading time.

Even thinking that is AMAZING that you are able to do it in that way.... You really think is necessary ?

Like, to you render all the 3 levels of each building (or even multiple levels in a dungeon), may be more costly than do the transition and different rooms...
I really can see many organization and draw problems you'll face in this kind of solution and maybe even performance.

Maybe for some less complex buildings (like a tavern in a city) this could be useful.... But I really think you'll have problems with multiple levels layers for more complex ones like dungeons, castles and such.
 

YanBG

Member
Yeah it might be more work, having to set all the data structures. I'm going to look at how it's done in dwarf fortress.

I can render only the visible levels, so below ground levels will be covered at all time or have the caves on the same level 0 like the main world(grass, town) but looking like a cliff from outside and inaccesible unless you go through the entrance.
Main benefit is that enemies can still chase you even if you enter a cave or a house, there will be mechanic for adding obstacles though. Imagine them burning your house from outside lol.
 

YanBG

Member
What do you think about the inventory items with black pixel outline? I looked into changing the lighting setup in Blender to be cartoon/drawn as well. My models/textures are not detailed enough for HD realistic renders so i like them more this old-school feel.

The background doesn't fit right now, so i'll update that too.

 
F

Felipe Rybakovas

Guest
What do you think about the inventory items with black pixel outline? I looked into changing the lighting setup in Blender to be cartoon/drawn as well. My models/textures are not detailed enough for HD realistic renders so i like them more this old-school feel.

The background doesn't fit right now, so i'll update that too.

I prefer without it
 

YanBG

Member
I want to have everything on the same map/room and have only one pathfinding grid. To avoid loading screens, hiding from enemies etc and to keep the open world feeling.

One option is to have several underground levels like in Dwarf Fortress, in that case i'll hide the grass from the surface because caves have a roof(rock texture instead of the green grass...for tunneling?) but i kinda like it now because it gives a better contrast.

Btw here is a tutorial for the celular automata: http://www.wesley-kerr.com/caves/
You start the usual way like most examples on the GM forums but you also add a check for 2 tiles away from the wall to further refine the cutoffs.
 
F

FROGANUS

Guest
Great to see this project coming along!

Hey those different angles might be really cool..
considering you're working with proc gen areas, it just seems like more freedom in general, give the player some control, kind of in that 'open world' direction.. do entrances spawn only at the front-side of buildings?
 

YanBG

Member
Looking awesome yan! Been keeping my eye on this for awhile now.
Thanks, feel free to point even if you don't like something :D
Great to see this project coming along!

Hey those different angles might be really cool..
considering you're working with proc gen areas, it just seems like more freedom in general, give the player some control, kind of in that 'open world' direction.. do entrances spawn only at the front-side of buildings?
Thank you! Yeah i like the camera rotation option, it's not properly implemented yet but the code idea is simple. Entrances could be on any side and between the rooms. Maybe 2nd, e.g. back door sometimes too, so you can sneak in and rob the merchant's warehouse.
it looks alot like Diablo 2. Are they the same assets?
No, i made the models but thanks! What do you think looks like Diablo 2, the player character or items/menus?
 

YanBG

Member
Long time, no see! I've just finished the graphical update for palisade and stone walls, here is the gatehouse:


I'll put it in game in the next couple of days. Any critiques?
 

CMAllen

Member
Long time, no see! I've just finished the graphical update for palisade and stone walls, here is the gatehouse:


I'll put it in game in the next couple of days. Any critiques?
Take a closer look at the size of the wood grain on your palisade gate. It's either much too large, or your gate is really tiny. It's also homogeneous across the width of the gate, which is also odd. I'd move pieces around to break up the pattern so it's less obvious. The grain should run along the length of the planks, not across them.
 

mar_cuz

Member
Long time, no see! I've just finished the graphical update for palisade and stone walls, here is the gatehouse:


I'll put it in game in the next couple of days. Any critiques?
Assets are looking great man. Can you tell me how you are making them please?
 

Morendral

Member
Take a closer look at the size of the wood grain on your palisade gate. It's either much too large, or your gate is really tiny. It's also homogeneous across the width of the gate, which is also odd. I'd move pieces around to break up the pattern so it's less obvious. The grain should run along the length of the planks, not across them.
I agree about the wood grain in the first picture, but the second one looks great. The texture on the stone is spot on
 

YanBG

Member
Take a closer look at the size of the wood grain on your palisade gate. It's either much too large, or your gate is really tiny. It's also homogeneous across the width of the gate, which is also odd. I'd move pieces around to break up the pattern so it's less obvious. The grain should run along the length of the planks, not across them.
You mean the darker brown part(e.g. door)? Yeah i can see it now. Problem is in Blender i have the planks joined into one object and then it's textured with the default UV, didn't unwrap it(i'm lazy). So it just paints the pattern over the whole door.
I could separate the planks.
Assets are looking great man. Can you tell me how you are making them please?
Thanks man! They are textured models in Blender 3d, then i make 2d renders in this isometric angle/position.

Btw would you guys prefer animated door when opened(e.g. Fallout 1/2)? For the big ones might look weird to only have 2 frames, i can imagine also cracking sounds too :D
 
Last edited:

CMAllen

Member
You mean the darker brown part(e.g. door)? Yeah i can see it now. Problem is in Blender i have the planks joined into one object and then it's textured with the default UV, didn't unwrap it(i'm lazy). So it just paints the pattern over the whole door.
I could separate the planks.

Thanks man! They are textured models in Blender 3d, then i make 2d renders in this isometric angle/position.

Btw would you guys prefer animated door when opened(e.g. Fallout 1/2)? For the big ones might look weird to only have 2 frames, i can imagine also cracking sounds too :D
Yup, that's the part. You could just up the tiling on the texture map's coordinate interface. Little less control than unwrapping, but it's quicker. Still, you should definitely move the planks around to break up the obvious singular pattern across it. Heck, you could move the planks around a bit (with snap on, so you can move them back easily) then just box-unwrap them.
 

YanBG

Member
Looking good man! Have you written much of the story yet? Or are you focusing on the game mechanics first?
Mostly game mechanics, the story is very basic. I have a few quests and i'm looking into making the world randomized. The towns can be located in different places and have different names. Also not all NPCs will be spawned in the same playthrough.


Some more pictures of the gates, i switched the wood texture mapping for the door.
 
Last edited:
Top