Разработка и ромхакинг > Ромхакинг и программирование
Ищем программистов. Не опять, а снова.
(1/3) > >>
HoRRoR:
Многие из посещающих этот раздел знают, насколько сложен труд ромхакера. Но далеко не многим приходится менять свой взгляд на подобные увлечения по ходу своего профессионального роста, получения опыта и прочего. Я хочу сказать, что за долгие годы увлечения ромхакингом, из подхода дилетанта я вырабатывал свой подход к ведению проектов. А затем, получив опыт на реальной профессиональной практике, понял, что в этом подходе следует доработать.

Суть этого прохода проста и знакома всем специалистам — просто делать всё грамотно, красиво, продуманно, качественно. Чтобы в итоге не оставалось так называемого технического долга — именно это залог того, что проект не увязнет в необходимости кучи монотонной работы и рефакторинга проекта, которые убивают весь энтузиазм. Главная составляющая этой концепции — автоматизация и качественная архитектура проекта. Да, это требует много усилий, но куда меньше, чем суммарное выполнение вручную раз за разом одних и тех же операций.

Так вот, к чему я клоню. У команд Consolgames и Exclusive накопилось некоторое количество проектов, которым не помешало бы дать пинка. Стоят они по нескольким причинам, но, будучи ответственным за техническую часть, я могу сказать, что мешает мне довести всё до финиша. Раньше это было отсутствия энтузиазма, теперь это ещё и критически малое количество свободного времени. Т.к. мы привыкли делать всё с умом, то методы долота и зубила в вёрстке перевода нам не помощники. В связи с этим, чтобы эти проекты и Consolgames в том числе не канули в лету, я решил попробовать в очередной раз привлечь к проектам заинтересованных в этом людей. Да, чёрт возьми, мы нуждаемся в программистах! Но не просто в дилетантах, а в знающих своё дело людях, готовых тратить своё личное время на пользу обществу, готовых и способных следовать требованиям.

Итак, нам требуются программисты, обладающие хотя бы одним из следующих навыков:


* C++
* C++/Qt
* Delphi
* Java
Что именно надо делать? В целом — разрабатывать инструментарий для локализации игр, а более конкретно:

* Производить тотальный рефакторинг старого кода.
* Разрабатывать инструментарий для работы с различными данными и форматами.
* Дорабатывать уже существующие инструменты: добавлять новый функционал, исправлять баги, производить рефакторинг.
* Разрабатывать инструменты для визуального редактирования данных (редакторы шрифтов, текста, etc).
* Разрабатывать презентабельные патчеры с маловесным GUI (эх, мечтаю об уровне кряков :) ).
Естественно, всё при моей координации и непосредственном участии в процессе. Но... следует удовлетворять ряду требований. А именно:

* Следовать установленному код-стандарту и спецификациям.
* Следовать установленным шаблонам программирования.
* Не делать весомых изменений без предварительного согласования.
* Писать независимый от какой-либо платформы код, если это возможно. Т.е. не использовать специфические фичи ОС и компиляторов, если это изначально не задумано.
В общем-то, всё не так строго, как звучит, но всё же соблюдение этих правил имеет большое значение. Я надеюсь, что найдётся хотя бы один программист, способный и готовый на всё это.

Каковы конкретные цели на будущее? Ну, мне бы очень хотелось прежде всего добить два проекта — Metroid Prime 3: Corruption и Silent Hill: Shattered Memories. Более конкретно? Окей.

Metroid Prime 3: Corruption:

* Написать презентабельный патчер. Точнее — маловесные GUI для него.
* ТОТАЛЬНО отрефакторить существующий код для работы с образами Wii, стянутый из WiiScrubber'а, автор которого писал абсолютно всё в одном месте. Половина работы в этом направлении уже сделана. Относится и к SHSM, к слову.
* Отрефакторить код для работы с текстурами Wii.
* Добавить функционал в конвертор текста.
* Отрефакторить всё остальное.
Silent Hill: Shattered Memories:

* Дописать парсер ресурсов, унифицированный для всех платформ.
* Добавить поддержку текстур PSP и PS2 в конвертор.
Тут мы имеем дело с квантованием текстур с альфа-каналом, придётся искать и прикручивать ещё одну библиотеку. Изначально используется nvidia-texture-tools. Дело усложняется тем, что мало где учитывается альфа-канал при квантовании — в распространённых форматах при индексированной цветности обычно используется только флаг прозрачности.
* Доработать (читать как «написать, используя наработки») код для работы с ISO-образами.
* Написать патчер.
* Может ещё что, уже всё и не припомню.
* И, конечно же, отрефакторить всё к чертям.
Общие задачи:

* Продумать структуру репозитория.
* Продумать структуру общих классов и исходников.
* Создать унифицированные интерфейсы к классам образов, архивов и прочего - надо же привести всё к общему знаменателю!
* Разобраться с системой сборки — что использовать, как использовать, зачем и почему.
* Заставить это всё компилироваться и работать :)
Всё это планируется делать под флагом опенсорса. Хотя, я бы сделал некоторые ограничения — например, открывать исходники только после релиза перевода. Но, к сожалению, для этого нужен свой сервер для репозитория, которого пока нет. В качестве системы контроля версий будет использоваться SVN.

Если у кого-то есть мысли по поводу всего этого — добро пожаловать, излагайте их в конструктивной форме :)
Mad:
HoRRoR, А как вообще обстоят дела с переводом СХ, какой процент работы примерно готов? И сколько перевод по времени не выйдет, опять же примерно, полгода, год?
HoRRoR:

--- Цитата: Mad от 06 Январь 2012, 10:49:14 ---HoRRoR, А как вообще обстоят дела с переводом СХ, какой процент работы примерно готов? И сколько перевод по времени не выйдет, опять же примерно, полгода, год?

--- Конец цитаты ---
Ммм, сложно точно сказать. У нас часто было так, что проект стоит год-другой, а потом за две недели доделывается оставшаяся работа — и готово. В случае с СХ готово очень много — почти всё расхакано (из необходимого не расхакан только формат хранения дефолтов настроек, там что-то вроде бинарного XML — расхакать надо, чтобы по-умолчанию включить субтитры). Перерисована огромная куча текстур для Wii-версии (и наш чертовски продуктивный художник просит ещё!). Так что остались только программирование и перевод, да и то здесь тоже немалый прогресс — явно за 50%, а то и куда больше.
Обычно, когда какая-то часть проекта стоит — это негативно сказывается на энтузиазме участников, отвечающих за другие части. Я думаю, если добьём техническую часть, за переводчиками дело не станет. Оно и работается лучше, когда знаешь, что именно осталось сделать и сколько на это уйдёт.

Но сперва я хочу добить Metroid Prime 3 - там вообще почти всё готово, осталось только привести в цивильный вид.
Yoti:

--- Цитата: HoRRoR от 06 Январь 2012, 03:38:19 ---Разрабатывать презентабельные патчеры с маловесным GUI (эх, мечтаю об уровне кряков :) ).

--- Конец цитаты ---
Во, я тоже хочу научиться! =) А то дельфовые гуишки толстые, как большинство троллей. Да и кряки нынче пошли не те...
Пока есть две идеи (в долгом ящике): легковесный экзешник и ресурсный файл в комплекте или пересобирать каждый раз под новую игру.
r57shell:
Windows Application на Win32 API будет весить 16кб без ресурсов
Отрубив стандартные библиотеки, можно этак <5кб сделать... если заморочиться можно ужать дозадницы.
Yoti:
Как раз в процессе изучения WinAPI. Пустой проект в КодБлокс - 50 КБ. При этом, Борланд компилятор требует 1.32 МБ библиотеку =) В общем, есть у меня одна идейка...)))
r57shell:
http://elektropage.ru/publ/ourwork/rock_n_roll_racing_extreme_edition/15
большинство программ моих тут, на чистом WinAPI + GDI+ (который используется только ради того чтобы сохранять/подгружать PNG)
HoRRoR:

--- Цитата: Yoti от 08 Январь 2012, 18:27:17 ---Пока есть две идеи (в долгом ящике): легковесный экзешник и ресурсный файл в комплекте или пересобирать каждый раз под новую игру.

--- Конец цитаты ---
Пересобирать, конечно же, надо под каждую игру. Потому что код-то разный, патчер производит преобразование данных, у каждой игры свои данные, форматы и алгоритмы :)


--- Цитата: r57shell от 08 Январь 2012, 19:16:23 ---Windows Application на Win32 API будет весить 16кб без ресурсов
Отрубив стандартные библиотеки, можно этак <5кб сделать... если заморочиться можно ужать дозадницы.

--- Конец цитаты ---
Ну, маловесные - это не обязательно 15кб, достаточно в пределах пары мегабайт :) Цель - не минимализм, а отсутствие максимализма. Это я к тому, что Qt и прочее по 10-20МБ весу сюда не подходят (гуя будут весить больше самих данных патча), так что всю красоту надо реализовывать как-то самостоятельно. Скачать патчер в 5МБ нынче не проблема, а вот качать 25МБ из-за гуёв - свинство со стороны разработчика.

Если извращаться каждый раз с каким-нибудь чистым WinApi/GDI - это очень муторно. Но как вариант - можно написать какой-нибудь фреймворк, т.е. отмучиться лишь раз. А там уж можно будет подумать и над мультиплатформенностью, хотя у меня была идея делать консольные варианты патчеров под линукс. Вот поэтому и важно следовать какому-нибудь паттерну вроде MVC.
Yoti:
r57shell,
твоя ссылка редиректнула мою ОперуМини 3 мод на якобы (прямой линк на jar, ~13 КБ) ОперуМини 6. Это в первый раз. Во второй - на страницу "центра обновления Internet Explorer" со ссылками на якобы ОперуМини 6.5 . Почему и в этот раз "якобы" - объяснять нужно?

Пиарим разводил, значит... Ай-ай-ай.

HoRRoR,
общий экзе + картинка игры + инишка с именем и хэшами файла (файлов) + файл вида "оффсет: старые_данные новые_данные".
HoRRoR:

--- Цитата: Yoti от 08 Январь 2012, 20:25:12 ---HoRRoR,
общий экзе + картинка игры + инишка с именем и хэшами файла (файлов) + файл вида "оффсет: старые_данные новые_данные".

--- Конец цитаты ---
Не всё так просто :) У нас для патчеров перепаковка игровых архивов и умный патчинг образа - обыденное дело :)
Плюс есть идея делать гуя патчей с закосом под стилистику игры.
Yoti:
Ах, ну тогда извращайтесь =)
Я только автораны в стиле игры делал (на Дельфи+Фотошоп+Редактор курсоров).
HoRRoR:
Ну тут идея проста - делается небольшой фреймворк, надстройка над WinApi, с возможностью переопределять прорисовку контролов. Ну и можно сделать визуальный редактор какой-нибудь, чтобы вручную не подбирать координаты и размеры контролов на форме.
Подходящих фреймворков я пока не нашёл...
Злая Бака:

--- Цитата ---надстройка над WinApi, с возможностью переопределять прорисовку контролов
--- Конец цитаты ---
Чем не устраивают стандартные батоны/бары?
HoRRoR:

--- Цитата: Злая Бака от 08 Январь 2012, 21:58:44 ---Чем не устраивают стандартные батоны/бары?

--- Конец цитаты ---

--- Цитата ---Плюс есть идея делать гуя патчей с закосом под стилистику игры.
--- Конец цитаты ---
Хочется презентабельности :)
gepar:

--- Цитата: HoRRoR ---Написать презентабельный патчер. Точнее — маловесные GUI для него.
--- Конец цитаты ---
Это чтобы весил сам 5 кб, но требовал последний установленный нетфреймворк, а если его нет то предлагал скачать 40 мб?  :)
Хотя мне не сильно понятно в чём суть погони за малым весом? На винапи пока создашь небольшой проект да пока прикрутишь эту *!"№;%%?( прокрутку так всякое желание пропадёт делать с небольшим весом, уж лучше в mfc неспешные два клика мышкой  и пускай уж весит в два раза больше. Это ведь патч к игре которая сама весит больше 1 гб, почему бы личику патча не весить 1 мб например даже?
Хотя если делать морду с расчётом на все будущие проекты то можно уж сделать и на чистом winapi ради экономии в кб, но что мешает? Там же на один (ну хорошо-хорошо, пускай на три) зимних (дождливых) вечера, особенно если взять заготовку где уже создано новое окно, написан для него обработчик и нужно только дописывать что выводить в окно, какой-то стиль добавить/удалить, дописать всплывающее окошко about там, засунуть картинку где-то по середине...

--- Цитата: Yoti ---Как раз в процессе изучения WinAPI. Пустой проект в КодБлокс - 50 КБ.
--- Конец цитаты ---
А теперь ставим в build target вместо debug - realease  :)
HoRRoR:

--- Цитата: gepar от 09 Январь 2012, 01:22:03 ---почему бы личику патча не весить 1 мб например даже?

--- Конец цитаты ---
1МБ - вполне приемлемо. Только вот подскажи мне такой фреймворк. Конечно, можно на всё забить и юзать что-то вроде MFC или VCL, но хочется хотя бы кросс-компиляторного чего-нибудь.


--- Цитата: gepar от 09 Январь 2012, 01:22:03 ---Это чтобы весил сам 5 кб, но требовал последний установленный нетфреймворк, а если его нет то предлагал скачать 40 мб?  :)
Хотя мне не сильно понятно в чём суть погони за малым весом? На винапи пока создашь небольшой проект да пока прикрутишь эту *!"№;%%?( прокрутку так всякое желание пропадёт делать с небольшим весом, уж лучше в mfc неспешные два клика мышкой  и пускай уж весит в два раза больше. Это ведь патч к игре которая сама весит больше 1 гб, почему бы личику патча не весить 1 мб например даже?
Хотя если делать морду с расчётом на все будущие проекты то можно уж сделать и на чистом winapi ради экономии в кб, но что мешает? Там же на один (ну хорошо-хорошо, пускай на три) зимних (дождливых) вечера, особенно если взять заготовку где уже создано новое окно, написан для него обработчик и нужно только дописывать что выводить в окно, какой-то стиль добавить/удалить, дописать всплывающее окошко about там, засунуть картинку где-то по середине...

--- Конец цитаты ---
Это не то, что надо. Во-первых, не гибко - геморрой в случае, если переделывать придётся. Во-вторых, не красиво, не презентабельно. В-третьих, не переносимо - каждый раз писать заново, под каждый новый патчер, пусть даже и по шаблону. Так что в таком случае лучше сделать фреймворк с необходимыми возможностями. А просидеть один-три зимних дождливых вечера желания пока не возникает - слишком муторное занятие, не мотивирует ничего, да и раз уж на то пошло - есть куча более приоритетных задач по мою душу.
gepar:

--- Цитата: HoRRoR ---1МБ - вполне приемлемо. Только вот подскажи мне такой фреймворк. Конечно, можно на всё забить и юзать что-то вроде MFC или VCL, но хочется хотя бы кросс-компиляторного чего-нибудь.
--- Конец цитаты ---
Ну я о mfc в этом случае и говорил, из мультиплатформенного не жирного есть wxWidgets - использует стандартные ресурсы ос так что приложение получается с интерфейсом родным для каждой ОС, хотя не помню я чтобы какая группа переводчиков делала патчеры для линукса там, мака или, чего доброго, для freebsd для какой-либо игры, но если так хочешь мультиплатформенности то посмотри на эту штуковину. Только чтобы сделать приложение на ней с ней же разобраться надо. На меня если что не смотреть, я ею не пользуюсь  :)
HoRRoR:

--- Цитата: gepar от 09 Январь 2012, 02:03:49 ---Ну я о mfc в этом случае и говорил, из мультиплатформенного не жирного есть wxWidgets - использует стандартные ресурсы ос так что приложение получается с интерфейсом родным для каждой ОС, хотя не помню я чтобы какая группа переводчиков делала патчеры для линукса там, мака или, чего доброго, для freebsd для какой-либо игры, но если так хочешь мультиплатформенности то посмотри на эту штуковину.
--- Конец цитаты ---
Это из разряда "экзешник 40МБ". По крайней мере при статической линковке в дебаг-конфигурации с дефолтными настройками у меня где-то такой размер получался, помнится. Туда же и Qt, и тому подобное относится. Хотя, из Qt можно выжать всего метров 10-15, но это всё равно меня не устраивает. Пробовал вообще минимальную сборку делать - так хрен, не собирается, те же тулзы для дальнейшей самосборки типа qmake требуют фич, которые я отключал. Да и другие зависимости имеются. По-моему, разработчики давно забили на кастомизацию.
Yoti:

--- Цитата: gepar от 09 Январь 2012, 01:22:03 ---А теперь ставим в build target вместо debug - realease  :)
--- Конец цитаты ---
А "билд тагет - дебаг" (галка в диалоге создания проекта) было убрано на стадии создания ;)
И да, я ошибся. Писал по памяти - и указал размер другой вещи. Этот выходит 7.50 КБ (7 680 байт). Но Борланд компилятор всё равно хочет cc3250mt.dll весом в 1.42 МБ (1 497 088 байт).

И, просто похвастаться, вот Delphi наработка авторана диска Deus Ex (забросил):
Курсор не заснялся (известная проблема; делал простым prntscr), но он срисован из игрового меню и лежит в файле .cur. А так, на скриншоте фоновая картинка (.jpg) + множественное изображение кнопки (.png).
HoRRoR:

--- Цитата ---Писал по памяти - и указал размер другой вещи. Этот выходит 7.50 КБ (7 680 байт).
--- Конец цитаты ---
Попробуй с флагом -s. В кодблоксе есть в списке параметров.
Навигация
Главная страница сообщений
Следующая страница

Перейти к полной версии