This morning while I waited for Shatterglass to login for a list I needed I worked on the Map Editor and have made some progress.
Notes:
The program now displays at the furthest level of zoom out by default
The programs view area has been taken down to 512 x 512 instead of 3072 x 3072 (3072x3072 now available on zoom x 6)
The program should now be able to open map after map instead of having to reset the program on each unique map load.
Zooming System rewritten and working flawlessly
Moving main map works flawlessly up to x5.5 zoom @ 6 something goes wrong, tried several times to figure it out maybe I just suck (Look at GUI.MINIMAP_MOUSE_DOWN)
Drawing mini map focus rectangle works up to x5 zoom and then bugs(Look at MAP.SET_MINIMAP_FOCUS)
VIEW menu has been removed
Load Button added below mini map
Map Parts (NFA, C, S etc..) are now only loaded when they are checked above the load button
The program now uses the /NFA/ folder to create the map list
NFE may be added next release if I can get some help working on the MAP.SET_MINIMAP_FOCUS and GUI.MINIMAP_MOUSE_DOWN issues solved.
I looked into nfm files as they contain the terrain map.
The format of terrain data is:
Code:
struct NFM_HEADER_V22
{
char szSign[16];
unsigned int dwVersion;
unsigned int dwMapPropertiesOffset;
unsigned int dwTerrainSegmentOffset; //the offset in file to terrain data with vertex heights
unsigned int dwPropOffset;
unsigned int dwVectorAttrOffset;
unsigned int dwWaterOffset;
unsigned int dwGrassColonyOffset;
unsigned int dwEventAreaOffset;
int nTileCountPerSegment;
int nSegmentCountPerMap;
float fTileLength;
};
struct TerrainSegments
{
NFM_SEGMENTHEADER_V11 segments[4096]; //matrix of 64x64 of NFM_SEGMENTHEADER_V11 structure
};
struct NFM_SEGMENTHEADER_V11 //information about one segment
{
unsigned int dwVersion;
unsigned __int16 tile[3];
NFM_VERTEXSTRUCT_V11 vertices[36];
};
struct NFM_VERTEXSTRUCT_V11
{
float fHeight; //the height of the vertex
unsigned int wFillBits[2];
unsigned __int64 wAttribute;
KTripleColor Color;
};
I don't know for the other fields, I think it's about the terrain ground texture (one bit per type maybe, 0 being grass)
4096 is in fact 64x64 which as the map contains a grid of 64x64 segments (which each segments contains 6x6 tiles which contains information about a vertex)
Here is an image of the data (heights of all vertices in m009_004.nfm, which is the map with horizon) (using matlab to convert matrix of float to a gray scale heightmap image, blender to create the terrain with the heightmap and a screenshot of TSP's map editor to have the texture (which is projected on the map, yes the method is bad ^^ but it was faster than merging image using another tool)
I looked into nfm files as they contain the terrain map.
The format of terrain data is:
Code:
struct NFM_HEADER_V22
{
char szSign[16];
unsigned int dwVersion;
unsigned int dwMapPropertiesOffset;
unsigned int dwTerrainSegmentOffset; //the offset in file to terrain data with vertex heights
unsigned int dwPropOffset;
unsigned int dwVectorAttrOffset;
unsigned int dwWaterOffset;
unsigned int dwGrassColonyOffset;
unsigned int dwEventAreaOffset;
int nTileCountPerSegment;
int nSegmentCountPerMap;
float fTileLength;
};
struct TerrainSegments
{
NFM_SEGMENTHEADER_V11 segments[4096]; //matrix of 64x64 of NFM_SEGMENTHEADER_V11 structure
};
struct NFM_SEGMENTHEADER_V11 //information about one segment
{
unsigned int dwVersion;
unsigned __int16 tile[3];
NFM_VERTEXSTRUCT_V11 vertices[36];
};
struct NFM_VERTEXSTRUCT_V11
{
float fHeight; //the height of the vertex
unsigned int wFillBits[2];
unsigned __int64 wAttribute;
KTripleColor Color;
};
I don't know for the other fields, I think it's about the terrain ground texture (one bit per type maybe, 0 being grass)
4096 is in fact 64x64 which as the map contains a grid of 64x64 segments (which each segments contains 6x6 tiles which contains information about a vertex)
Here is an image of the data (heights of all vertices in m009_004.nfm, which is the map with horizon) (using matlab to convert matrix of float to a gray scale heightmap image, blender to create the terrain with the heightmap and a screenshot of TSP's map editor to have the texture (which is projected on the map, yes the method is bad ^^ but it was faster than merging image using another tool)
Due to the attention this thing is attracting I will add NFE tonight or tomorrow and get a more polished version of the editor out and ready for use. If anyone could help me out with the things I mentioned in the last post like SET_MINIMAP_FOCUS (Draws weird at x5.5+ zoom) and why MINIMAP_MOUSE_DOWN has problems moving the map @ x6 ZOOM that would be greatly appreciated.
THAT IMAGE IS SO BOSS @ Glandu2 and thanks for the NFM info, you think I should write an info reader into the program for NFM (would anyone be willing to tackle drawing the raw data into a 3d model inside of the program or would it be better to just convert NFM to blender?)
Due to the attention this thing is attracting I will add NFE tonight or tomorrow and get a more polished version of the editor out and ready for use. If anyone could help me out with the things I mentioned in the last post like SET_MINIMAP_FOCUS (Draws weird at x5.5+ zoom) and why MINIMAP_MOUSE_DOWN has problems moving the map @ x6 ZOOM that would be greatly appreciated.
THAT IMAGE IS SO BOSS @ Glandu2 and thanks for the NFM info, you think I should write an info reader into the program for NFM (would anyone be willing to tackle drawing the raw data into a 3d model inside of the program or would it be better to just convert NFM to blender?)
I think using blender would be better, as the 3D stuff is already done by blender. But loading a map is somewhat heavy as there are 5 308 416 vertex ... so some operations can take time to complete on some computers. The most interesting thing of blender is the possibility to edit the map (and the import of the terrain data should be much easier than btrf files, but I still don't know how the terrain texture is computed, which is mandatory to be able to write a correct terrain (or else it would be full of grass I think))
But maybe other tools exists especially made for terrain editing and that support many vertex better than blender, but its plugin architecture allow to do pretty much everything someone want.
I think using blender would be better, as the 3D stuff is already done by blender. But loading a map is somewhat heavy as there are 5 308 416 vertex ... so some operations can take time to complete on some computers. The most interesting thing of blender is the possibility to edit the map (and the import of the terrain data should be much easier than btrf files, but I still don't know how the terrain texture is computed, which is mandatory to be able to write a correct terrain (or else it would be full of grass I think))
But maybe other tools exists especially made for terrain editing and that support many vertex better than blender, but its plugin architecture allow to do pretty much everything someone want.
; Terrain texture information file
;
;
; TEXTURE = [ number] [ filename]
; Numbers are within the range of 0 to 65535 , the file name of the texture image file
; Numbers must be in order to map the tool does not need to appear in numerical order .
; The middle of the missing number is okay even if one should not be duplicated . ( To be redundant if it is selected in the bottom . )
;
; CATEGORY = [ Texture Classification Name
; Map for identifying the name of the editor . Redundancy may be in use .
;
; DETAIL = [ detail texture mapping ratio ]
: 1 1 when the texture is mapped to one per tile , a number is mapped to a significantly larger .
: YES) 0.5 when half of the texture size is reduced Come one aspect per tile the texture is mapped to four ,
; 4 when four of the aspect of the tile that is, one piece of the texture 16 is mapped in tiles .
;
; CATEGORY and TEXTURE DETAIL item is set to appear after the item is affected.
;
; The space character (blank) is not to be used .
; Cheotkan in line with a semicolon ( ;) , you are treated as a comment .
;
; ========= Categorization : by region / Deva, Asura , Horizon , Rondo ...
; ========= ID format
; Five basic positions ; most front seat : detail / second : Vegetation Classification / third : Color
; The fourth , fifth : the number
; Vegetation type , number of colors , such as when it is small or if the classification is ambiguous , just zero .
;
; Detail: 2 = 2 magnification / 4 = 4 Scale
; Location: Deva, Asura = 1 = 2 Rondo Horizon = 3 = 4 = 5 Public = 0 , Crete
; Vegetation Classification: 1 = Green Pool / 2 = 3 = yellow full soil ( sand included) / 4 = rock / 5 = cobble / 6 = Tile / 0 = Other
; Rooms: 01-99
;
; 05-09-29 Hong Seung light : Category largely tied to the concept of beoryeoteum
;=========================================================
;=========================================================
;---------------------------------
;---------------------------------
DETAIL=2
CATEGORY=라크시필드(x2)
;라크시/풀/녹색(X2)
TEXTURE=21101,
TEXTURE=21102,
TEXTURE=21103,
TEXTURE=21104,
TEXTURE=21105,
TEXTURE=21106,
TEXTURE=21107,
TEXTURE=21108,
TEXTURE=21109,
TEXTURE=21110,
;라크시/풀/황색(X2)
TEXTURE=21201,
TEXTURE=21202,
TEXTURE=21203,
TEXTURE=21204,
TEXTURE=21205,
TEXTURE=21206,
TEXTURE=21207,
TEXTURE=21208,
TEXTURE=21209,
;라크시/흙,바위,자갈(X2)
;흙
TEXTURE=21301,
TEXTURE=21302,
;바위
TEXTURE=21401,
TEXTURE=21402,
TEXTURE=21403,common_rock001.DDS
;11월 11일 추가
TEXTURE=21404,COMMON_TERRAIN_ROCK001.DDS
TEXTURE=21405,COMMON_TERRAIN_ROCK001_2.dds
TEXTURE=21406,COMMON_TERRAIN_ROCK001_4.dds
TEXTURE=21407,COMMON_TERRAIN_ROCK001_3.dds
TEXTURE=21408,COMMON_TERRAIN_ROCK001_5.DDS
;자갈
TEXTURE=21501,
;마르두카 군락지
TEXTURE=44361,de_marduka_soil_tile01.dds
TEXTURE=44362,de_marduka_soil_tile02.dds
TEXTURE=44363,de_marduka_soil_tile03.dds
TEXTURE=44364,de_marduka_soil_tile04.dds
TEXTURE=44367,de_marduka_soil_tile05.dds
TEXTURE=44368,de_marduka_gravel_tile01.dds
TEXTURE=44369,de_marduka_sand_tile01.dds
TEXTURE=44370,de_marduka_gravel_tile02.dds
TEXTURE=44371,de_marduka_grass_tile01.dds
TEXTURE=44381,de_mare_stone_ctile01.dds
TEXTURE=44382,de_mare_stone_ctile02.dds
;마레마을
TEXTURE=44383,de_mare_grass_tile02.dds
TEXTURE=44384,de_mare_grass_tile01.dds
;도시 유적
TEXTURE=44389,de_cityruin_rock_ctile01.dds
TEXTURE=44390,de_cityruin_rock_tile02.dds
TEXTURE=44395,de_cityruin_rock_tile01.dds
TEXTURE=44397,de_cityruin_rock_ctile02.dds
;요정의 숲,페어리
TEXTURE=44476,de_elvenforrest_grass_tile01.dds
TEXTURE=44468,de_elvenforrest_grass_tile02.dds
TEXTURE=44469,de_elvenforrest_grass_tile03.dds
TEXTURE=44470,de_elvenforrest_grass_tile04.dds
TEXTURE=44471,de_elvenforrest_grass_tile05.dds
TEXTURE=44472,de_elvenforrest_grass_tile06.dds
TEXTURE=44473,de_elvenforrest_grass_tile07.dds
TEXTURE=44479,de_fairyhouse_stone_01.dds
;---------------------------------
DETAIL=4
CATEGORY=라크시필드(x4)
;라크시/풀/녹색(X4)
TEXTURE=41101,
TEXTURE=41102,
TEXTURE=41103,
TEXTURE=41104,
TEXTURE=41105,
TEXTURE=41106,
TEXTURE=41107,
TEXTURE=41108,
TEXTURE=41109,
TEXTURE=41110,
;데바/풀/황색(x4)
TEXTURE=41201,
TEXTURE=41202,
TEXTURE=41203,
TEXTURE=41204,
TEXTURE=41205,
TEXTURE=41206,
TEXTURE=41207,
;데바/흙,바위,자갈/(x4)
;흙
TEXTURE=41301,
TEXTURE=41302,
;바위
TEXTURE=41401,
TEXTURE=41402,
;자갈
TEXTURE=41501,
;=========================================================
DETAIL=2
CATEGORY=카탄(x2)
;카탄/풀(x2)
TEXTURE=22101,zone002_grass001.dds
TEXTURE=22102,zone002_grass002.dds
TEXTURE=22103,zone002_grass003.dds
TEXTURE=22104,zone002_grass004.DDS
TEXTURE=22105,zone002_grass005.DDS
TEXTURE=44341,w002_katan_t_grass002.dds
TEXTURE=44342,w002_katan_t_grass001.dds
;카탄/흙(x2)
TEXTURE=22301,zone002_earth001.dds
TEXTURE=22302,zone002_earth002.dds
TEXTURE=22303,zone002_earth003.dds
TEXTURE=22304,zone003_earth001.DDS
TEXTURE=22305,
TEXTURE=22306,
TEXTURE=22307,zone002_mud001.DDS
TEXTURE=22308,
;카탄/바위,자갈(x2)
TEXTURE=22401,zone002_rock001.DDS
TEXTURE=22402,zone002_rock002.DDS
TEXTURE=22403,ASVIL_TERRAIN_ROCK998.DDS
TEXTURE=22404,ASVIL_TERRAIN_ROCK999.DDS
;10월 26일 추가, 화형터 타일
TEXTURE=22405,ZONE004_TERRAIN_ROCK001_1.DDS
TEXTURE=22406,ZONE004_TERRAIN_ROCK001_2.DDS
TEXTURE=22501,zone003_stone001.DDS
TEXTURE=44531,ZONE004_TERRAIN_ROCK001_3.DDS
;단절의 장벽
TEXTURE=42610,ceriu_barrier_gravel_tile01.dds
TEXTURE=42611,ceriu_barrier_stone_tile01.dds
TEXTURE=42613,ceriu_barrier_grass_tile01.dds
;메시호
TEXTURE=44421,kathan_messi_grass_tile01.dds
;침묵의 습지
TEXTURE=44424,kathan_messi_grass_tile02.dds
TEXTURE=44423,kathan_messi_grass_tile03.dds
;---------------------------------
DETAIL=4
CATEGORY=카탄(x4)
;카탄/풀(X4)
TEXTURE=42101,zone002_grass001.dds
TEXTURE=42102,zone002_grass002.dds
TEXTURE=42103,zone002_grass003.dds
TEXTURE=42104,zone002_grass004.DDS
TEXTURE=42105,zone002_grass005.DDS
;카탄/바위,자갈(x4)
TEXTURE=42401,zone002_rock001.DDS
TEXTURE=42402,zone002_rock002.DDS
TEXTURE=42501,zone003_stone001.DDS
;=========================================================
DETAIL=2
CATEGORY=호라이즌(X2)
;호라이즌/풀/녹색
TEXTURE=0,
TEXTURE=23102,
TEXTURE=23103,
TEXTURE=23104,
TEXTURE=23105,
TEXTURE=44339,
TEXTURE=44340,
;대나무숲 풀타일
TEXTURE=23106,
;호라이즌/흙
TEXTURE=23301,
TEXTURE=23302,
TEXTURE=23303,
TEXTURE=23304,
;대나무숲 바위타일
TEXTURE=23305,ZONE005_BRICK001.DDS
;호라이즌/바위,자갈
;바위
TEXTURE=23401,
TEXTURE=23402,
TEXTURE=23403,
;자갈
TEXTURE=23501,zone005_stone001.DDS
TEXTURE=23502,zone005_stone002.DDS
TEXTURE=23503,zone005_stone003.DDS
TEXTURE=23504,zone005_stone004.DDS
;초보자마을용 절벽(바위)타일
TEXTURE=23505,NOVICE_TERRAIN_ROCK001.DDS
TEXTURE=23506,NOVICE_TERRAIN_ROCK001_2.DDS
TEXTURE=23507,NOVICE_TERRAIN_ROCK001_3.DDS
;암염 광산
TEXTURE=44399,horaizen_yak_grass_tile01.dds
TEXTURE=44401,horaizen_yak_soil_tile01.dds
TEXTURE=44396,horaizen_halite_ sand_tile02.dds
TEXTURE=44391,horaizen_halite_ rock_tile01.dds
TEXTURE=44392,horaizen_halite_ sand_tile01.dds
TEXTURE=42614,horaizen_halite_ rock_tile02.dds
TEXTURE=42615,horaizen_halite_ rock_tile03.DDs
;---------------------------------
DETAIL=4
CATEGORY=호라이즌(x4)
;호라이즌/풀/녹색(X4)
TEXTURE=43101,
TEXTURE=43102,
TEXTURE=43103,
TEXTURE=43104,
TEXTURE=43105,
;호라이즌/흙/(x4)
TEXTURE=43301,
TEXTURE=43302,
TEXTURE=43303,
TEXTURE=43304,
;호라이즌/바위,자갈/(x4)
;바위
TEXTURE=43401,
TEXTURE=43402,
TEXTURE=43403,
;자갈
TEXTURE=43501,zone005_stone001.DDS
TEXTURE=43502,zone005_stone002.DDS
TEXTURE=43503,zone005_stone003.DDS
TEXTURE=43504,zone005_stone004.DDS
;초보자마을용 절벽(바위)타일
TEXTURE=43505,NOVICE_TERRAIN_ROCK001.DDS
TEXTURE=43506,NOVICE_TERRAIN_ROCK001_2.DDS
TEXTURE=43507,NOVICE_TERRAIN_ROCK001_3.DDS
;=========================================================
DETAIL=2
CATEGORY=기타 바닥재질(x2)
;데바용
TEXTURE=21601,
;템플러 헤드쿼터용...이라고 나왔지만 사실상 범용
TEXTURE=21602,ZONE001_TEMPL_BRICK001.DDS
TEXTURE=21603,ZONE001_TEMPL_BRICK002.DDS
TEXTURE=21604,ZONE001_TEMPL_BRICK003.DDS
TEXTURE=21605,ZONE001_TEMPL_BRICK004.DDS
TEXTURE=21606,ZONE001_TEMPL_BRICK005.DDS
TEXTURE=21607,ZONE001_TEMPL_BRICK006.DDS
;아수라용
TEXTURE=22601,zone002_brick001.dds
TEXTURE=22602,zone003_brick001.DDS
;11월 11일 추가. 공용
TEXTURE=20601,COMMON_TERRAIN_BRICK001.DDS
TEXTURE=20602,COMMON_TERRAIN_BRICK002.DDS
TEXTURE=20603,COMMON_TERRAIN_BRICK003.DDS
TEXTURE=20604,COMMON_TERRAIN_BRICK004.DDS
;---------------------------------
DETAIL=4
CATEGORY=기타 바닥재질(x4)
;데바용
TEXTURE=41601,
;템플러 헤드쿼터용...이라고 나왔지만 사실상 범용
TEXTURE=41602,ZONE001_TEMPL_BRICK001.DDS
TEXTURE=41603,ZONE001_TEMPL_BRICK002.DDS
TEXTURE=41604,ZONE001_TEMPL_BRICK003.DDS
TEXTURE=41605,ZONE001_TEMPL_BRICK004.DDS
TEXTURE=41606,ZONE001_TEMPL_BRICK005.DDS
TEXTURE=41607,ZONE001_TEMPL_BRICK006.DDS
;아수라용
TEXTURE=42601,zone002_brick001.dds
TEXTURE=42602,zone003_brick001.DDS
;=========================================================
DETAIL=2
CATEGORY=론도(X2)
;녹색 풀타일
TEXTURE=24101,COMMON_TERRAIN_GRASS001.DDS
TEXTURE=24102,COMMON_TERRAIN_GRASS001_2.dds
TEXTURE=24103,COMMON_TERRAIN_GRASS002.dds
TEXTURE=24104,COMMON_TERRAIN_GRASS002_2.dds
TEXTURE=44313,w004_rondo_t_grass010.dds
TEXTURE=44314,w004_rondo_t_grass004.dds
TEXTURE=44315,w004_rondo_t_grass003.dds
TEXTURE=44316,w004_rondo_t_grass002.dds
TEXTURE=44317,w004_rondo_t_grass001.dds
TEXTURE=44327,w004_rondo_t_grass010.dds
TEXTURE=44328,w004_rondo_t_grass011.DDS
TEXTURE=44329,w004_rondo_t_grass012.dds
TEXTURE=44330,w004_rondo_t_grass013.dds
TEXTURE=44331,w004_rondo_t_grass014.DDS
TEXTURE=44332,w004_rondo_t_flower_03.dds
TEXTURE=44333,w004_rondo_t_flower.DDS
TEXTURE=44334,w004_rondo_t_etc001.DDS
TEXTURE=44336,w004_rondo_t_grass015.dds
TEXTURE=44338,w004_rondo_t_grass017.dds
;흙타일
TEXTURE=24301,COMMON_TERRAIN_EARTH001.DDS
TEXTURE=24302,COMMON_TERRAIN_EARTH001_2.DDS
TEXTURE=44309,w004_rondo_t_earth001.DDS
TEXTURE=44318,w004_rondo_t_earth002.dds
TEXTURE=44322,w004_rondo_t_etc001.DDS
TEXTURE=44323,w004_rondo_t_rock002.DDS
TEXTURE=44324,w004_rondo_t_rock002_2.dds
TEXTURE=44325,w004_rondo_t_earth004.dds
TEXTURE=44326,w004_rondo_t_earth002.dds
;론도바닥
TEXTURE=44357,w004_rondo_v001_p_terrain_13.dds
TEXTURE=44304,w004_rondo_v001_p_terrain_14.dds
TEXTURE=44305,w004_rondo_v001_p_terrain_15.dds
TEXTURE=44310,w004_rondo_v001_t_brick003.dds
TEXTURE=44311,w004_rondo_v001_t_brick002.dds
TEXTURE=44312,w004_rondo_v001_t_brick001.dds
TEXTURE=44356,rondoh_market_stone_ctile01.dds
;수정의산
TEXTURE=44306,w004_crystal_ROCK001.DDS
TEXTURE=44307,w004_crystal_ROCK001_2.DDS
TEXTURE=44308,w004_crystal_ROCK001_3.DDS
TEXTURE=44319,w004_crystal_ROCK001_5.DDS
TEXTURE=44320,w004_crystal_ROCK001_6.DDS
TEXTURE=44321,w004_crystal_ROCK001_4.dds
TEXTURE=44380,w004_crystal_ROCK001_7.DDS
TEXTURE=44378,w004_crystal_ROCK001_8.DDS
TEXTURE=44379,w004_crystal_ROCK001_9.DDS
;팔미르 고원
TEXTURE=44385,rondoh_palmir_rock_tile01.dds
TEXTURE=44386,rondoh_palmir_sand_tile01.dds
TEXTURE=44387,rondoh_palmir_rock_tile02.dds
TEXTURE=44388,rondoh_palmir_gravel_tile01.dds
;세리우 사막
TEXTURE=44483,ceriuh_ceriuh_stone_tile03.dds
TEXTURE=44484,ceriuh_ceriuh_gravel_tile01.dds
TEXTURE=44486,ceriuh_ceriuh_gravel_tile02.dds
TEXTURE=44490,ceriuh_ceriuh_sand_tile01.dds
TEXTURE=44491,ceriuh_ceriuh_sand_tile02.dds
TEXTURE=44492,ceriuh_ceriuh_soil_tile01.dds
;여명의 과수원,붉은 농장
TEXTURE=44465,rondoh_orchard_stone_tile01.dds
TEXTURE=44466,rondoh_crimsonfarm_grass_tile03.dds
TEXTURE=44425,rondoh_crimsonfarm_brick_tile01.dds
TEXTURE=44467,rondoh_crimsonfarm_grass_tile02.dds
TEXTURE=44427,rondoh_crimsonfarm_grass_tile01.dds
TEXTURE=44428,rondoh_crimsonfarm_soil_tile02.dds
TEXTURE=44429,rondoh_crimsonfarm_soil_tile01.dds
TEXTURE=44430,event_halloween_cemetry_GRASS02.dds
TEXTURE=44431,rondoh_orchard_stone_tile03.dds
TEXTURE=44433,rondoh_crimsonfarm_brick_tile02.dds
TEXTURE=44436,rondoh_orchard_stone_tile02.dds
DETAIL=4
CATEGORY=론도(X4)
TEXTURE=44434,rondoh_orchard_stone_tile03.dds
TEXTURE=44435,rondoh_crimsonfarm_brick_tile02.dds
TEXTURE=44437,rondoh_orchard_stone_tile02.dds
;세리우 사막
TEXTURE=44480,ceriuh_ceriuh_stone_tile01.dds
TEXTURE=44481,ceriuh_ceriuh_stone_tile02.dds
TEXTURE=44482,ceriuh_ceriuh_stone_tile03.dds
TEXTURE=44485,ceriuh_ceriuh_gravel_tile01.dds
TEXTURE=44488,ceriuh_ceriuh_gravel_tile02.dds
TEXTURE=44489,ceriuh_ceriuh_gravel_tile03.dds
TEXTURE=44493,ceriuh_ceriuh_sand_tile01.dds
TEXTURE=44494,ceriuh_ceriuh_sand_tile02.dds
TEXTURE=44495,ceriuh_ceriuh_soil_tile01.dds
;녹색 풀타일
TEXTURE=44101,COMMON_TERRAIN_GRASS001.DDS
TEXTURE=44102,COMMON_TERRAIN_GRASS001_2.dds
TEXTURE=44103,COMMON_TERRAIN_GRASS002.dds
TEXTURE=44104,COMMON_TERRAIN_GRASS002_2.dds
;흙타일. 거의 사막용
TEXTURE=44301,COMMON_TERRAIN_EARTH001.DDS
TEXTURE=44302,COMMON_TERRAIN_EARTH001_2.DDS
;=========================================================
DETAIL=2
CATEGORY=던전(X2)
TEXTURE=44303,dun_t_black.dds
TEXTURE=44344,dungeon_crystal_tile001a.dds
TEXTURE=44345,dungeon_crystal_tile002a.dds
TEXTURE=44346,dungeon_crystal_tile003a.dds
TEXTURE=44347,dungeon_crystal_tile004.dds
TEXTURE=44348,dungeon_crystal_tile005.dds
TEXTURE=44349,dungeon_crystal_tile006.dds
TEXTURE=44350,dungeon_crystal_tile009.dds
TEXTURE=44351,dungeon_crystal_tile008.dds
TEXTURE=44352,dungeon_crystal_tile007.dds
TEXTURE=44353,dungeon_crystal_tile010.dds
TEXTURE=44354,dungeon_crystal_ctile01.dds
TEXTURE=44355,dungeon_crystal_ctile02.dds
;메마른 달빛유적 타일
TEXTURE=44377,ceriu_moonlight_sand_ctile01.dds
TEXTURE=44358,ceriu_moonlight_sand_ctile02.dds
TEXTURE=44359,ceriu_moonlight_sand_ctile03.dds
TEXTURE=44372,dungeon_moonlight_soil_ctile05.dds
TEXTURE=44373,dungeon_moonlight_soil_ctile04.dds
TEXTURE=44374,dungeon_moonlight_soil_ctile08.dds
TEXTURE=44375,dungeon_moonlight_soil_ctile06.dds
TEXTURE=44376,dungeon_moonlight_soil_ctile07.dds
;팔미르 던전 타일
TEXTURE=44404,dungeon_palmir_ctile01.dds
TEXTURE=44403,dungeon_palmir_stone_tile01.dds
TEXTURE=44405,dungeon_palmir_stone_tile02.dds
TEXTURE=44406,dungeon_palmir_stone_tile03.dds
TEXTURE=44407,dungeon_palmir_stone_tile05.dds
TEXTURE=44408,dungeon_palmir_secret_ctile01.dds
TEXTURE=44409,dungeon_palmir_secret_ctile02.dds
TEXTURE=44410,dungeon_palmir_secret_ctile03.dds
TEXTURE=44411,dungeon_palmir_stone_tile04.dds
TEXTURE=44412,dungeon_palmir_stone_tile07.dds
TEXTURE=44413,dungeon_palmir_stone_tile08.dds
TEXTURE=44414,dungeon_palmir_crypt_ctile01.dds
TEXTURE=44415,dungeon_palmir_crypt_ctile02.dds
TEXTURE=44416,dungeon_palmir_crypt_ctile03.dds
TEXTURE=44417,dungeon_palmir_ctile01_1.dds
TEXTURE=44418,dungeon_palmir_stone_tile03_1.dds
TEXTURE=44419,dungeon_palmir_stone_tile05_1.dds
TEXTURE=44420,dungeon_palmir_stone_tile08_1.dds
;숨겨진 던전 (상급던전)
TEXTURE=44552,dungeon_palmir_crypt_ctile01_a.dds
TEXTURE=44553,dungeon_palmir_crypt_ctile02_a.dds
TEXTURE=44554,dungeon_crystal_tile011-1.dds
===================================
DETAIL=2
CATEGORY=할로윈 이벤트 던전 나이트메어(X2)
TEXTURE=44445,event_halloween_nightmare_rock01.dds
TEXTURE=44456,event_halloween_nightmare_rock02.dds
TEXTURE=44457,event_halloween_nightmare_GRASS01.dds
TEXTURE=44458,event_halloween_nightmare_earth01.dds
===================================
DETAIL=2
CATEGORY=할로윈 이벤트 던전 유령마을(X2)
TEXTURE=44422,event_halloween_cemetry_GRASS02.dds
TEXTURE=44461,event_halloween_cemetry_stone_ctile01.dds
TEXTURE=44462,event_halloween_cemetry_GRASS01.dds
TEXTURE=44463,event_halloween_cemetry_earth01.dds
;=========================================================
DETAIL=2
CATEGORY=잃어버린 비밀의 섬(X2)
TEXTURE=44474,Lost Secret_island_snow_01.dds
TEXTURE=44475,Lost Secret_island_snow_02.dds
TEXTURE=44477,Lost Secret_island_snow_03.dds
TEXTURE=44478,Lost Secret_island_stone_07.dds
TEXTURE=44510,Lost Secret_island_snow_04.dds
TEXTURE=44511,Lost Secret_island_tile_01.dds
;=========================================================
DETAIL=4
CATEGORY=드래곤 던전 (X4)
TEXTURE=44500,Lost Secret_island_stone_01.dds
TEXTURE=44501,Lost Secret_island_stone_02.dds
TEXTURE=44502,Lost Secret_island_stone_03.dds
TEXTURE=44503,Lost Secret_island_stone_04.dds
TEXTURE=44504,Lost Secret_island_stone_06.dds
TEXTURE=44506,Lost Secret_island_stone_08.dds
TEXTURE=44507,Lost Secret_island_stone_09.dds
TEXTURE=44508,Lost Secret_island_stone_10.dds
;=========================================================
DETAIL=2
CATEGORY=드래곤 던전 (X2)
TEXTURE=44505,Lost Secret_island_stone_05.dds
;=========================================================
DETAIL=2
CATEGORY=곰던전 (X2)
TEXTURE=44515,dungeon_bearload_stone_01.dds
TEXTURE=44516,dungeon_bearload_stone_02.dds
TEXTURE=44517,dungeon_bearload_stone_03.dds
TEXTURE=44518,dungeon_bearload_stone_04.dds
TEXTURE=44519,dungeon_bearload_stone_05.dds
TEXTURE=44520,dungeon_bearload_stone_06.dds
TEXTURE=44521,dungeon_bearload_stone_07.dds
TEXTURE=44522,dungeon_bearload_rock_01.dds
TEXTURE=44523,dungeon_bearload_soil_01.dds
TEXTURE=44524,dungeon_bearload_sand_01.dds
TEXTURE=44525,dungeon_bearload_sand_02.dds
TEXTURE=44526,dungeon_bearload_brick_01.dds
TEXTURE=44527,dungeon_bearload_enteroom_tex.dds
;=========================================================
DETAIL=2
CATEGORY=잃어버린 갱도 (X2)
TEXTURE=44528,dungeon_mineshaft_rock_001.dds
TEXTURE=44529,dungeon_mineshaft_rock_002.dds
TEXTURE=44530,dungeon_mineshaft_BRICK001.DDS
;=========================================================
;---------------------------------
DETAIL=2
CATEGORY=수련자의 섬(x2)
TEXTURE=44531,NOVICE_TERRAIN_ROCK004.dds
TEXTURE=44532,NOVICE_TERRAIN_ROCK008.dds
TEXTURE=44533,NOVICE_TERRAIN_ROCK009.dds
TEXTURE=44534,NOVICE_TERRAIN_ROCK010.dds
;=========================================================
DETAIL=4
CATEGORY=엘카시아 (X4)
TEXTURE=44535,dungeon_elkassia_tile001.dds
;=========================================================
DETAIL=2
CATEGORY=엘카시아 (X2)
TEXTURE=44536,dungeon_elkassia_tile002.dds
;=========================================================
DETAIL=2
CATEGORY=데스매치 (X2)
TEXTURE=44538,Dethmatch_tile001.dds
TEXTURE=44539,Dethmatch_tile003.dds
TEXTURE=44540,Dethmatch_tile005.dds
TEXTURE=44541,Dethmatch_tile007.dds
;=========================================================
DETAIL=4
CATEGORY=잃어버린 비밀의 섬(X4)
TEXTURE=44542,
TEXTURE=44543,
TEXTURE=44544,
;=========================================================
DETAIL=2
CATEGORY=잃어버린 비밀의 섬(X2)
TEXTURE=44545,lostisland_TERRAIN_ROCK001.dds
TEXTURE=44546,Lost_island_snow_03_dark.dds
TEXTURE=44547,Lost_island_snow_03_blue.dds
TEXTURE=44548,Lost_island_iceblue.dds
TEXTURE=44549,Lost_island_iceviolet.dds
TEXTURE=44550,Lost_island_icegreen.dds
TEXTURE=44551,
;=========================================================
DETAIL=2
CATEGORY=불카누스던전 (X2)
TEXTURE=44555,dungeon_Lavaload_tile_01.dds
TEXTURE=44556,dungeon_Lavaload_tile_02.dds
;=========================================================
DETAIL=2
CATEGORY=배틀아레나 (X2)
TEXTURE=44557,battle_arena_slaughter_start_tile01.dds
TEXTURE=44558,battle_arena_slaughter_start_tile02.dds
TEXTURE=44559,battle_arena_slaughter_start_tile03.dds
TEXTURE=44560,battle_arena_slaughter_start_tile04.dds
;=========================================================
DETAIL=2
CATEGORY=수정계곡 (X2)
TEXTURE=46570,dungeon_basecrystal_ctile01.dds
TEXTURE=46571,dungeon_basecrystal_ctile02.dds
TEXTURE=46572,dungeon_basecrystal_ctile03.dds
TEXTURE=46573,dungeon_basecrystal_ctile04.dds
TEXTURE=46574,dungeon_basecrystal_ctile05.dds
TEXTURE=46576,dungeon_basecrystal_tile02.dds
TEXTURE=46577,dungeon_basecrystal_tile01.dds
;=========================================================
DETAIL=2
CATEGORY=팔미르유적지하기지 (X2)
TEXTURE=46601,dungeon_baseparmir_stone_tile05_NEW03.dds
TEXTURE=46603,dungeon_baseparmir_stone_tile05_NEW02.dds
TEXTURE=46604,dungeon_baseparmir_stone_tile05_NEW01.dds
TEXTURE=46606,dungeon_baseparmir_ctile01_NEW03.dds
;=========================================================
DETAIL=6
CATEGORY=발모어 탄광 지하기지 (X6)
TEXTURE=45000,basemineshaft_prop_rock001.dds
DETAIL=4(X4)
TEXTURE=45001,basemineshaft_stoneground_01.dds
;=========================================================
DETAIL=2
CATEGORY=달빛 유적 지하기지 (X2)
TEXTURE=45101,basemoonlight_basictile01.dds
TEXTURE=45102,basemoonlight_basictile02.dds
TEXTURE=45103,basemoonlight_basictile03.dds
And I am pretty sure terrainseamlessworld.cfg places the maps in a manner that walking from one to another feels natural (so the map from horizon leads on to the horizon west map when exiting it from the west etc..
I think using blender would be better, as the 3D stuff is already done by blender. But loading a map is somewhat heavy as there are 5 308 416 vertex ... so some operations can take time to complete on some computers. The most interesting thing of blender is the possibility to edit the map (and the import of the terrain data should be much easier than btrf files, but I still don't know how the terrain texture is computed, which is mandatory to be able to write a correct terrain (or else it would be full of grass I think))
But maybe other tools exists especially made for terrain editing and that support many vertex better than blender, but its plugin architecture allow to do pretty much everything someone want.
I strip off my piece of code that should help, I have not figured out how summed DDS
What bytes have you modified to change the map ? Your is only the loading part ?
I have changed only the peaks of Z points and kept them back, then the problem arose with Vertex №, but as seen in the source I numbered all Vertex. Yes it is a piece of code to read Terrain. I've been thinking how to assemble these dds one each square or a paint overlay dds, but never came to the conclusion in terms of that COLLADA is unrealistic hard to implement. If you have any ideas tell me ...
Sorry for the translator...
glandu2, Please add me on Skype, I would like something to ask you, and help...
[Xsanadu]Dream, I was asking what you have changed in the nfm file to change the texture, as in your screenshot you changed the texture of a small square from grass to something else
[Xsanadu]Dream, I was asking what you have changed in the nfm file to change the texture, as in your screenshot you changed the texture of a small square from grass to something else
Ok, so
unsigned __int16 tile[3]; is the 3 textures ID for a segment (with 6x6 tiles inside)
and unsigned int wFillBits[2]; the data about which texture to apply on a tile
wFillBits[0] is the mask of the the second texture and wFillBits[1] the mask of the third texture, if neither of them are shown, the first texture is used.
A mask is 32 bits wide, with 2 bits per texture 'unit', there are a grid of 4x4 texture 'units' in a tile, and for each of these grid cells, we choose which texture to use with masks
0 don't use the texture and the maximum 3 use the texture with no transparency
So in binary:
Code:
ooppqqrr
kkllmmnn
eeffgghh
aabbccdd
with one byte per line, so aa is two bit masking the first part of the tile at the bottom right (aabbccdd is the first byte in the file)
This mask:
00000000 //msb
00000000
00001100
00000000 //lsb
Would be 0x00 0x0C 0x00 0x00 in the file.
But images is maybe better to explain maps:
A map file contains a grid of 64 x 64 segments:
Error in this screen, East direction is X and north is Y direction. A game map is 16128 game units wide (so map size is 16128x16128. 16128 = 64*6*42, tiles dimensions are 42x42 in game units)
A segment contains 6x6 tiles and can have at most 3 textures (and tiles use them with a mask):
A tile contains 4x4 positions for texture masking (aka texture splatting) (the camera is watching the south)
So east is X and north is Y and data is serialized with continuous X data
There is an error in the last screen, it's not 0x000C0000 but rather 0x00 0x0C 0x00 0x00 (which is in little endian 0x00000C00) with 0x0C the second byte
Blender support texture splatting but for a whole object, so we would need to split the map with segments as blender objects with extra vertex to have a continuous terrain (as here is no face between two blender objects) and for texture we need to associate the 3 used texture of a segment to the material of the corresponding object, with stencil texture for the masks. But blender is not meant to render and edit terrain ... so vertex can be not only moved along Z, but deformed to have something non representable as a terrain (like making holes in the terrain), so the terrain can be easily screwed up.
Textures are zoomed by DETAIL field in TerrainTextureInfo.cfg (ie, DETAIL=2 makes the texture to be on 4 tiles, 2 times wide on each direction, 1 makes the texture on one tile only, 6 makes the texture on the full segment. So DETAIL is the width and height (always a square) of the texture in tile count) The texture has it's Y inverted, the top of the texture is toward Y=0 and the bottom toward Y = +infinity (the left and right does not change, left of texture is still left of the map: west and right of texture is east)
The exact texture point center seems to be the center of a grid cell instead of an intersection (ie the grass in the last image is centered on 1,5 (with values in [0;4[). So if you go with the client on a small circle of texture, takes the coords of where you are, then mod them with 42 (tile size) and it should be either 5, 16, 26 or 37
Wow, just wow @ Glandu. I can understand what you're saying, but as I suxors at math/vertex and drawing images in general it's almost over my head. THANK you so much guys for the information you're laying down here (I almost have NFE integrated, been hectic in my personal life)
Just again, thanks to you both for all the information you're putting in this topic, before long the dream of a creating new maps or significantly altering existing ones is in all of our reach!
[Release] Source von Localclient/Object Editor,.. 09/29/2013 - Metin2 PServer Guides & Strategies - 9 Replies Kurze Vorgeschichte:
Nachdem der Localclient von passy nub relativ viel genutzt wurde und er nach einigen obszönen Posts den Localclienten kurzerhand entfernt hat und auch das Webinterface deaktiviert hat wurden seine Dateien von manchen Personen decompiled und erneut hochgeladen wurden wider seinen Willen haben wir uns entschieden sie kurzerhand offiziell zu releasen.
Das Passwort zu den .rar Archiven im Archiv ist "epvp" und enthält die kompilierten Dateien.
Die original Dateien sind...
[RELEASE+SOURCE] C# QPF Editor 08/12/2013 - Rappelz Private Server - 17 Replies http://puu.sh/3YG5q.png
p.s. Sorry for crazy theme, I use Windows High Contrast Theme :D
I would like to release a simple tool to any developer who care's to use it, this tool is simply known as "QPF Editor V1"
It can Load/Modify and Save QPF Files (Tested from e5.2-8.2)
To start everything off just open QPF Editor V1 and press load, located the qpf you wish to view/modify and double click him. If you wish to add a new prop entry scroll to the very bottom and type in your row,...
[OPEN SOURCE RELEASE] ACRE - Advanced Client Resource Editor 05/18/2013 - Rappelz Private Server - 28 Replies http://i.imgur.com/GH6P5In.png
ACRE Concept: iSmokeDrow
ACRE Founder: xXExiledXx
ACRE Primary Coder:xXExiledXx
ACRE Secondary Coder: iSmokeDrow
ACRE Associates: Xijezu, Raskim, C1ph3r
Client Epic Supported: 6.2/7.3/7.4/8.1/8.2 (Just because an epic is mentioned doesn't mean it is fully supported!)