LINUX.ORG.RU

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

 , , ,


0

2

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

Варики

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

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

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

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

Deleted

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

По сабжу - юниксвей же, виртуальный терминал в твоей игре запускает реальный bash на компе, и оттуда уже autotools, GNU Make и GCC как обычно

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

Берёшь какой-нибудь Konsole или xterm, и делаешь так, чтобы он рендерил консолечку в текстуру монитора в твоей игре

Harald ★★★★★
()
Последнее исправление: Harald (всего исправлений: 1)

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

Он через камеру на дроне увидел, что дочка в шалашике с 30-летним Вазгеном, и его схватил инфаркт?

Можно сделать коннект к онлайн-компилятору С, такие есть, погугли.

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

Иначе вдруг игрок напишет программу с ошибкой, она сегфолтнется и заодно и твою игру сегфолтнет, а так только отдельный процесс упадёт

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

Хочется эм контроля, я игру в стим потом намереваюсь впихнуть, а после осознания что она никому там не нужна выложить на gitlab. Мне нравится идея c tcc можно и системный юзать, можно и с собой таскать.

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

Сделай лучше в игре этапы «найдите баг в коде» и прокидывай в игру код всяких опенсорсных проектов.

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

Это уже из разряда монетизации =) Боюсь после раскрытия сути игроки меня найдут и победят в неравной схватке

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

Не знаю как с гарантией, пущу сразу 2 процесса изначально независимых игра + кодообработчик

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

не, ну можно ещё VirtualBox запускать, в нём заготовленный дистр убунты, а вывод с виртуального монитора рендерить в текстуру монитора в твоей игре

Harald ★★★★★
()
Последнее исправление: Harald (всего исправлений: 1)
Ответ на: комментарий от Harald

Ооооо, неподражаемый линуксоид-стайл. Только вместо убунты надо давать stage3 генты и хендбук.

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

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

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

и нескучные обои с логотипом игры в тот дистр положить

Harald ★★★★★
()

но я хочу C like

Компиляй шлангом в llvm а оттуда через emscripten в js. Результат можно выполнять в js-интерпретаторе, эмулирующем твой дрон.

no-such-file ★★★★★
()
Ответ на: комментарий от Harald

Я неосилил, но хотел + основной и единственный язык разработки это С, форк Corange

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

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

Deleted
()

А насколько c-like? Может, тебе какая-нибудь жаба с жабамашиной подойдёт?

Вот в опенсиме, например, скрипты игроков на их языке компиляются для исполнения в виртуалке от .Net/Mono. Но там пошли дальше, там весь сервер на сишарпе написан :)

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Это слишком жёстко для меня, я один, притащу такого монстра в игру, там что-то сломается и сломаюсь я от потугов понять что сломалось. Хочется да иметь встроенный язык для написания ботов например или даже каких то сцен, но одновременно хочется что-то лёгкое, портируемое, дружелюбное, простое, тесно интегрированное и сидящее с одной кодовой базе. Ну жопа у меня от хотелок слипнется конечно, но смотрю на вариации tcc/picoc пока что, возможно вообще будет сделан огрызок с проброшенными сотней функций и всё. Гляну, сейчас выглядит всё титанически сложно для меня, эх ладно, но спасибо за идею

Deleted
()

Это уже было, раз 5 только за последний год. Придумай что-нибудь более оригинальное, сколько можно воровать заезженные тропы.

anonymous
()

Lua. Оно конечно Pascal-like, но прошивки на нем тоже пишут (NodeMCU). Так что очень даже реалистично.

Ну и для игрока будет довольно просто на нем писать, и тебе его встроить ее будет очень просто. Можешь взять даже LuaJIT.

А сюжет классный, я б поиграл, удачи :)

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

Это уже было, раз 5 только за последний год.

Где? Я всё сам придумываю, нигде не тырю ничего

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

Казуальщины палным пално, надож разнообразить

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

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

anonymous
()
Ответ на: с классики надо начинать от fluorite

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

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