3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
|
|
1 | |
Написание компилятора01.10.2019, 17:49. Просмотров 2322. Ответов 36
Метки нет Все метки)
(
Я работаю над игровым движком и когда допустим человек закончил создавать игру ему нужно создать ее. Как можно сделать создание exe в моем exe? То есть компиляция. Накиньте литературы или примеров. Хоть что то. Заранее спасибо
0
|
|
01.10.2019, 17:49 | |
Непонятное поведение компилятора Написание простого компилятора Внедрение компилятора Ошибка компилятора |
|
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
|
|
02.10.2019, 16:18 [ТС] | 4 |
Я создавал в IDE
0
|
2664 / 1667 / 347
Регистрация: 09.09.2017
Сообщений: 6,928
|
|
02.10.2019, 16:41 | 6 |
А что мешает оформить свой движок просто как библиотеку и пускай юзер просто с ней линкуется.
Другой вариант - использовать скриптовый язык, ему компиляция не нужна, просто в своей программе читаете этот скрипт и интерпретируете. Обычные языки для этого - Lua и Python. Хотя отдельные ценители могут хоть на bash игру писать. То есть вы даже не представляете как работает компилятор. Попробуйте скомпилировать свою программу без IDE для начала. Те команды, которые вы наберете в консоли, потом можно будет скормить, скажем, функции system().
0
|
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
|
|
02.10.2019, 19:14 [ТС] | 7 |
Ну буду дальше учиться. Хотя так и не понял что нужно
Добавлено через 2 минуты Можете по подробнее объяснить про библиотеку. Если я сделаю библиотеку то игру же саму на чем то написать нужно и сам экзешник создать с файлами.
0
|
2664 / 1667 / 347
Регистрация: 09.09.2017
Сообщений: 6,928
|
|
02.10.2019, 23:03 | 8 |
Да, но тут уже будет огромный выбор готовых компиляторов и IDE. То есть юзер будет иметь возможность пользоваться тем, что ему удобно и в смысле языка, и компилятора и редактора. А ваш движок будет всего лишь еще одной библиотекой, которую придется подключить.
. Но сразу должен предостеречь: движок штука сложная, а у вас проблемы с элементарными вещами. Очень сомневаюсь что вы хотя бы доведете проект до работоспособного состояния. И более важный вопрос: что вас подвигло на написание движка? Просто желание изобрести велосипед (похвальное в плане обучения)? Или предположение, что сделать сначала движок, а потом на нем игру будет проще, чем монолитом? (пока нет опыта это неверно - не сможете оценить необходимый функционал). Или все же есть опыт разработки большого количества игр и вы уверенно можете выделить общие куски? (ох не верю)?
0
|
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
|
|
03.10.2019, 06:43 [ТС] | 9 |
Просто я программирую всего 3 месяца а уже столько информации нашел. И решеним был компилятор g++. Только вот проблема. Я не знаю как компилировать без консоли. Автоматически без ide
0
|
2664 / 1667 / 347
Регистрация: 09.09.2017
Сообщений: 6,928
|
||||||
03.10.2019, 07:28 | 10 | |||||
![]() Решение
Да заметно что немного. Нет, для трех месяцев может и порядочно, но для создания движка очень мало.
Можно и так. Правда, не совсем понимаю как вы собираетесь подсовывать ему и свой код, и пользовательский и чем это лучше оформления в библиотеку. А как через консоль - знаете? Ну так в system() передаете ту же самую строку (в качестве строки может быть переменная).
0
|
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
|
|
03.10.2019, 09:19 [ТС] | 11 |
Большое спасибо за помощь. Только я 90% инфы не понял) А что вы имеетве ввиде под оформлением в библиотеку?
Добавлено через 35 минут Чтобы оформить движок в dll и он работал экзешником. Нужно создать сам экзешник.
0
|
2664 / 1667 / 347
Регистрация: 09.09.2017
Сообщений: 6,928
|
|
03.10.2019, 09:33 | 12 |
Ну вы же можете использовать сторонние библиотеки. Скажем, для графики в игре хорошо подходит библиотека SDL. Она состоит из набора заголовочных файлов и нескольких статических библиотек (*.a для gcc или *.lib для msvs). Для использования вы линкуете ее к своему проекту, например в случае gcc флагом -l:
gcc main.c -lSDL2 Вот так же и ваш код можно собрать в статическую (*.a / *.lib) или, что хуже, динамическую (*.so / *.dll), а потом юзер слинкует со своей программой. . Знаете, то, что вы пытаетесь что-то узнать, это похвально. Но лучше это делать не на помойках типа форумов или ютуба, а в нормальной литературе.
0
|
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
|
|
03.10.2019, 09:52 [ТС] | 13 |
А у вас есть литература по компиляции и еще по генерации кода? И да я собираюсь использовать directX
Добавлено через 11 минут Я просто немного дурачек. Можно поподробнее насчет библиотеки. Я знаю что и как это работает. Но как можнл это использовать чтобы создать игру??? Ведь нужно создать экзешник и взять весь функионал из dll. Но екзешник и длл могут поменяться в зависимости от того как программист создаст игру.
0
|
2664 / 1667 / 347
Регистрация: 09.09.2017
Сообщений: 6,928
|
|
03.10.2019, 11:10 | 14 |
Точную книгу не назову - свои знания я собирал несистемно: что-то тут, что-то там.
А чего не OpenGL? Старые версии проще в использовании (glBegin / glEnd), новые не менее эффективны, чем DX. Зато не будет привязки в windows. Дурачки тут на форуме сыплют бесполезными темами "как написать хелло-ворлд, а то учусь в институте, а ни одного учебника не прочитал". Еще бы знать как вы себе представляете функционирование своего движка... Ладно, попробую максимально абстрактно. Допустим, вы написали игру, например, стратегию. В ней можно выделить несколько блоков - ввод, вывод, правила игры (какие бывают здания, что в них можно делать), интерфейс (поверх блоков ввода-вывода), сетевое взаимодействие, звук, управление ресурсами и многие другие. Пока что игра монолитная, не имеет выделенного движка. Но вот отдельные модули уже стоит вынести, хотя бы для тестирования. Скажем, звуковому модулю сеть явно не нужна, его можно отлаживать чуть ли не в сферическом вакууме. То есть у вас есть, грубо говоря, файлы audio.c, net.c, graphics.c и т.д., которые вы потом просто компилируете вместе. А теперь можно вынести в библиотеку ту часть игры, которая скорее всего понадобится в других играх: та же графика, ресурсы, сеть. Поскольку пока что они гвоздями прибиты к "монолиту", приходится их изменять, чтобы уменьшить количество зависимостей, абстрагировать одно от другого. Но это все равно такие же файлы исходного кода, ничем не лучше и не хуже других. Но вместо того чтобы напрямую подключать их к проекту, вы собираете из них библиотеку. Теперь это не отдельные файлы, а законченный "черный ящик", который можно подключить к другому проекту. Как-то так.
0
|
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
|
|
03.10.2019, 17:35 [ТС] | 15 |
Ну это я понял. Но вы сказали что Можно и так. Правда, не совсем понимаю как вы собираетесь подсовывать ему и свой код, и пользовательский и чем это лучше оформления в библиотеку.. А в чем возникнит проблема если я скомпилирую? И почему я не смогу соеденить пользовательский код и мой. У меня будет в движке функция update() в ней я буду все обновлять. А функция draw не доступна будет она будет частью движка она закрыта. И вот появился вопрос как создать кодом другой файл .cpp и записать туда пользовательский хкод?
0
|
2664 / 1667 / 347
Регистрация: 09.09.2017
Сообщений: 6,928
|
|
03.10.2019, 20:29 | 16 |
Это будет зависеть от реализации. В общем-то, попробуйте, даже если не выйдет получите полезный опыт.
А в чем проблема? *.cpp это обычный текст. fopen / fprintf / fclose или аналогичное через плюсовые потоки.
2
|
2 / 2 / 1
Регистрация: 07.09.2019
Сообщений: 93
|
|
05.10.2019, 08:21 | 17 |
можно еще через винапи OpenFile ReadFile WriteFile, помоему за три месяца вы ничего невыучили в своем вузе, если даже незнаете как банально создать файл на плюсах, либо как вызвать команду system() чтобы выдать в CMD компилятору задание на компиляцию...читайте книги не по играм а по плюсам и по си ...это вам сейчас нужнее чем разбирать OpenGL или DirectX...покупайте студию 2019 за 100000 либо просто лицензию на Unity...и пишите себе игры...если вы незнаете как написать создание файла в плюсах вы не напишите ни игры ни компилятора...книг в сети полно...либо покупайте за свои казённые, для комерческого проекта полюбому GCC неподойдет у него права GNU на использование, а это значит открытый сорц,хотите заработать покупайте более серьезные среды с компиляторами...но у вас денег нехватит оплатить столько работы програмистов...сами вы напишите тетрис в то время как группа профессионалов за год способна написать GTA5 SKYRIM COUNTER STRIKE и так далее
0
|
2664 / 1667 / 347
Регистрация: 09.09.2017
Сообщений: 6,928
|
|
05.10.2019, 09:26 | 18 |
Вот это плохой совет. Пока есть возможность писать простой и кроссплатформенный код, лучше это и делать.
Тем более что использование fopen / fread / fwrite / fprintf / fscanf / fclose проще, чем winapi'шных. Это само собой. Но если ТС хочет написать игру, книжки по ним тоже стоит читать. Чтобы понимать что и для чего делается, чтобы не пропала мотивация. Другое дело, что начинать с "взрослых" игр явно не стоит, лучше сначала написать всякие тетрисы, змейки и т.п. Тем даже графика не нужна, достаточно текстового режима. Что за чушь вы несете! gcc прекрасно можно использовать и в опенсорсных и закрытых проектах. ТС же не собирается лезть в исходный код компилятора (все равно не осилит), а компиляция с его помощью не накладывает ограничений на лицензию. Использование стандартных библиотек тоже: у них не gpl лицензия. Что-то они подобные игры немножко не за год пишут. Хотя, конечно, там большая часть времени и не на кодинг уходит. Но главное даже не это: "группа профессионалов" свои игры не с нуля пишет. У них есть старые наработки, а главное - знания и опыт. А у ТСа знаний и опыта нет, и их надо нарабатывать, иначе даже в команде он будет лишь балластом. На данном этапе я бы еще раз посоветовал начать с чего-то простого, что вы совершенно точно* сможете написать. Когда получится, можно добавлять свистелки и полезные модификации. Скажем, к тому же тетрису добавить сетевой режим, аудио, анимацию, даже трехмерку. *то, что вы думаете, что можете написать программу с легкостью еще ничего не значит. Как показывает мой опыт, в любом проекте встретятся подводные камни, в которые придется долбиться несколько дней с выражением лица "ну это же элементарная задача, почему она не получается?"
0
|
2664 / 1667 / 347
Регистрация: 09.09.2017
Сообщений: 6,928
|
|
05.10.2019, 13:29 | 20 |
Вы что, предлагаете выложить волшебный движок, убийцу Крузиса, Ведьмака и Марио - в опенсорс что ли?! Ну что вы, как можно!
1
|
05.10.2019, 13:29 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Опции компилятора Gw/Gy Опции компилятора
Ошибка компилятора C2600 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |