3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 4445|回复: 8
打印 上一主题 下一主题

[分享] 神文再现-在游戏中个性化建筑物,4语发布【德中俄英】

  [复制链接]

342

主题

2840

帖子

2万

积分

版主

请叫我六冷版主

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

贡献度
4718
金元
43662
积分
23238
精华
0
注册时间
2010-8-26

3DMer

跳转到指定楼层
主题
发表于 2011-5-30 08:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
12345678910this.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
回复

使用道具 举报

342

主题

2840

帖子

2万

积分

版主

请叫我六冷版主

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

贡献度
4718
金元
43662
积分
23238
精华
0
注册时间
2010-8-26

3DMer

舒服的沙发
 楼主| 发表于 2011-5-30 11:28 | 只看该作者
回复 2# AISPs


   图看德文的版本,图都市一样的
回复 支持 反对

使用道具 举报

8

主题

486

帖子

1570

积分

游戏狂人

Rank: 6Rank: 6

贡献度
293
金元
4478
积分
1570
精华
1
注册时间
2011-3-6
硬硬的板凳
发表于 2011-5-30 11:39 | 只看该作者
回复  AISPs


   图看德文的版本,图都市一样的
hcwty289 发表于 2011-5-30 11:28



   问题是德语的也挂了啊……难道压缩包里有
回复 支持 反对

使用道具 举报

10

主题

206

帖子

333

积分

高级玩家

Rank: 4

贡献度
40
金元
1727
积分
333
精华
0
注册时间
2011-5-26
QQ
冰凉的地板
发表于 2011-5-30 11:45 | 只看该作者
果然是神文!
回复 支持 反对

使用道具 举报

66

主题

733

帖子

840

积分

超级玩家

Rank: 5Rank: 5

贡献度
67
金元
5718
积分
840
精华
0
注册时间
2010-9-5
5#
发表于 2011-5-30 12:08 | 只看该作者
是什么用的啊
回复 支持 反对

使用道具 举报

342

主题

2840

帖子

2万

积分

版主

请叫我六冷版主

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

贡献度
4718
金元
43662
积分
23238
精华
0
注册时间
2010-8-26

3DMer

6#
 楼主| 发表于 2011-5-30 12:10 | 只看该作者
回复 支持 反对

使用道具 举报

17

主题

1618

帖子

1730

积分

游戏狂人

Rank: 6Rank: 6

贡献度
170
金元
10498
积分
1730
精华
0
注册时间
2006-11-17
7#
发表于 2011-5-30 13:02 | 只看该作者
支持一下,为以后的MOD发展迈出了一大步~
回复 支持 反对

使用道具 举报

496

主题

7805

帖子

1万

积分

资深玩家

一句理解可挡万句辱骂。

Rank: 9Rank: 9Rank: 9

贡献度
2538
金元
9363
积分
11273
精华
9
注册时间
2008-1-4
8#
发表于 2011-5-31 19:46 | 只看该作者
hexeditor 就是一个16进制编辑器啦...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2025-2-25 04:20 , Processed in 0.097082 second(s), 15 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表