Пятница, 29 Ноября 2024, 18:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Sirius - (Пока только анонс)
westernsДата: Вторник, 22 Октября 2013, 00:10 | Сообщение # 1
был не раз
Сейчас нет на сайте
Sirius - будет библиотекой для разработки 2D игр!
Аналоги: - HGE, DGLE, eXgine
Мотивация: - самообучение, разобраться что и как!

-======[ ПРЕДПОЛОГАЕМАЯ СТРУКТУРА ]======-




Хиддеры: Delphi/FPC, C/C++
Платформа: Windows
Рендер: DX9
Текстуры: PNG
Звук: WAV, MP3


-======[ РЕАЛИЗОВАННЫЕ МОДУЛИ ]======-

MATH: (24 функции) 18.10.2013
cos - возвращает косинус аргумента
sin - возвращает синус аргумента
tg - возвращает тангенс аргумента
ctg - возвращает котангенс аргумента
arccos - возвращает арккосинус аргумента
arcsin - возвращает арксинус аргумента
arctg - возвращает арктангенс аргумента
arcctg - возвращает арккотангенс аргумента
sincos - возвращает синус и косинус аргумента
abs - возвращает абсолютное значение аргумента
frac - возвращает дробную часть аргумента
trunc - возвращает целую часть дейсвительного аргумента
ceil - округляет аргумент до наибольшего целого, превышающего или равного ему
floor - округляет аргумент до наименьшего целого, меньшего или равного ему.
round - возвращает ближайшее целое аргумента
min - возвращает меньшее из чисел при савнении
max - возвращает большее из чисел при савнении
exp - экспонента
lg - логарифм десятичный
ln - логарифм натуральный
sqr - квадрат числа
sqrt - корень квадратный из числа
distance - расстояние между двумя точками
find_angle - угол поворота между двумя точками

UTILS: (10 функций) 20.10.2013
int_to_str - преобразование целочисленного в строку
str_to_int - преобразование строки в целочисленное
float_to_str - преобразование дробного в строку
str_to_float - преобразование строки в дробное
rad_to_deg - из радиан в градусы.
rad_to_cycle - из радиан в круговые.
deg_to_rad - из градусов в радианы
deg_to_cycle - из градусов в круговые
cycle_to_rad - из круговых в радианы
cycle_to_deg - из круговых в градусы

VECTORS: (15 функций) 21.10.2013
vector_create - создание вектора из указанных координат
vector_add - сложение векторов
vector_sub - вычитание векторов
vector_div - деление вектора на число
vector_mul - умножение вектора на число
vector_abs - взятие параметров по модулю
vector_dot - скалярное произведение векторов
vector_negativ - получение вектора инвертного данному
vector_normalize - возвращает нормализированный вектор
vector_length - получает длину вектора
vector_inc - увеличение параметров вектора на единицу
vector_dec - уменьшение параметров вектора на единицу
vector_rotate - поворот вектора на определенный градус (в радианах)
vector_equal - возвращает true если вектора равны
vector_clamp - ограничивает компоненты вектора в заданном диапазоне

COLLISION: (50 функций) 22.10.2013
point_create - создает точку
line_create - создает линию
quad_create - создает прямоугольник
circle_create - создает окружность
triangle_create - создает треугольник
coord_in_rect - попадают ли координаты в периметр координат
coord_in_quad - попадают ли координаты в прямоугольник
coord_in_triangle - попадают ли координаты в треугольник
coord_in_threepoint - попадают ли координаты в область между 3х точек
coord_in_circle - попадают ли координаты в область окружности
point_in_rect - попадает ли точка в периметр координат
point_in_quad - попадает ли точка в прямоугольник
point_in_triangle - попадает ли точка в треугольник
point_in_threepoint - попадают ли точка в область между 3х точек
point_in_circle - попадает ли точка в область окружности
line_vs_line - пересекаются ли линии
line_vs_rect - пересекается ли линия с периметром координат
line_vs_quad - пересекается ли линия с прямоугольником
line_vs_triangle - пересекается ли линия с треугольником
line_vs_threepoint - пересекается ли линия с областью между 3х точек
line_vs_circle - пересекается ли линия с окружностью
line_in_rect - вписана ли линия в периметр координат
line_in_quad - вписана ли линия в прямоугольник
line_in_triangle - вписана ли линия в треугольник
line_in_threepoint - вписана ли линия в область между 3х точек
line_in_circle - вписана ли линия в область окружности
rect_vs_rect - пересекается ли периметр координат с периметром координат
rect_vs_quad - пересекается ли периметр координат с прямоугольником
rect_vs_triangle - пересекается ли периметр координат с треугольником
rect_vs_threepoint - пересекается ли периметр координат с областью между 3х точек
rect_vs_circle - пересекается ли периметр координат с окружностью
rect_in_recr - вписан ли периметр координат в периметр координат
rect_in_quad - вписан ли периметр координат в прямоугольник
rect_in_triangle - вписан ли периметр координат в треугольник
rect_in_threepoint - вписан ли периметр координат в область между 3х точек
rect_in_circle - вписан ли периметр координат в окружность
quad_vs_quad - пересекается ли прямоугольник с прямоугольником
quad_vs_triangle - пересекается ли прямоугольник с треугольником
quad_vs_threepoint - пересекается ли прямоугольник с областью между 3х точек
quad_vs_circle - пересекается ли прямоугольник с окружностью
quad_in_quad - вписан ли прямоугольник в прямоугольник
quad_in_triangle - вписан ли прямоугольник в треугольник
quad_in_threepoint - вписан ли прямоугольник в область между 3х точек
quad_in_circle - вписан ли прямоугольник в окружность
circle_vs_triangle - пересекается ли окружность с треугольником
circle_vs_threepoint - пересекается ли окружность с областью между 3х точек
circle_vs_circle - пересекается ли окружность с окружностью
circle_in_triangle - вписана ли окружность в треугольник
circle_in_threepoint - вписана ли окружность в область между 3х точек
circle_in_circle - вписана ли окружность в окружность

FILES: (13 функций) 23.10.2013
file_open_read - открывает файл для чтения
file_open_write - открывает файл для записи, если файл отсутствует создает его
file_remove - удаляет указанный файл
file_exists - проверяет существует ли файл
file_close - закрывает все операции с файлом
file_seek_set - смещение внутри файла от его начала
file_seek_cur - смещение внутри файла от текущей позиции
file_seek_end - смещение внутри файла от его конца
file_pos - возвращает текущую позицию внутри файла
file_read - читает данные из файла в буффер
file_write - пишет данные буффера в файл
file_size - возвращает размер файла
file_setpath - устанавливает указанную директорию как текущую


-======[ В БЛИЖАЙШЕЙ РЕАЛИЗАЦИИ ]======-

MEMORY: (?? функций)
LOG: (5 функций)
INI: (?? функций)
NETWORK: (?? функций)


Сообщение отредактировал westerns - Среда, 23 Октября 2013, 11:20
romgermanДата: Вторник, 22 Октября 2013, 12:54 | Сообщение # 2
старожил
Сейчас нет на сайте
Уже есть возможность что-либо сделать? Или готовы только математические функции?
arlaidДата: Вторник, 22 Октября 2013, 13:01 | Сообщение # 3
частый гость
Сейчас нет на сайте
Хорошая идея ! Продолжайте ! smile
westernsДата: Вторник, 22 Октября 2013, 13:03 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата romgerman ()
romgerman

список выше показывает "что сделано"
сейчас в принципе осталось проверить работу коллизий (на верный результат)

реализовано создание окна и операций с файлами, но не вынесенно отдельно в модули, т.к. хочу вынести платформозависимую часть, а для этого придется написать модуль работы с памятью (на случай портирования). Отрисовку в отдельный модуль пока портировать не буду, надо с этим разобраться.

ну, а если конкретный ответ, на конкретный вопрос - то визуальщины нет еще (.

Вот список функций проверки столкновений


Сообщение отредактировал westerns - Вторник, 22 Октября 2013, 13:08
arlaidДата: Вторник, 22 Октября 2013, 13:15 | Сообщение # 5
частый гость
Сейчас нет на сайте
Буду ждать полной версии smile
H-OДата: Вторник, 22 Октября 2013, 17:23 | Сообщение # 6
частый гость
Сейчас нет на сайте
westerns, на сколько я помню и math и полноценная работа с переменными есть, как и в C++, так и в Delphi.
westernsДата: Среда, 30 Октября 2013, 08:31 | Сообщение # 7
был не раз
Сейчас нет на сайте
Цитата H-O ()

логично, а обработку скриптов в будующем вы предлагаете вешать потом на разное апи?
по поводу Delphi (FPC) - так вообще сомнительное удовольствие тягать ради float_to_str (например) еще 70 кб кода из SysUtils.

PS: главное чтобы эти функции мне не мешали, а их присутствие никому не навредит.


добавил функции по коллизиям (вылезли аж в 6 килобайт с учетом секции экспорта)

Добавлено (22.10.2013, 21:21)
---------------------------------------------
для ини файлов наверно слижу апи функций с GM (мож еще пару добавлю, типа save и read/write_int)


Добавлено (23.10.2013, 11:24)
---------------------------------------------
реализовал операции с файлами (опять таки апи слизал с гм и дгле2)
собственно набросал структуру движка, но вышло фэйлово - забыл про инпуты (клава, мышь), забыл про гуи, забыл про партиклы, в общем структура так себе вышла(

Добавлено (24.10.2013, 18:07)
---------------------------------------------
следующее обновление будет в воскресенье, уезжаю на конференцию.

Добавлено (27.10.2013, 23:06)
---------------------------------------------
прошу прощения, поздно сегодня приехал, что смогу сейчас допилю и апну тему на досуге!

Добавлено (27.10.2013, 23:38)
---------------------------------------------
занимаюсь на текущий момент инициализацией окна, фуллскрином (будь он неладен)
сделал вывод в лог файл и функцию инициализации параметров!!!
===[Sirius Game Engine / ver. 0.1 / build 7]===
Sirius:Engine:Init:Width( 800 );
Sirius:Engine:Init:Height( 600 );
Sirius:Engine:Init:FullScreen( true );
Sirius:Engine:Init:VerticalSynchronize( true );
Sirius:Engine:Init:DebugOut( true );
Sirius:Engine:Init:IDLE( true );
Sirius:Engine:Init:SystemCursor( true );
Sirius:Engine:Viewport:Mode( 1366 x 768 )
Sirius:Engine:Viewport:Set( 800x600 )
Sirius:Engine:Exit( )


Добавлено (30.10.2013, 08:31)
---------------------------------------------
мда всё не так то просто) то класс не регистрировался, то контекст не создается, то резолюшен хондрит))) - разбираюсь!
Решил делать сразу с поддержкой UTF-8, системные функции переделываю на юникод, как делать шрифт для них я без понятия - но как то делают ведь)


Сообщение отредактировал westerns - Среда, 30 Октября 2013, 09:03
nilremДата: Среда, 30 Октября 2013, 10:38 | Сообщение # 8
Просветленный разум
Сейчас нет на сайте
Функции, дублирующие имеющиеся в языке нужны только если они хоть как-то завязаны на сам движок, упрощают его использование. Например функции работают с внутренними типами данных движка. В противном случае это лишний баласт. Они не только занимают место в библиотеке и перечне функций, но и работают медленнее, как минимум в 2 раза, поскольку сразу идет вызов функции движка а затем вызов стандартной.

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


Windmill 2

WindMill 2D Game Engine
westernsДата: Среда, 30 Октября 2013, 13:22 | Сообщение # 9
был не раз
Сейчас нет на сайте
Цитата nilrem ()
Функции, дублирующие имеющиеся в языке нужны только если они хоть как-то завязаны на сам движок, упрощают его использование. Например функции работают с внутренними типами данных движка. В противном случае это лишний баласт. Они не только занимают место в библиотеке и перечне функций, но и работают медленнее, как минимум в 2 раза, поскольку сразу идет вызов функции движка а затем вызов стандартной.

в 2 раза) это +1 джамп по указателю? да ну)
рассмотрим трудозатраты функции file_write
- вызывает системную функцию WriteFile - которая:
а) работает с памятью, так как пишет в буфер
б) работает через драйвер т.к. надо учесть (1 - формат файловой системы, 2 - режим работы с HDD )

а вы говорите что в 2 раза медленнее из-за jmp по прямому переходу или даже пусть по far учитывая то что данные в стеке? )) еще раз ну-ну.

PS: понимаю что вы nilrem оговорились, я понял на самом деле суть претензии, дело не в том что эти функции пойдут на экспорт из библиотеки, дело в том чтобы за счет единого API читать текстуры и звуки при переходе на другие платформы.

суть в том чбобы не заменять потом при компиляции под линукс все WriteFile на FpWrite, это только задел на будующее.
nilremДата: Среда, 30 Октября 2013, 13:57 | Сообщение # 10
Просветленный разум
Сейчас нет на сайте
Цитата westerns ()
суть в том чбобы не заменять потом при компиляции под линукс все WriteFile на FpWrite, это только задел на будующее.


Цитата westerns ()
Платформа: Windows


Windmill 2

WindMill 2D Game Engine
westernsДата: Среда, 06 Ноября 2013, 17:24 | Сообщение # 11
был не раз
Сейчас нет на сайте
Цитата
Платформа: Windows

я же не буду сейчас писать что Linux, iOS, Hauki, Wii )))) это же не серьезно, сами понимаете!
логично и то, что под другими платформами и рендер уже будет не DX)

PS: надо разобраться с одним, потом (в теории) уже переходить к другому.
PSS: "мнение пишущего код всегда преобладает над мнениями хотелок и советчиков)" © какой-то форум

Цитата
ибо скорее всего никто другой его использовать не будет.
согласен))

Добавлено (06.11.2013, 17:24)
---------------------------------------------
Пока готовлюсь еще к одной конференции, почти сделал базовую инициализацию и передачу параметров.
- Полноэкранность
- Размеры
- Положение-
- Вертикальная синхронизация
- Таймер ФПС

Как закончу так начну функции отрисовки примитивов осваивать. А там и скриншоты будут!

alisterДата: Среда, 10 Сентября 2014, 14:55 | Сообщение # 12
был не раз
Сейчас нет на сайте
Цитата westerns ()
Как закончу так начну функции отрисовки примитивов осваивать. А там и скриншоты будут!


Ну где скрины то? интересно же)
SnuuxДата: Среда, 10 Сентября 2014, 17:51 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Отличные функции коллизии. Каким способом разбиваете пространство?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг