Новый движок

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Форум движка Xtreme3D / Свободный треп / Новый движок

Страницы: 1  новая тема

Автор Сообщение

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 29-12-2009 14:56
У меня появилась идея создать свой движок типа Game maker. Основа будет такая же: Событие - Действие. Хочу сделать поддержку языка C++ вместе с API, OpenGL и всего остального. Я думаю сделать так, чтобы код и все настройки пользователя при компиляции записывались в обычный .cpp файл и компилировались компилятором.
Для этого нужно, чтобы был маленький компилятор, который можно запускать из другой программы, например, с помощью функции CreateProcess. Это пока ещё только идея, а сейчас я только изучаю C++, поэтому начну её реализовывать не скоро.
А пока у меня есть вопрос:
Среда dev(не помню полное название) подсвечивает другим цветом функции и переменные в коде? А то у меня Visual C++ 6 не подсвечивает их. Я только изучаю его, но без подсветки кода сложнее писать программу. Если подсвечивает, то можно ссылку?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 29-12-2009 16:11
Среда dev(не помню полное название) подсвечивает другим цветом функции и переменные в коде? А то у меня Visual C++ 6 не подсвечивает их. Я только изучаю его, но без подсветки кода сложнее писать программу. Если подсвечивает, то можно ссылку?


Подсвечивает. Вот ссылка на Dev-C++ 5.0 beta 9.2 на SourceForge:
http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe

бывалый
Группа: Участники
Сообщений: 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?

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 у них ведь общий.

в D сборщик мусора мне не нужен, можно ли его убрать, чтобы не занимал лишнюю оперативную память и не увеличивал размер exe?

GC.disable() в core.memory. Только из exe его так просто не уберешь - для этого надо пересобрать рантайм (при этом придется отказаться от Phobos, так как он без сборщика мусора не будет нормально работать). Либо вовсе не использовать рантайм, но тогда уж проще писать на чистом C.
Все-таки D - это не C и не C++: автоматическое управление памятью практически стало частью его философии. А размер exe-шника в наши дни уже не так критичен (мегабайтом больше, мегабайтом меньше - какая разница?) Да и за скоростью, похоже, нынче уже не гонятся. Иначе как понять, почему столько людей используют C# и jаvа?

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 09-09-2011 15:35
при этом придется отказаться от Phobos

Мой движок на C++ не использует STL, у меня всё своё, велосипедное, поэтому переделать на D будет не так сложно и Phobos не понадобится. Но я никак не могу скомпоновать программу на D без Phobos. Рантайм находится в нём? Если удастся избавиться от phobos'а, то и размер уменьшится, и lib таскать с движком не придётся. Где находится его рантайм и как его пересобрать? Вы проводили какие-нибудь эксперименты с DMD, типа сборки, изменения компилятора, рантайма, phobos?
А размер exe-шника в наши дни уже так критичен (мегабайтом больше, мегабайтом меньше - какая разница?)

В Интернет закачивать большие файлы неудобно. Часто бывают ограничения на размер.
Да и за скоростью, похоже, нынче уже не гонятся. Иначе как понять, почему столько людей используют C# и jаvа?

Так как движок игровой, то скорость важна. Хотя, если там разница в скорости не больше 2-3 раз, то я готов использовать C#. Как его прикрутить к движку? Тоже интересная идея. Кстати, .NET Framework 2 нужно устанавливать или он уже везде стоит (начиная с Windows XP)? А то ещё вдруг придётся его таскать? Думаю использовать второй Framework, так как вероятность, что он установлен, выше, а возможностей хватит.
Будут ли какие-нибудь проблемы с лицензиями, если я выберу какой-нибудь из этих вариантов? Смогу ли я продавать свой движок, не должен ли я буду открыть исходный код своего движка?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 09-09-2011 17:35
я никак не могу скомпоновать программу на D без Phobos. Рантайм находится в нём?

Где находится его рантайм и как его пересобрать? Вы проводили какие-нибудь эксперименты с DMD, типа сборки, изменения компилятора, рантайма, phobos?

Рантайм объединен с Phobos в одну библиотеку - libphobos.a. Его можно не использовать, но, поскольку процесс компоновки вшит в dmd, придется пересобрать либо libphobos.a (чтобы убрать оттуда все лишнее), либо компилятор (с тем, чтобы он линковал без libphobos.a). Или же использовать сторонний линкер (но это уже хардкор). Исходники компилятора и рантайма идут в комплекте.
Но я такими экспериментами никогда не занимался. Я лично считаю, что нет смысла отказываться от рантайма и Phobos, и получить в итоге довольно куцый клон C++. Зачем, спрашивается, тогда вообще переходить на D? Я на него перешел исключительно потому что устал делать "черную работу".

я готов использовать C#. Как его прикрутить к движку? Тоже интересная идея. Кстати, .NET Framework 2 нужно устанавливать или он уже везде стоит (начиная с Windows XP)?

Смогу ли я продавать свой движок, не должен ли я буду открыть исходный код своего движка?

Unity использует Mono - его можно прикрутить к движку и не надо будет ничего доустанавливать, он от майкрософтовского .NET не зависит. Лицензия, видимо, позволяет. И исходники открывать не надо (Unity же закрытый).
Я, правда, знаю обо всем этом только понаслышке, на C# никогда не писал и .NET не использовал.

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 09-09-2011 17:52
Пересобирать компилятор не нужно. Есть ключ -c, который говорит, что нужно создать только obj файлы без компоновки. Потом можно собрать вручную, написав link sample.obj. Пробовал прикрутить uniLink, с ним смог уменьшить размер файла простой программы, выводящей сообщения до 104 КБ (со встроенным компоновщиком было 148 КБ). Я хочу отказаться от phobos, но оставить рантайм (хотя неплохо было бы из него убрать сборщик мусора), чтобы не отвалилась большая часть языка. Как его оттуда выделить в отдельную библиотеку? Всё остальное я могу написать сам (на C++ уже написал, перевести будет несложно).

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 09-09-2011 22:17
Пересобирать компилятор не нужно. Есть ключ -c, который говорит, что нужно создать только obj файлы без компоновки. Потом можно собрать вручную, написав link sample.obj

Да это понятно. Просто я не никогда не вызываю линкер отдельно, потому что link от DigitalMars не имеет версии для Linux. В Linux для такой операции нужно вызывать ld - но с ним мне так и не удалось слинковать объектные файлы без рантайма, ld ругается на многочисленные "undefined reference". Хотя кому как - если поддержка Linux не нужна, то задача упрощается. Но для меня критична кроссплатформенность.

Я хочу отказаться от phobos, но оставить рантайм (хотя неплохо было бы из него убрать сборщик мусора), чтобы не отвалилась большая часть языка. Как его оттуда выделить в отдельную библиотеку?

Я же сказал, исходники рантайма и Фобоса открыты, Makefile есть - можно удалить все лишнее и пересобрать. Или, например, можно выделить из них минимальный необходимый набор модулей и компилировать вместе с проектом.
Повторяю: как конкретно это сделать, я не знаю, потому что никогда не пробовал.

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 11-09-2011 11:44

Unity использует Mono - его можно прикрутить к движку и не надо будет ничего доустанавливать, он от майкрософтовского .NET не зависит. Лицензия, видимо, позволяет. И исходники открывать не надо (Unity же закрытый).
Я, правда, знаю обо всем этом только понаслышке, на C# никогда не писал и .NET не использовал.

А что насчёт dmd и gcc? Лицензия позволит так сделать?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 11-09-2011 12:38
Лицензия на gcc (и, соответственно, gdc) однозначно позволит. А вот насчет dmd я не уверен. Там сказано:

The Software is copyrighted and comes with a single user license, and may not be redistributed. If you wish to obtain a redistribution license, please contact Digital Mars.

То есть, копирование по умолчанию запрещено, но можно получить разрешение, если связаться с DM. Автор D/Objective-C так и сделал.

Вообще, лицензия - это слабое место dmd. Исходники вроде доступны, но на backend - одна лицензия, проприетарная, на frontend - другая (GPL), на рантайм - третья (Boost)...
У меня кстати есть несбыточная мечта - переписать весь dmd на D, и не зависеть больше ни от DigitalMars, ни от кого-либо другого. Но, уж слишком большой труд.

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 12-09-2011 13:25
Выбрал C#. Оказывается, что его компилятор даже входит в состав в .NET Framework, который входит в Vista и 7. На XP тоже у многих может быть, но если нету, то им придётся его качать.
С движком вообще ничего постороннего таскать не надо. Ещё осталось разобраться с Mono, чтобы была возможность не зависеть от фрэймворка. Так что это для меня почти идеальный вариант.

бывалый
Группа: Участники
Сообщений: 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 / Свободный треп / Новый движок

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU