• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Gothic Sourcer

marazmus

★★★★★★★★★★★
Основатель
Регистрация
7 Янв 2003
Сообщения
2.117
Благодарности
914
Баллы
385
  • Первое сообщение
  • #1

maggi1221

Участник форума
Регистрация
7 Окт 2010
Сообщения
218
Благодарности
4
Баллы
165
Где можно скачать исходники GothicSourcer?
 

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
Re: Исходники Готики

Где можно скачать исходники GothicSourcer?
Свободно - нигде нельзя. Полные исходники GothicSourcer'а есть только у Vam'а, какие-то куски есть и у меня, хотя даже те куски, что есть у меня, я опять же не могу и не хочу выкладывать в открытый доступ. Тебя интересует что-то конкретное?
 

maggi1221

Участник форума
Регистрация
7 Окт 2010
Сообщения
218
Благодарности
4
Баллы
165
Re: Исходники Готики

Тебя интересует что-то конкретное?
Да, меня интересует возможность дописания этой проги с возможностью определения функций, чтобы было меньше возни с списком файлов.

Уверен, большинству модостроителей это бы понравилось...
Ну и макросы, если получится. куда уж без них)
 

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
Re: Исходники Готики

maggi1221,
Вообще, конечно, неплохо было бы, если бы кто-то умный GothicSourcer'ом занялся... Хотелось бы получить для начала ответ на три вопроса:

1. Исходники GothicSourcer'а написаны на С++. Ты его знаешь?

2.
Да, меня интересует возможность дописания этой проги с возможностью определения функций
И как это могло бы выглядеть?

3.
Ну и макросы, если получится. куда уж без них)
И как это могло бы выглядеть? Слово "макросы" понимают в разных программах по-разному.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Re: Исходники Готики

Макросы? Да просто подстановка куска кода при компилляции. Вроде бы мелочь, но большое удобство при разработке.
 

maggi1221

Участник форума
Регистрация
7 Окт 2010
Сообщения
218
Благодарности
4
Баллы
165
Re: Исходники Готики

Kerrax,

1) с++ есть знания и опыт.
2) декларация функций перед их использованием, т.е в результате получатся файлы с расширением, например .def.
если нужно создать новые функции, то нужно их прописать в .def файле.
(def func function123 ( var int x, var C_ITEM itm )
и уже писать саму функцию в любом месте, где захочется...
3) макросы, (#define M1 какой-то код...) как в языках си.
а) без аргументов - просто подставить в код содержимое, вместо имени макроса
б) с аргументами - посложнее будет, но то же самое, только нужно сначала сформировать вставляемую строку на основе аргументов макроса и уже вставлять ее в код...
 

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
Re: Исходники Готики

maggi1221,

макросы, (#define M1 какой-то код...) как в языках си.
Если сможешь реализовать, то это будет норм.

если нужно создать новые функции, то нужно их прописать в .def файле.
(def func function123 ( var int x, var C_ITEM itm )
На мой взгляд, не стоит плодить новые расширения файлов без особой нужды. То есть лучше бы сделать так, чтобы предварительную декларацию писать в самих *.d файлах, например, так:
Код:
func void function123 ( var int x, var C_ITEM itm );
- это декларация функции (предварительное объявление),
Код:
func void function123 ( var int x, var C_ITEM itm )
{
   ...
};
- это определение функции, т.е. определение ее тела. Так оно логичнее будет.

Вообще, исходники GothicSourcer'а весьма запутанные, разобраться в них непросто. Но т.к.
с++ есть знания и опыт
то, думаю, стоит попробовать. Обсужу это дело с Vam'ом.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Re: Исходники Готики

Ну то что они запутанные это мягко сказано, ибо это не просто вырезанный парсер из готы, вместе с ним идет еще чуть более чем весь двиг готы, не считая рендера....
 

Vam

Почетный форумчанин
Регистрация
8 Июл 2008
Сообщения
255
Благодарности
1
Баллы
180
Re: Исходники Готики

1) с++ есть знания и опыт
Этого, к сожалению мало, для полноценной модернизации Сурсера под задуманные возможности нужно хорошо знать как минимум две части проги:
1. Движок компилятора, ибо чтобы сделать предварительные декларации и систему макросов потребуется его доработка. Здесь в принципе хороших знаний С++ достаточно (классы, шаблоны, полиморфизм).
2. GUI - ну без этого вообще никуда, любая новая функциональность доступная юзеру должна быть внедрена в оболочку. Здесь необходимо хорошо знать MFC + Scintilla + Xtreme Codejock Software.

Если же вы считаете, что ваших знаний достаточно для реализации задуманного, то могу предложить следующий вариант - я могу дать исходники только компилятора скриптов (без права распространения и передачи кому бы то ни было), вы его модернизируете и тестируете в консольном варианте - если это вам удастся сделать, то получаете полные исходники GS и интегрируете в них модернизированный компилятор скриптов.
Этот вариант работы уже отлажен с Kerrax'ом, он получил от меня исходники компилятора моделей и разработал декомпилятор моделей (это же послужило ему базой для разработки плагинов для Max'а), который и был встроен в проект.
Так же могу для вас обозначить временной интервал требуемый для задуманной реализации - полгода... (мне бы на это дело потребовалось 3 месяца), т.ч. это не три строчки кода написать...
Предлагаю хорошо обдумать, прежде чем давать ответ, а то желающих было очень много - а полезной работы - практически нуль...

ЗЫ: Модераторам: Почему-то начали писать о Сурсере не в его теме, если не трудно, то прошу перенести несколько постов в его тему.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Re: Исходники Готики

У меня просьба к Vam'у: Рассмотреть возможность, в том случае, если компиллятор (именно компиллятор, а не GUI) не завязан жестко на специфичные виндовые библиотеки, сделать вариант компиллятора для Linux для работы в командной строке.

Не знаю как кому, мне бы это здорово помогло в работе над модом.
 

Vam

Почетный форумчанин
Регистрация
8 Июл 2008
Сообщения
255
Благодарности
1
Баллы
180
Re: Исходники Готики

У меня просьба к Vam'у
Это большая работа, хоть движок компилятора и не связан с ГУИ, в нем используется STL, которую передалать под Юникс довольно не просто + виндовые АПИ...
Короче, для такой работы нужно хорошее знание Линукса (я под него делал проги лет этак более 10 назад и практически всё подзабыл) + иметь саму операционку и инструменты под неё + много времени, которого нет.
Так что, увы...
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Re: Исходники Готики

Жалко. Была у меня такая мысль: Среда для коллективной разработки мода: через svn поднимается очередное изменение. Хук в svn'е ловит это событие и стартует сборку мода. В результате, на каждое изменение автоматически получали бы собранную новую версию. Особенно удобно было бы для коллективной отладки.

PS: А для винды возможна версия компиллятора для командной строки? Можно было бы попробовать через wine запускать. Или через WmWare.
 

Vam

Почетный форумчанин
Регистрация
8 Июл 2008
Сообщения
255
Благодарности
1
Баллы
180
Re: Исходники Готики

А для винды возможна версия компиллятора для командной строки?
Конечно возможна, раньше (GS 2.4 последний) была ком. строка, а начиная с 3 (когда появилась полнофункциональная ГУИ) я её урыл за ненадобностью... =( (никто и не возражал). А так - возродить её не сложно...
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Re: Исходники Готики

Жалко. Была у меня такая мысль: Среда для коллективной разработки мода: через svn поднимается очередное изменение. Хук в svn'е ловит это событие и стартует сборку мода. В результате, на каждое изменение автоматически получали бы собранную новую версию. Особенно удобно было бы для коллективной отладки.

PS: А для винды возможна версия компиллятора для командной строки? Можно было бы попробовать через wine запускать. Или через WmWare.
Так а в чем трабла запустить имеющийся 3.14 под вайном? У меня он под вайном работал год, и даже шустрее чем на винде, + еще слышал о существовании какогото набора вайновских либ, для адаптации кода под линухи...
 

maggi1221

Участник форума
Регистрация
7 Окт 2010
Сообщения
218
Благодарности
4
Баллы
165
Re: Исходники Готики

Согласен на консольный вариант.По началу, увидев в 1 раз соурсер, подумал что зачем ему GUI? ведь компилятор должен быть консольный и далее встраиваться в среду разработки, которая его вызывает...
потом узнал, что есть некий ключевой файл gothic.src, править который вручную не очень удобно, а вот при помощи GUI (добавить/удалить файл..итд) это делается очень даже легко.
Так вот, если реализовать декларацию функций и переменных, то надобность в этом файле отпадет, или он превратится в файл definitions.d, для которого порядок декларации не важен, что является ключевым моментом (удобство создания новых функций), отсутствие гемора с порядком файлов.

Насчет сложности реализации...
Наверняка в уже имеющемся компиляторе есть функция типа FunctionContainer->AddFunction (function def...), и она вызываются при первом проходе, "открывая" новые функции на своем пути и занося их в список.
Так вот, необходимо внести в функции распознавания изменения, чтобы они вызывали AddFunction при встрече не только декларации + тела, но и также декларации функции без тела, в конце которых стоит точка с запятой, как предложил выше Kerrax:

func void function123 ( var int x, var C_ITEM itm );
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Re: Исходники Готики

Дело в том, что функция zCParser::defineExternal(...) есть, но работает она совсем не так как ты думаешь, могу показать пример если нужно.
Но там идет завязка именно на уже существующую функцию(int foo(){..}) которая и вызыается при обращении к встроенной функции из скрипта, одним словом, необходимо очень серьезное вмешательство в код парсера скриптов.

Bump: Если нужно могу дать пример декларации функции в двиге.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Re: Исходники Готики

Так а в чем трабла запустить имеющийся 3.14 под вайном? У меня он под вайном работал год, и даже шустрее чем на винде, + еще слышал о существовании какогото набора вайновских либ, для адаптации кода под линухи...

Сложность в том, что нужна командная строка, чтобы компилляция запускалась из юниксового скрипта.

Bump:
Так вот, если реализовать декларацию функций и переменных, то надобность в этом файле отпадет, или он превратится в файл definitions.d, для которого порядок декларации не важен, что является ключевым моментом (удобство создания новых функций), отсутствие гемора с порядком файлов.

Тогда пропадет совместимость со спейсером.
 

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
Re: Исходники Готики

надобность в этом файле отпадет
Не отпадет. Без файла gothic.src как компилятор вообще определит, какие *.d-файлы ему компилировать? Вдобавок любые изменения GothicSourcer'а должны сохранять его совместимость со старыми скриптами. Так что файл gothic.src нужно сохранить в любом случае, я думаю так. А если мы сохраняем файл gothic.src, то порядок следования файлов в нем будет все равно важен - как минимум файл с предварительными декларациями функций надо будет подключать раньше файла, который эти функции использует.

UPD: Под совместимостью, которую необходимо, на мой взгляд, обеспечить, я понимаю то, что новый GothicSourcer должен понимать любые скрипты, которые понимает старый GothicSourcer. Обратное может быть неверно: старый GothicSourcer может и не понимать какие-то конструкции нового GothicSourcer'а. Такую одностороннюю совместимость крайне желательно сохранить, на мой взгляд.

UPD2: Хотя, если переделать компилятор в многопроходный, то можно будет обойтись даже и без предварительных деклараций: компилятор при первом проходе мог бы найти все функции, а при втором уже непосредственно выполнить компиляцию. При такой реализации порядок следования файлов в gothic.src может быть действительно не важен. Но это спорный вариант, обычно так не делают.
 

Vam

Почетный форумчанин
Регистрация
8 Июл 2008
Сообщения
255
Благодарности
1
Баллы
180
Re: Исходники Готики

Насчет сложности реализации...
Наверняка в уже имеющемся компиляторе есть функция типа FunctionContainer->AddFunction (function def...), и она вызываются при первом проходе, "открывая" новые функции на своем пути и занося их в список.
Так вот, необходимо внести в функции распознавания изменения, чтобы они вызывали AddFunction при встрече не только декларации + тела, но и также декларации функции без тела, в конце которых стоит точка с запятой
Это на словах только просто, во-первых компилятор однопроходный, во-вторых структуру создаваемого им dat ни какиим образом менять нельзя. По сути нужно писать препроцессор и встраивать его в компилятор, в принципе при соответствующих знаниям всё реализуемо...
Скинь в личку свои контакты (аська очень желательна...)
 

maggi1221

Участник форума
Регистрация
7 Окт 2010
Сообщения
218
Благодарности
4
Баллы
165
Re: Исходники Готики

вот еще 1 вариант. (похож на работу компилятора си)

основные моменты:

1) функция main() - стартовый файл, в шапке подключается #include <defs.d>
в файле defs.d делается куча включений (с комментариями, а это удобно): #include <file1.d>, #include <file2.d>, ...
2) компилятор стартует с файла main.d и начинает проходить по файлам, указанным в инклудах, поэтому необходимость в gothic.src отпадает.

Далее, вопросы совместимости... Если компилятор не обходится без gothic.src, то это значит что он выдран не полностью... если это так, то придется придумывать разные хитрые обходные пути, чтобы все таки как-то сгенерировать этот чертов gothic.src...

Вариант с поддержкой совместимости:

Генерация 2 файлов:

data.d // переменные, константы
script.d // все остальное

в gothic.src 2 строчки:
data.d
script.d

Основная сложность - генерация этих самых файлов. с data.d не будет проблем, а вот с script.d придется повозиться....
 
Сверху Снизу