|
[ На главную ] -- [ Список участников ] -- [ Правила форума ] -- [ Зарегистрироваться ] |
On-line: |
Форум движка Xtreme3D / Свободный треп / Новый движок |
Страницы: 1 |
Автор | Сообщение | |||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 29-12-2009 14:56 | |||
У меня появилась идея создать свой движок типа Game maker. Основа будет такая же: Событие - Действие. Хочу сделать поддержку языка C++ вместе с API, OpenGL и всего остального. Я думаю сделать так, чтобы код и все настройки пользователя при компиляции записывались в обычный .cpp файл и компилировались компилятором. Для этого нужно, чтобы был маленький компилятор, который можно запускать из другой программы, например, с помощью функции CreateProcess. Это пока ещё только идея, а сейчас я только изучаю C++, поэтому начну её реализовывать не скоро. А пока у меня есть вопрос: Среда dev(не помню полное название) подсвечивает другим цветом функции и переменные в коде? А то у меня Visual C++ 6 не подсвечивает их. Я только изучаю его, но без подсветки кода сложнее писать программу. Если подсвечивает, то можно ссылку? |
||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 29-12-2009 16:11 | |||
Подсвечивает. Вот ссылка на Dev-C++ 5.0 beta 9.2 на SourceForge: http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe |
||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 08-09-2011 17:45 | |||
Постепенно приближаюсь к своей цели, но появился вопрос по поводу компилятора. Метался между D и C++, выбрал C++, потому что он побыстрее, и у меня движок на нём (если решить остальные проблемы, то могу и перевести на D). Самая главная для меня проблема D - это то, что нельзя отказаться от библиотеки phobos, не теряя большей части самого языка. Какой компилятор можно приделать к моему движку, чтобы не было там никаких проблем с лицензиями и он занимал бы минимум места на диске? Насколько его можно урезать? Например, мне не нужны заголовочные файлы, не нужна возможность создания dll, lib. Ну и вообще там куча ненужных мне библиотек. Подойдёт ли gcc? Я с gcc незнаком, но недавно установил и был шокирован размером исполняемого файла - почти целый мегабайт на "Hello, World"! Правда с использованием iostream, а с printf намного меньше. Передав --help в командной строке, я так и не нашёл ключа оптимизации. Как включить оптимизацию? Пробовал gdc, там та же проблема. Ещё я проверил на скорость и заметил, что моя тестовая программа, вычисляющая простые числа на gdc медленнее, чем в dmd на 20%. Если включить оптимизацию, может будет быстрее? Как это сделать? Ещё, в D сборщик мусора мне не нужен, можно ли его убрать, чтобы не занимал лишнюю оперативную память и не увеличивал размер exe? |
||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 08-09-2011 18:27 | |||
Я бы предолжил g++ / MinGW, но он весит немало, я как-то попробовал собрать минимальный комплект - что-то около 30 Мб. Так что даже не знаю. Есть минималистичные компиляторы C (например, TCC), но C, насколько я понял - не вариант. Остаются только скриптовые языки. Или С# / Mono, как сделали в Unity. Все зависит от особенностей конкретного движка.
Размер исполняемого файла оптимизируется параметром -Os. Если это не дает ощутимого результата, можно воспользоваться утилитой strip. На крайняк - есть архиваторы типа UPX.
Я с gdc не работал, но у gcc есть параметры оптимизации -O2 и -O3. Они должны работать и в gdc - backend у них ведь общий.
GC.disable() в core.memory. Только из exe его так просто не уберешь - для этого надо пересобрать рантайм (при этом придется отказаться от Phobos, так как он без сборщика мусора не будет нормально работать). Либо вовсе не использовать рантайм, но тогда уж проще писать на чистом C. Все-таки D - это не C и не C++: автоматическое управление памятью практически стало частью его философии. А размер exe-шника в наши дни уже не так критичен (мегабайтом больше, мегабайтом меньше - какая разница?) Да и за скоростью, похоже, нынче уже не гонятся. Иначе как понять, почему столько людей используют C# и jаvа? |
||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 09-09-2011 15:35 | |||
Мой движок на C++ не использует STL, у меня всё своё, велосипедное, поэтому переделать на D будет не так сложно и Phobos не понадобится. Но я никак не могу скомпоновать программу на D без Phobos. Рантайм находится в нём? Если удастся избавиться от phobos'а, то и размер уменьшится, и lib таскать с движком не придётся. Где находится его рантайм и как его пересобрать? Вы проводили какие-нибудь эксперименты с DMD, типа сборки, изменения компилятора, рантайма, phobos?
В Интернет закачивать большие файлы неудобно. Часто бывают ограничения на размер.
Так как движок игровой, то скорость важна. Хотя, если там разница в скорости не больше 2-3 раз, то я готов использовать C#. Как его прикрутить к движку? Тоже интересная идея. Кстати, .NET Framework 2 нужно устанавливать или он уже везде стоит (начиная с Windows XP)? А то ещё вдруг придётся его таскать? Думаю использовать второй Framework, так как вероятность, что он установлен, выше, а возможностей хватит. Будут ли какие-нибудь проблемы с лицензиями, если я выберу какой-нибудь из этих вариантов? Смогу ли я продавать свой движок, не должен ли я буду открыть исходный код своего движка? |
||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 09-09-2011 17:35 | |||
Рантайм объединен с Phobos в одну библиотеку - libphobos.a. Его можно не использовать, но, поскольку процесс компоновки вшит в dmd, придется пересобрать либо libphobos.a (чтобы убрать оттуда все лишнее), либо компилятор (с тем, чтобы он линковал без libphobos.a). Или же использовать сторонний линкер (но это уже хардкор). Исходники компилятора и рантайма идут в комплекте. Но я такими экспериментами никогда не занимался. Я лично считаю, что нет смысла отказываться от рантайма и Phobos, и получить в итоге довольно куцый клон C++. Зачем, спрашивается, тогда вообще переходить на D? Я на него перешел исключительно потому что устал делать "черную работу".
Unity использует Mono - его можно прикрутить к движку и не надо будет ничего доустанавливать, он от майкрософтовского .NET не зависит. Лицензия, видимо, позволяет. И исходники открывать не надо (Unity же закрытый). Я, правда, знаю обо всем этом только понаслышке, на C# никогда не писал и .NET не использовал. |
||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 09-09-2011 17:52 | |||
Пересобирать компилятор не нужно. Есть ключ -c, который говорит, что нужно создать только obj файлы без компоновки. Потом можно собрать вручную, написав link sample.obj. Пробовал прикрутить uniLink, с ним смог уменьшить размер файла простой программы, выводящей сообщения до 104 КБ (со встроенным компоновщиком было 148 КБ). Я хочу отказаться от phobos, но оставить рантайм (хотя неплохо было бы из него убрать сборщик мусора), чтобы не отвалилась большая часть языка. Как его оттуда выделить в отдельную библиотеку? Всё остальное я могу написать сам (на C++ уже написал, перевести будет несложно). | ||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 09-09-2011 22:17 | |||
Да это понятно. Просто я не никогда не вызываю линкер отдельно, потому что link от DigitalMars не имеет версии для Linux. В Linux для такой операции нужно вызывать ld - но с ним мне так и не удалось слинковать объектные файлы без рантайма, ld ругается на многочисленные "undefined reference". Хотя кому как - если поддержка Linux не нужна, то задача упрощается. Но для меня критична кроссплатформенность.
Я же сказал, исходники рантайма и Фобоса открыты, Makefile есть - можно удалить все лишнее и пересобрать. Или, например, можно выделить из них минимальный необходимый набор модулей и компилировать вместе с проектом. Повторяю: как конкретно это сделать, я не знаю, потому что никогда не пробовал. |
||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 11-09-2011 11:44 | |||
А что насчёт dmd и gcc? Лицензия позволит так сделать? |
||||
Gecko Big Boss Группа: Администраторы Сообщений: 719 |
Добавлено: 11-09-2011 12:38 | |||
Лицензия на gcc (и, соответственно, gdc) однозначно позволит. А вот насчет dmd я не уверен. Там сказано:
То есть, копирование по умолчанию запрещено, но можно получить разрешение, если связаться с DM. Автор D/Objective-C так и сделал. Вообще, лицензия - это слабое место dmd. Исходники вроде доступны, но на backend - одна лицензия, проприетарная, на frontend - другая (GPL), на рантайм - третья (Boost)... У меня кстати есть несбыточная мечта - переписать весь dmd на D, и не зависеть больше ни от DigitalMars, ни от кого-либо другого. Но, уж слишком большой труд. |
||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 12-09-2011 13:25 | |||
Выбрал C#. Оказывается, что его компилятор даже входит в состав в .NET Framework, который входит в Vista и 7. На XP тоже у многих может быть, но если нету, то им придётся его качать. С движком вообще ничего постороннего таскать не надо. Ещё осталось разобраться с Mono, чтобы была возможность не зависеть от фрэймворка. Так что это для меня почти идеальный вариант. |
||||
gammaker бывалый Группа: Участники Сообщений: 49 |
Добавлено: 01-10-2011 19:26 | |||
Вот эта программа #include <iostream> using namespace std; int main() { cout << "Hello, World!"; for(;;); return 0; } в g++ выдаёт exe'шник в 912 КБ. Флаг -Os, -O2, -O3 совсем не помогает. Так и должно быть? Вариант программы с puts и printf даёт намного меньшие файлы. |
Страницы: 1 |
Форум движка Xtreme3D / Свободный треп / Новый движок |