WIN20230711160636Pro.jpg105 Кб, 1276x716
хочу движок на OpenGL + Cи Савтис # OP 885527 В конец треда | Веб
прив, Аноны. я собираюсь создать движок для 2D игр на OpenGL, звук будет на OpenAL, возможно использование шейдеров, которые будут написаны на OpenGL Shader Lang, ввод будет производится при помощи GLFW.
Сам движок будет состоять из нескольких частей.
- Скриптовый язык (буду использовать Python)
- - упаковщик скриптов (чтобы нельзя получить исходный код готовой игры, тип защита)
- Исполнитель скриптов (штука, которая будет считывать команды языка и выполнять их: отрисовывать что-то, управлять окном, спавнить юнитами и т.д)
- Графическая и звуковая часть (отрисовка графики, воспроизведение звуков, управление файлами, окном, сетью)
- графический интерфейс движка (модуль, который будет делаться самым последним и скорее всего будет делаться на С++ или Python)
2 885537
>>85527 (OP)

>Скриптовый язык (буду использовать Python)


Делай на lua. Ты так двух зайцев убьёшь - и скриптовый язык, и компиляция в плюсы для типа защиты.
Но ты уже создал тред, потому вся разработка уже закончилась.
3 885539
>>85537
вот ты засранец, взял и заруинил мне весь процесс.
я хотел взять питон, тип там есть либы, которые можно линковать и получать доступ к процессу исполнения кода. это можно юзать, штоб приплетать к этому механики движка
4 885548
>>85539
C lua всё еще проще. Кресты могут вызывать функции из lua, а lua может вызывать функции крестов. Так что приплетать механики движка к скриптам будет очень просто. Я бы тебе советовал вообще не смотреть в сторону питона. А ещё лучше скачать какой-нибудь Stride это бывший Xenko а это бывший Paradox3D и посмотреть, как всё реализовано там. Это не запредельно сложные крайтековские или эпиковские поделия, разобраться будет проще, чтобы понять основные принципы.
5 885624
>>85548
бля да. луа лучше, так как у меня изначально была идея прикрутить питон и чекать, то что он творит, типо специально в питоне вызывать функцию, которой нет в пространстве имен, но мой движок это перехватывал и если это имя функции, которая прописана в движке, то он её вызывал
6 885815
>>85527 (OP)

> Ogl shader lang


Это ты так glsl обозвал?
7 885832
8 885850
>>85527 (OP)
Предлагаю начать с создания своего собственного языка программирования и компилятора к нему.

Потом на этом языке свою ОС напишешь...
9 885851
>>85850
имба, чел
10 885873
>>85624
Не, за такие магические функции юнити до сих пор хуесосят. Плюс там же есть проблема, когда скриптов миллиард, движок перебирает все вызовы, даже если в них нет кода, из-за чего производительность идёт по пизде. Пили лучше события и подписывай скрипты на события апдейтов из движка.
11 885880
>>85873
окич. вообще, я думал просто при запуске интерпретатора питона, просто перед исполнением скрипта, создавать функции, которые просто будут вызывать функции движка через ctypes
12 885895
>>85539
Есть такая библиотека как pybind11. Она на с++, но 99.99% вероятность что у тебя и так С/С++ компилятор
Если я правильно понимаю ее назначение, то ты можешь зарегистрировать свои С++ методы и переменные и они будут доступны из питона.
https://pybind11.readthedocs.io/en/stable/basics.html
https://pybind11.readthedocs.io/en/stable/advanced/cast/overview.html

Другой промышленный инструмент это https://www.swig.org/tutorial.html
Там ты пишешь дескрипторы к своему Си и оно само делает байндинги под все языки на свете, включая питон.

Сам я только читал про них и не пользовался.
13 885961
>>85895
а чем ctypes плох? я смотрел сравнение скорости и ctypes отстает на 0.0002 секунды
14 894110
bump
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее