版主
请叫我六冷版主
    
- 贡献度
- 4718
- 金元
- 43662
- 积分
- 23238
- 精华
- 0
- 注册时间
- 2010-8-26

|
本帖最后由 hcwty289 于 2011-5-30 12:10 编辑
德语【原文点这里】
[WIP] Howto: neue Objekte erstellen und ins Spiel integrierenHoi,
bin jetzt soweit dass ich das datei format von CiM so halbwegs verstehe* und neue Objekte erstellen kann. Ist alles noch sehr work-in-progress, relativ umständlich und fehleranfällig.
aber da ich in den nächsten Wochen vorraussichtlich nicht dazu kommen werde daran weiter zu basteln, schmeiss ich das einfach so halbfertig schon unters Volk 
*) es fehlen allerdings noch so einige Sachen - wer also spass daran hat im hexeditor rumzustöbern ist herzlich eingeladen 
ich hab versucht meine bisherigen erkenntnisse in src\gs.h zu dokumentieren
mutige können auch versuchen dem restlichen Quellcode zu folgen, der ist allerdings ... uh ... nicht ganz so hübsch :p
Kurze anleitung:
Anmerkungen:
- als übergangsdateiformat hab ich Wavefronts OBJ Format benutzt. Getestet ausschließlich mit Blender.
- ggw nur eine Texture pro Objekt unterstützt(und auch nur die Textur - sonstige Material eigenschaften werden ignoriert)
- als Textureformat scheint nur DDS zu funktionieren
- etwas mehr Zeit und die Bereitschaft etwas rumprobieren zu müssen mitbringen 
1) gs_tools.zip runterladen(siehe Anhang) und entpacken
2) Modell von Blender nach OBJ exportieren( Optionen siehe Bild)
man erhält dann eine .obj und eine .mtl Datei

3) mittels gsobj_import.exe ins CiM Format konvertieren.
man erhält dann zwei dateien: output.object und output.material

4) im addon ordner einen neuen Ordner erstellen(als bsp hier 'tvtower') und darin zwei unterordner anlegen: 'scripts' und 'objects'
output.object nach addons\tvtower\objects kopieren (in einen sinnvollen Namen umbenennen: hier tvtower.object)
5) output.material nach addons\tvtower\objects kopieren und umbenennen:
! Der Name der material datei muss dem Name entsprechen den Blender beim exportieren dem Material gegeben hat
- Um den herauszufinden die bei Schritt 2 erstellte mtl datei in einem texteditor öffnen - die Zeile 'newmtl xxxxxx' gibt den Namen des Materials an(Dateiname also: xxxxx.material)
(wer mag kann diesen auch vor schritt 3) ändern, muss dann allerdings die 'usemtl' Anweisungen in der obj Datei entsprechend anpassen)
nicht vergessen die textur ebenfalls nach addons\tvtower\objects kopieren
6) in addons\tvtower\objects eine .script datei anlegen mit dem gleichen Namen wie die .object Datei (hier also tvtower.script)
in diese kommt dann

| Source code | 12345678910 | this.width = 5;this.height = 45;this.length = 5;this.flags = GRID_ITEM_COVER | GRID_ITEM_LOCK_GROUND | GRID_ITEM_ENABLE_BASE;this.diagonals = 0x0000;this.type = GRID_ITEM_BUILDING;this.displayName = "TVTower";$price = 1234500; |
$displayName und $price können beliebig angepasst werden
Größenangaben(width, height, length) errechnen scheint mit folgender Faustformel zu klappen:
man suche sich die Dimensionsangaben des Modells in Blender und dividiere durch 3 (aufrunden)

( in dieser script datei können auch noch diverse andere Sachen angepasst werden. Für inspiration einfach bei den mitgelieferten Objekten stöbern  )
7) in addons\tvtower\scripts eine datei 'environment.script' anlegen

| Source code | 123456789101112131415 | // get addon path $BasePath = extractFilePath(extractFileDir(this.scriptFilename));$ObjectPath = $BasePath + "objects/";function loadBuilding($category, $name, $model){ MAIN.$grid.loadGridObject($name, $model+".object"); if (defined MAIN.$level.$buildings[$category]) { MAIN.$level.$buildings[$category][] = $name; } else { MAIN.$level.$buildings[$category] = [$name]; }}loadBuilding("landmarks", "tvtower", $ObjectPath+"tvtower"); // lädt objects/tvtower.object |
8.) spiel sparten und hoffen das alles klappt 

wenn es nicht funktioniert:
- erster anlaufspunkt ist log_metro.txt
- .mtl/.obj dateien überprüfen ob alle namen/Dateinamen stimmen
- mit gs_dump.exe die erstellten .object/.material dateien inspizierenn ob alle Namen/Dateinamen korrekt sind
auf ein fröhlichen basteln 
中文我基本上搞清楚了CIM的文件格式[注],而且能造新东西了。虽然我的方法很菜、很烦琐,而且很容易出错……
但是下周我就不用做这些事了,到时候我就把这些文件拆解掉。(呃……这句话没看懂)
[注]:还差点东西没搞懂,希望各位想深入研究、成为编辑高手的人,尝试一下吧~(hexeditor是什么鬼词语啊……)
我将尝试把我的经验写进src\gs.h文件里。
各路大侠(他是想写“adventurers”吧)可以参照着(我这个写的不太好的)代码进行尝试。
简短说明:
注释:
- 作为一个临时文件格式,我用了(Alias)Wavefront的obj,而且只用了Blender。
- Ggw支持每个对象上只有一个纹理(而且只有这种花样,也就是说其他材料特性都会被忽略)
- 因为这是纹理格式,所以操作就像DDS(这句没懂)
- 还得再花一些时间、多一些意愿去干点事情……
1)下载gs_tools.zip(见附件),解压
2)用blender将模型导出为OBJ(选项参见图片)
将会得到.obj和.mtl的文件
3)利用gsobj_import.exe转唤到CIM里面去。
将会得到output.object和output.material两个文件
4)在addon文件夹下创建一个新文件夹(比方说把它取名为“tvtower”),再在它的底下创建scripts和objects两个文件夹,将output.object复制到addons\tvtower\objexts里(并把这个文件重命名为tvtower.object)
5)把output.material复制到addons\tvtower\objects并重命名。
注意! 该文件的名称必须配合上Blender输出的material文件的名字。
- 想找名字的话,用记事本打开第二步创建的mtl文件,找到字符串'newmtl xxxxxx',那么material文件的名字就应该是xxxxx.material。(在第三步就可以自行编辑这个名字,但是要遵守文件里“usemtl”的指导。)
别忘了把纹理文件复制到addons\tvtower\objects里面。
6)addons\tvtower\objects的创建。给script文件起一个恰当的名字(例如tvtower.script),然后写下如下代码:
this.width = 5;
this.height = 45;
this.length = 5;
this.flags = GRID_ITEM_COVER | GRID_ITEM_LOCK_GROUND | GRID_ITEM_ENABLE_BASE;
this.diagonals = 0x0000;
this.type = GRID_ITEM_BUILDING;
this.displayName = "TVTower";
$ Price = 1234500;
Displayname和price可自定义。三维大小(长宽高)应这样计算:从Blender中找到相应数据,然后除以3,并四舍五入
7)在addons\tvtower\scripts里面创建'environment.script'文件,输入代码:
/ / Get addon path
$ BasePath = extractFilePath (extractFileDir (this.scriptFilename));
$ ObjectPath = $ BasePath + "objects /";
function loadBuilding ($ category, $ name, $ model)
{
MAIN. $ Grid.loadGridObject ($ name, $ model + ". Object");
if (defined MAIN. $ level. $ buildings [$ category]) {
MAIN. $ Level. $ Buildings [$ category] [] = $ name;
} Else {
MAIN. $ Level. $ Buildings [$ category] = [$ name];
}
}
loadBuilding ("landmarks", "tvtower", $ ObjectPath + "tvtower"); / / ladt objects / tvtower.object
8)开始游戏吧,我希望一切进行顺利……
如果有东西出错了:
-查找并检查log_metro.txt (我还没试,所以不太清楚这里的操作)
-检查mtl和obj文件的标题是否正确关联
-启动gs_dump.exe,检查material和object文件的名称是否相符 |
|
俄语
Я сейчас более-менее разобрался с форматом CiM * и могу создавать новые объекты. Все еще очень сыро, относительно хлопотно и чревато ошибками.
Но так как я, видимо, в ближайшие недели не смогу заниматься этим, то я пущу это в полуготовом состоянии в народ.
*) Но еще не хватает некоторых вещей – кто хочет покопаться в hexeditor, приглашаю попробовать.
Я пытался задокументировать мой прежний опыт в src\gs.h
Отважные могут также попытаться следовать остальному исходному коду, он, конечно,... не совсем хорош
Краткая инструкция:
Примечания:
- В качестве переходного формата я использовал формат Wavefronts OBJ. Испытано исключительно с Blender.
- ggw поддерживает только одну текстуру на каждый объект (и только эту текстуру – прочие характеристики материала игнорируются)
- в качестве формата текстуры, работает, вроде только DDS
- нужно больше времени и готовности, чтобы что-то попробовать
1) скачать gs_tools.zip (см. приложение) и разархивировать
2) Экспортировать модель Blender в OBJ ( Optionen siehe Bild)
Вы получите файлы с форматами .obj и .mtl
3) С помощью gsobj_import.exe конвертировать в формат CiM.
Затем получают два файла: output.object и output.material
4) В папке addons создать новую папку (в качестве bsp здесь 'tvtower') и создать в ней две подпапки : 'scripts' и 'objects'
Копировать output.object в addons\tvtower\objects (переименовать: здесь tvtower.object)
5) Копировать output.material в addons\tvtower\objects и переименовать:
! Имя файла материала должно соответствовать имени, которое Blender при экспорте дал материалу
- Чтобы найти его, открыть созданный на шаге 2 файл mtl в текстовом редакторе - строка 'newmtl xxxxxx' даст имя материала (имя файла: xxxxx.material)
(кто хочет, может изменить его также до шага 3), но тогда должен согласовать указания 'usemtl' в файле .obj)
Не забудьте скопировать текстуру в addons\tvtower\objects.
6) В addons\tvtower\objects создайте .scripts-файл с соответствующим именем (tvtower.script, в данном случае) со следующим кодом:
this.width =
5;
this.height =
45;
this.length =
5;
this.flags = GRID_ITEM_COVER | GRID_ITEM_LOCK_GROUND | GRID_ITEM_ENABLE_BASE;
this.diagonals =
0x0000;
this.type = GRID_ITEM_BUILDING;
this.displayName =
"TVTower";
$price =
1234500;
$displayName и $price можете придумывать сами. Габариты (ширина, высота, длина) можно рассчитать по следующей формуле: находим измерения модели в Блендере и делим на 3 (с округлением)
7) В addons\tvtower\scripts создаём файл 'environment.script', в нём код:
// get addon path
$BasePath = extractFilePath(extractFileDir(this.scriptFilename));
$ObjectPath = $BasePath +
"objects/";
function loadBuilding($category, $name, $model)
{
MAIN.$grid.loadGridObject($name, $model+".object");
if
(defined MAIN.$level.$buildings[$category])
{
MAIN.$level.$buildings[$category][]
= $name;
}
else
{
MAIN.$level.$buildings[$category]
=
[$name];
}
}
loadBuilding("landmarks",
"tvtower", $ObjectPath+"tvtower");
// lädt objects/tvtower.object
8) Затем запускаем игру, и, я надеюсь, всё работает 
Если что-то не работает:
- Первой отправной точкой является log_metro.txt
- Проверяем .mtl / .obj-файлы, правильно ли согласованы все названия
- Созданные с помощью gs_dump.exe .material и .object файлы, проверяем и их названия.Я сейчас более-менее разобрался с форматом CiM * и могу создавать новые объекты. Все еще очень сыро, относительно хлопотно и чревато ошибками.
Но так как я, видимо, в ближайшие недели не смогу заниматься этим, то я пущу это в полуготовом состоянии в народ.
*) Но еще не хватает некоторых вещей – кто хочет покопаться в hexeditor, приглашаю попробовать.
Я пытался задокументировать мой прежний опыт в src\gs.h
Отважные могут также попытаться следовать остальному исходному коду, он, конечно,... не совсем хорош
Краткая инструкция:
Примечания:
- В качестве переходного формата я использовал формат Wavefronts OBJ. Испытано исключительно с Blender.
- ggw поддерживает только одну текстуру на каждый объект (и только эту текстуру – прочие характеристики материала игнорируются)
- в качестве формата текстуры, работает, вроде только DDS
- нужно больше времени и готовности, чтобы что-то попробовать
1) скачать gs_tools.zip (см. приложение) и разархивировать
2) Экспортировать модель Blender в OBJ ( Optionen siehe Bild)
Вы получите файлы с форматами .obj и .mtl
3) С помощью gsobj_import.exe конвертировать в формат CiM.
Затем получают два файла: output.object и output.material
4) В папке addons создать новую папку (в качестве bsp здесь 'tvtower') и создать в ней две подпапки : 'scripts' и 'objects'
Копировать output.object в addons\tvtower\objects (переименовать: здесь tvtower.object)
5) Копировать output.material в addons\tvtower\objects и переименовать:
! Имя файла материала должно соответствовать имени, которое Blender при экспорте дал материалу
- Чтобы найти его, открыть созданный на шаге 2 файл mtl в текстовом редакторе - строка 'newmtl xxxxxx' даст имя материала (имя файла: xxxxx.material)
(кто хочет, может изменить его также до шага 3), но тогда должен согласовать указания 'usemtl' в файле .obj)
Не забудьте скопировать текстуру в addons\tvtower\objects.
6) В addons\tvtower\objects создайте .scripts-файл с соответствующим именем (tvtower.script, в данном случае) со следующим кодом:
this.width =
5;
this.height =
45;
this.length =
5;
this.flags = GRID_ITEM_COVER | GRID_ITEM_LOCK_GROUND | GRID_ITEM_ENABLE_BASE;
this.diagonals =
0x0000;
this.type = GRID_ITEM_BUILDING;
this.displayName =
"TVTower";
$price =
1234500;
$displayName и $price можете придумывать сами. Габариты (ширина, высота, длина) можно рассчитать по следующей формуле: находим измерения модели в Блендере и делим на 3 (с округлением)
7) В addons\tvtower\scripts создаём файл 'environment.script', в нём код:
// get addon path
$BasePath = extractFilePath(extractFileDir(this.scriptFilename));
$ObjectPath = $BasePath +
"objects/";
function loadBuilding($category, $name, $model)
{
MAIN.$grid.loadGridObject($name, $model+".object");
if
(defined MAIN.$level.$buildings[$category])
{
MAIN.$level.$buildings[$category][]
= $name;
}
else
{
MAIN.$level.$buildings[$category]
=
[$name];
}
}
loadBuilding("landmarks",
"tvtower", $ObjectPath+"tvtower");
// lädt objects/tvtower.object
8) Затем запускаем игру, и, я надеюсь, всё работает 
Если что-то не работает:
- Первой отправной точкой является log_metro.txt
- Проверяем .mtl / .obj-файлы, правильно ли согласованы все названия
- Созданные с помощью gs_dump.exe .material и .object файлы, проверяем и их названия.
英语
I'm more or less figured out the format CiM * and I can create new objects. Still very damp, relatively troublesome and error prone.
But since I'm probably in the coming weeks will not be able to do this, then I will even rend it in a semi-state in the nation.
*) But still lacks some things - who wants to delve into hexeditor, invite you to try.
I tried to document my previous experience in src \ gs.h
Adventurous can also try to follow the rest of the source code, of course he ... not very good
Howto:
Notes:
- As a transitional format, I used the format Wavefronts OBJ. Tested exclusively with Blender.
- Ggw supports only one texture for each object (and only this pattern - other characteristics of the material is ignored)
- As a texture format, works like the only DDS
- Need more time and a willingness to try something
1) download gs_tools.zip (see annex) and extract
2) Blender export models in OBJ (Optionen siehe Bild)
You get the files with the formats. Obj and. Mtl
3) Using gsobj_import.exe convert to CiM.
Then get two files: output.object and output.material
4) In the addons folder to create a new folder (as bsp here 'tvtower') and create two subfolders in it: 'scripts' and 'objects'
Copy output.object in addons \ tvtower \ objects (rename: here tvtower.object)
5) Copy output.material in addons \ tvtower \ objects and rename:
! File name must match the name of the material that Blender for export gave material
- To find it, open the created in step 2 mtl file in a text editor - string 'newmtl xxxxxx' will give the name of the material (the file name: xxxxx.material)
(Who wants to can edit it as you reach step 3), but then must agree on guidelines 'usemtl' in the file. Obj)
Do not forget to copy the texture addons \ tvtower \ objects.
6) The addons \ tvtower \ objects create. Scripts-file with an appropriate name (tvtower.script, in this case) with the following code:
this.width = 5;
this.height = 45;
this.length = 5;
this.flags = GRID_ITEM_COVER | GRID_ITEM_LOCK_GROUND | GRID_ITEM_ENABLE_BASE;
this.diagonals = 0x0000;
this.type = GRID_ITEM_BUILDING;
this.displayName = "TVTower";
$ Price = 1234500;
$ DisplayName $ price and can invent yourself. Dimensions (width, height, length) can be calculated as follows: find the dimensions of the model in Blender and divide by 3 (rounded)
7) The addons \ tvtower \ scripts create a file 'environment.script', in its code:
/ / Get addon path
$ BasePath = extractFilePath (extractFileDir (this.scriptFilename));
$ ObjectPath = $ BasePath + "objects /";
function loadBuilding ($ category, $ name, $ model)
{
MAIN. $ Grid.loadGridObject ($ name, $ model + ". Object");
if (defined MAIN. $ level. $ buildings [$ category]) {
MAIN. $ Level. $ Buildings [$ category] [] = $ name;
} Else {
MAIN. $ Level. $ Buildings [$ category] = [$ name];
}
}
loadBuilding ("landmarks", "tvtower", $ ObjectPath + "tvtower"); / / lädt objects / tvtower.object
8) Then start the game, and I hope everything works
If something does not work:
- The first starting point is log_metro.txt
- Check. Mtl /. Obj-files properly coordinated all titles
- Created by gs_dump.exe. Material and. Object files, check and their names.
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|