LINUX.ORG.RU

Встроить язык си в программу на языке си ::)

 , , ,


0

2

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

Варики

  • Написать подмножество языка С и встроить его в двиг - не осилю

  • Встроить дружественный для этого иной язык вроде lua - но я хочу C like

  • Встроить внешний компилятор вроде tcc который будет компилить .so либу и уже двиг через dlopen будет подгружать функции. Или через tcc исполнять код из памяти без либ.

Есть идеи как ещё можно?

Deleted

Последнее исправление: Deleted (всего исправлений: 2)

Знатная почва для lor-срача, почти образцовая :)

При наличии той-же травы что у автора, я бы просто прикрутил эмулятор PDP-11.

Добротно, винтажно и есть из чего выбрать = https://pdp-11.org.ru/emulation.pl

Deleted
()
Ответ на: комментарий от Harald

а для этого нужно, чтобы твоя игра содержала в себе реализацию X сервера

Ужас какой. Тащить говно в свою игру.

EXL ★★★★★
()
Ответ на: комментарий от Harald

В том же Qt контексты окон-текстур «in 3D game» были сделаны куда как аккуратнее:

http://esxi.z-lab.me:666/~exl_lab/screens/qt_wolf3d_funny.png
http://esxi.z-lab.me:666/~exl_lab/screens/qt_wolf3d_funny3.png

И тем более без угребищного пердолинга с говноиксами. Иксы в данном случае как кобыле пятая нога. Wayland, кстати, тоже.

EXL ★★★★★
()

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

движёк

Пожалуйста, не надо...

Ceiling_QB ★★★★
()

Есть идеи как ещё можно?

Можно начать принимать галоперидол.

LamerOk ★★★★★
()

lua прикрути к движку, пусть игрок на нем пишет

kickass
()
Ответ на: комментарий от KennyMinigun

Есть довольно весомое предположение, что автор дискуссии не продвинется дальше идеи,судя по описанию и орфографическому осознанию слова «движёк».

anonymous
()

О! Я когда-то писал игру. Там по сценарию игроку предлагался ассемблороподобный ЯП.

Извиняюсь за оффтоп.

Deleted
()
Ответ на: комментарий от EXL

В том же Qt контексты окон-текстур «in 3D game» были сделаны куда как аккуратнее:

Это не окна, это просто вебкит рендерится в текстуру. А попробуй туда несколько окон отрендерить. Например, сделай Save as для страницы, или попробуй файл на яндекс-диск загрузить — для этого тоже придётся отрисовать окно выбора файла...

anonymous
()
Ответ на: комментарий от anonymous

Если будет скучно, то можно встроить Tcl, а из него вызывать программу на Little. Синтаксис сишный. И можно не только прошивку для дрона написать, а ещё и гуй для него на Tk. ;-)

если правильно (то есть вместе с EventLoop) встроить Tcl, то собственно больше ничего и ненадо. Пакет Critcl позволяет компилять и исполнять C/С++ на лету, используя системный компилер

MKuznetsov ★★★★★
()
Ответ на: комментарий от Deleted

Удваиваю эмулятор. Аналогичным образом (вариации на тему 6502) было сделано в одном моде для майнкрафта.

anonymous
()
Ответ на: комментарий от hobbit

Ну оно и с С/CPP интегруется при желании. Инстанс цомпелятора дернуть из дллсо-шки никто не запрещал.

anonymous
()
Ответ на: комментарий от shkolnick-kun

Lua встроить в сишный код - как два пальца. У Ecmascript конечно C-подобный синтаксис, но его куда-то встроить ад аццкий, хотя можно.

ArkaDOSik ★★
()

отправил своего дрона в тестовый полёт отправляя запрограммированного им дрона на дерево к дочке в шалашик что бы тот принёс ей подарок на день её рождения.

Джва года ждал такую игру

upcFrost ★★★★★
()
Ответ на: комментарий от ArkaDOSik

но его куда-то встроить ад аццкий, хотя можно.

Duktape. 2 файла. Ад аццкий.

crutch_master ★★★★★
()
Ответ на: комментарий от annulen

Или perl c Inline::C

зачем с Inline::C? Шикарный ж анонс новой игры был бы: «у вас есть perl-интерпретатор...»

Можно прям дальше не читать

upcFrost ★★★★★
()

Не забудь закупиться дронами для игроков. (%

mord0d ★★★★★
()
1 апреля 2019 г.
Ответ на: комментарий от Deleted

При наличии той-же травы что у автора, я бы просто прикрутил эмулятор PDP-11.

Тогда уж лучше эмулятор языка из «Искусства программирования» Кнута.

hobbit ★★★★★
()
Ответ на: комментарий от sqq

Склоняюсь к интерпретаторам, хотя и то и то нужно править, первое обрубить связь с реальной фс (мне крики типа «твоя программа удалила мне всюе файлы!»), второе пробросить функции движка в код языка или писать их там но с выхлопом в виде формата типа json и уже движком обрабатывать. По сути от встройки нужны только управляющие конструкции/переменные вот всё это остальное не важно, даже более того не нужно! В моём конкретном случае. Но прям что бы выбрать что-то пока что нет, LittleC тут посоветовали https://github.com/pmachapman/LittleC можно его в принципе. Но я не решил ещё.

Deleted
()
Ответ на: комментарий от Ceiling_QB

Да я как бы в курсе, но суть то в том что я хочу язык под/над множество С. В том плане что его синтаксис/переменные/операторы

Deleted
()
Ответ на: комментарий от sqq

Я это просто как пример, формат не важен, это вообще если разделять всё. Можно и лучше вообще бинарный формат свой налабать.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.