24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Движкоделие

 Аноним 19/08/20 Срд 05:03:08 #1 №692117 
image.png
Тут есть треды посвященные движкам, есть тред посвященный срачу о движках. Но нет треда для тех кто хочет для своей уютной игры написать свой движок и пообсуждать эту тему. Так что решил создать. Это не тема обсуждения и срачей о других движках. Это тема о реализации своего движка, о том как оно работает изнутри и т.д.

В качестве шапки https://github.com/deltafran/enginethread/blob/master/README.md
(на данный момент я только начал пополнять страницу - ресурсов очень много. Также приветствуются советы, по верстке, оформлению, наполнению.

Зачем нужна эта тема в 2020 году?
Ну кому-то движкоделие может быть само по себе интересным (не решайте за других что им делать и чем им увлекаться).
У кого-то могут быть свои особые требования (например уютный софтрендер, как например делает sb3d; 4D измерение; микровоксели или возможно редкие платформы под которые нет движков)
А возможно кому-то на работе дали приказ сделать движок.

Но еще раз - это не тема о движкосраче, это тема о разработке СВОЕГО движка и всех нужных для этого ресурсов.
Аноним 19/08/20 Срд 08:45:51 #2 №692134 
Пишу в годный трэд. У меня такой вопрос. Я абсолютный нуб, никогда не занимался программированием. Что мне лучше почитать и какой язык взять, чтобы накодить простенькую 2Д игрушку с физикой?
Аноним 19/08/20 Срд 08:59:33 #3 №692135 
>>692134
Ну легче всего в 2д вкатываться через фреймворки - SDL/SFML/Raylib. Raylib - новенькое и перспективное, но пока плохо документированное.

Из книг
Если SDL:
https://www.amazon.com/SDL-Game-Development-Shaun-Mitchell-ebook/dp/B00DL0CFI6
Если SFML:
https://www.amazon.com/SFML-Development-Example-Raimondas-Pupius/dp/1785287346

по SDL еще есть годные уроки тут (это вообще топ)
https://lazyfoo.net/tutorials/SDL/index.php

по SFML были хорошие туториалы в ютубе. например:
https://www.youtube.com/c/SurajSharmaFourKnob/videos
(да и у них своя офф документация хороша)

Вот у этого чела есть много теории и интересных идей по 2д
https://www.youtube.com/c/javidx9/videos

Если уж совсем хочется вникать с нуля - то тогда придется идти в тред OpenGL и осваивать его:)

>>692134
>с физикой?
Юзать box2d - он легко встраивается. Там с ним можно разобраться за пару часов и получить полноценную 2д физику.
Аноним 19/08/20 Срд 09:27:09 #4 №692140 
>>692135
Спасибо, анон! Буду пробовать
Аноним 19/08/20 Срд 10:37:25 #5 №692146 
>>692117 (OP)
Пишу в единственный годный тред в /gd/. Какие у анона завалялись материалы по ECS? Может, какие-то советы, плюсы/минусы/подводные камни?
Аноним 19/08/20 Срд 10:50:41 #6 №692149 
Отписался в эпичном треде. А читать буду потом. ебаный фуллтайм
Аноним 19/08/20 Срд 14:44:59 #7 №692206 
Зачем делать движки, если можно делать игры?
Аноним 19/08/20 Срд 16:11:47 #8 №692228 
>>692117 (OP)
За пайплайны рендера кто пояснит? Читать книги не хочу. Хочу готовый говнокод.
Аноним 19/08/20 Срд 16:35:11 #9 №692234 
>>692228
Что тебе пояснять? Пайплан это очень условное название некого абстрактного куска, который отвечает за рендер и его порядок. То есть готовый говнокод ты не скопируешь, потому что такое на оче высоком уровне реализуется.
Вообще очень странный вопрос, лучше бы даже не начинал тратить время на движок, если всё готовое хочешь. Юнити бери.
Аноним 19/08/20 Срд 17:07:07 #10 №692238 
>>692234
> Что тебе пояснять?
Всё. Какие варианты рендера применять для Webgl 1/2, OpenGL ES 2/3, Open GL 3. Нихуя нипонятна.
> То есть готовый говнокод ты не скопируешь, потому что такое на оче высоком уровне реализуется.
На низком же. И в пайплайне составляются функции для высокого уровня.
> Вообще очень странный вопрос
Так пайплайн рендера, вместе с сценарным графом, по сути и есть весь движок. Всё остальное вторично.
Аноним 19/08/20 Срд 17:07:52 #11 №692240 
>>692206
>Зачем делать движки
Чтобы remove bloat
Аноним 19/08/20 Срд 17:13:21 #12 №692244 
>>692238
Что значит "варианты рендера"? Книги читай, презентации смотри. Тебе нужно базовые концепты изучать, судя по всему. Всё не так просто.
Аноним 19/08/20 Срд 17:17:24 #13 №692249 
>>692234
На Юнити тоже можно свой условный пайплайн заебошить с помощью urp вроде.
Аноним 19/08/20 Срд 17:36:26 #14 №692253 
>>692244
> Что значит "варианты рендера"?
MRT, простой forward, воксельный свет, запеченные воксели и вот это всё.
> Книги читай, презентации смотри.
А шобы сразу говнокод был, протестированный и рабочий нету что ли? Это уже научные статьи. Разбирать их пиздец неудобно и долго.
> Тебе нужно базовые концепты изучать, судя по всему.
Не базовые, а какой-никакой сборник пайплайнов или либы пайплайнов и сценарных графов. Чтобы просто взял и подключил всё. Ну либо просто переписал логику.
> Всё не так просто.
Да я в курсе, поэтому и спрашиваю. Ебала какая-то пиздец конечно.
Аноним 19/08/20 Срд 18:15:18 #15 №692259 
>>692253
Я уже говорил, готовое ты что-то вряд-ли найдешь. Это очень высокоуровневая абстракция (плюс каждый может что-то свое под пайпланом понимать), то есть она тянет за собой кучу другого кода. Тогда уже и до движка недалеко.
Вообще, когда ты напишешь все шейдеры и эффекты, то не должно быть сложно из этого всего собрать пайплайн.
Аноним 19/08/20 Срд 18:50:42 #16 №692268 
>>692240
Джон Блоу одобряе
https://www.youtube.com/watch?v=pW-SOdj4Kkk
Аноним 19/08/20 Срд 19:23:48 #17 №692273 
>>692134
ИМХО лучше всего учиться программировать на Python. Потому что это простой и понятный язык, в который реально можно вкатиться новичку, и в то же время мощный, удобный, современный, хорошо описанный с кучей обучающих видео/статей/курсов, в том числе и посвященных именно программированию игр, плюс куча всевозможных УЖЕ написанных библиотек. Кроме того многие движки поддерживают Python или имеют очень похожий синтаксис. Начинать учиться прогать на крестах или шарпе - слишком сложно будет, все равно что начинать учить иностранный язык не с инглиша, а с латыни. Есть еще Java, но там много подводных камней, новичку не рекомендую.
Аноним 19/08/20 Срд 19:33:24 #18 №692277 
>>692259
> Тогда уже и до движка недалеко.
Ну по сути это и есть движок тащемта. Мне так кажется.
> Вообще, когда ты напишешь все шейдеры и эффекты,
Просто копирую и ворую, и в материалы/объекты вставляю всё. На похуе сделал инстансы для парочки vfx, получилось годно, через симуляцию магнитных полей уравнение движения сделол.
> то не должно быть сложно из этого всего собрать пайплайн.
А как сделать пайплайн просто не понимаю ни ху я. Все эти форварды-деференды. Чего блядь, как это должно работать с bgfx, например? Коакоак? Короче пиздец сложно. Даже если разбирать примеры рендера на js.

Мне кажется это первое чему должны обучать все эти книги.
Как делать пайплайн годный, как туда добавлять все меши, граф сцены и делать всяческие уравнения движения камерой. На это всё готовое любой нуфаг напердолит любую свою игру. Лишь бы это было. А этого почему-то нет. Странно это всё.
Аноним 19/08/20 Срд 20:08:56 #19 №692281 
>>692273
Питон в геймдеве не используется, это один из самых медленных языков, так что учить его в перспективе делать игры - пустая трата времени, потом все равно переучиваться на нормальные языки типа c+/c#.
Аноним 19/08/20 Срд 23:45:26 #20 №692339 
>>692146
Спрашивай конкретные ответы. Что-нибудь посоветуем.
Прост пару статей из гугла по ецс прочитай, этого будет вполне достаточно.
Аноним 19/08/20 Срд 23:58:21 #21 №692343 
>>692339
Реализация ецс из коробки.
Аноним 20/08/20 Чтв 01:50:50 #22 №692365 
>>692343
В чем вопрос?
google: <язык нейм> усы ecs framework
Аноним 20/08/20 Чтв 02:08:47 #23 №692366 
Вот немного аналитики на основе 100500 проектов с гитхаба:
2D multiplayer game from scratch = ~25k LOC;

Game + Engine (Openspades, Vox, Tesseract, Quake3):
Drawer ~25k – Clustered Deferred, VBO/VAO, Texture, FX Render, GUI Render, Post FX Render, Terrain Render, Sky Render, Shadow Render, Water Render;
Client ~25k – Game Modes, Input, GUI Manager, Font Manager, Map Manager, Network, Player, Weapon, AI;
Engine ~25k – Image Loader, Model Loader, GUI Loader, Scripts Loader, ECS, Streaming, Low Network, Zip, Hash, Threads, Low Audio, SIMD/Math, Memory Pool, Memory Manager, Low Physics, Low Scripts, Secure, Win/Unix Wrappers, Generators, Parsers;
Scripts ~20k – UI Framework, Core API, Gameplay API, Bindings API;
GUI ~15k – Core, Views, Screens, L8n, Atlas Packer;
Shaders ~10k – Materals, Terrain, Vegetation, Water, Sky/Atmosphere, GI/Reprojection, Clustered Deferred, SSAO/HBAO, FXAA, Blur, Fog, SSSSS, SSR, SSGI, Bloom/Glow, Lens Flare, Volumetrics, PBR/IBL, Skin/Hairs, Exposure, DoF, Color Grading LUT, Contrast, Saturation, Shadows, Voxels, GUI, Particles/Fire/Sparcs, Chromatic Aberration, Vignette, Dithering;
Tools ~35k – Level Editor, Script Editor, Rosource Editor, Quest Editor, Particle Editor, Material Editor, Debugger/Clocks, UI Builder;
TOTAL = 150 000 LOC;

Vulkan/DX12 LOC = 3-5x OGL4/DX11 LOC;

Tesseract = ~150k LOC;
0a.d. = ~175k LOC;
DOOM 3 = ~300k LOC;
STALKER CoP = ~500k LOC;
Godot Engine = ~600k LOC;
CryEngine V = ~1kk LOC;
UnrealEngine 4 = ~2.5kk LOC;


>>692146
Можешь смотреть всё, что найдешь: entt, entityx и прочее. Но проблема их всех в том, что они делаются под сферический в вакууме арканоид-змейку. А не ММО. И имеют кучу проблем и минусов.
https://habr.com/ru/company/pixonic/blog/413729/
Аноним 20/08/20 Чтв 02:41:51 #24 №692373 
>>692146
>Какие у анона завалялись материалы по ECS?
Я особо не шарю, но начал бы с этого
https://github.com/jslee02/awesome-entity-component-system
Аноним 20/08/20 Чтв 02:58:12 #25 №692376 
>>692277
>А как сделать пайплайн просто не понимаю ни ху я. Все эти форварды-деференды.
Это не совсем пайплайны. Пайплайн - это конвеер, работает как завод

Форвард-деференд - это техники.
Forward - это когда ты прочитал книгу по OpenGl (или D3D или Vulkan) и сразу начал рисовать. Это прямая отрисовка. И ты сразу же столкнешься с проблемой - источники света, в форварде для каждого источника света надо рисовать всю связанную геометрию.
Поэтому придумали деференд - рисовать свет и связанное в отдельные текстуры, а их уже накладывать.
Потом придумали форвард плюс, так как деференд тяжелый
Потом придумали тайлед-деференд
Потом придумали Clustered shading - но мало кто использует
Аноним 20/08/20 Чтв 03:05:15 #26 №692377 
>>692277
>Все эти форварды-деференды
Вообще вот тут https://triplepointfive.github.io/ogltutor/
есть уроки про деференд - 35/36/37 уроки.
или статья https://habr.com/ru/post/420565/

И конкретно по bgfx - у них же есть пример
https://bkaradzic.github.io/bgfx/examples.html#deferred

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

Для простых игр хватит и форварда - то есть "делаешь как получится". 8 источников света - это уже классика на которой делали и квайки, и анреалы.
Аноним 20/08/20 Чтв 12:04:06 #27 №692428 
>>692277
>А как сделать пайплайн просто не понимаю ни ху я. Все эти форварды-деференды.
Я не знаю цифр. Помогите освоить теорию чисел....
Аноним 20/08/20 Чтв 13:08:07 #28 №692444 
>>692376
А воксельный GI ето что? Не зависит от пайплайна? Воксели дают охуенный результат так-то, все эти конусы. А как это с шадовмап совместить? Очевидно что карты теней будет еще лучше чем воксели, тому что можно в блендере их рассчитать, но воксели нужны для динамического света. Шадовмапы и воксели, например, они смогут выдавать хотя бы 60 фпс на вебжл/днопк?

>>692377
Втыкал в deferred.cpp или в github.com/bkaradzic/bgfx/tree/master/examples/16-shadowmaps и так нихуя и не понял. Ебаные 2к строк, пиздец просто, всё утро пытался структурировать нихуя не поня.
Наверное нужно реально выбрать стек, что-то вроде воксели, шадовмапы, форвардкластерплюс и просто сидеть изучать неделю подряд и прототипы делать на js, а потом переписать на плюсы. Но я даже не понимаю какой стэк эффективнее всего будет. Кластерный форвард нормально? Воксели? Хуексели. Вротебал.

>>692428
Просто хочу готовую маленькую, но удаленькую библиотеку конвейеров, просто взять и всё... Почему в этом мире всё настолько сложно......
Аноним 20/08/20 Чтв 13:19:57 #29 №692451 
>>692444
Это воксель кон трейсинг.

https://github.com/JoeyDeVries/LearnOpenGL
https://learnopengl.com/book/book_pdf.pdf
https://github.com/JoeyDeVries/Cell
Вот с этого начни. Хотяб прочитай book_pdf.pdf. Там всё есть.
Аноним 20/08/20 Чтв 13:37:11 #30 №692473 
>>692451
Это я уже пытался читать. Но там нету каких-нибудь примеров псевдокода или пояснений с вертухи про граф сцены.
Короче как я понял, лучше всего будет просто выпустить уже дрисяток говноигр на чужом говнокоде и чужом форвард рендере, а потом нанять топовых программестов которые всё это напишут, самый эффективные и минималистичные рендеры из существующих. Благо топовые погромместы вроде как не против.
Аноним 20/08/20 Чтв 13:56:31 #31 №692495 
>>692473
> Но там нету каких-нибудь примеров псевдокода или пояснений с вертухи про граф сцены.
Это надо движки смотреть лучше. Огр какой-нибудь.
Меня в последнее время интересует вот что. Некий командный буфер для отрисовки: забиндить такие-то буферы я юзаю опенгл, такие текстуры, такой шейдер, отрисовать столько геометрии. Это не учитывая постпроцессинг в фреймбуферами и прочими штуками.

А про граф сцены можно глянуть как было в Думе 3 сделано. Там, как я понял, большой массив поверхностей (surface). Каждый кадр этот массив перестраивается и отрисовывается.
Аноним 20/08/20 Чтв 14:01:23 #32 №692499 
>>692376
>дефереНд
Где ты там Н увидел?
Аноним 20/08/20 Чтв 14:03:33 #33 №692501 
>>692499
деферендциальный - смесь деферреда и дифура
Аноним 20/08/20 Чтв 14:13:21 #34 №692507 
>>692495
> Это надо движки смотреть лучше. Огр какой-нибудь.
Еще и огр разбирать ебать же работы. Годик придется убить только на это.
> Некий командный буфер для отрисовки
Вот кстати это тоже проблема. Нужен командный буфер, да и прост буфера всякие, понять как их организовывать правильнее всего. Литературы на этот счет дохуя, с пустословием в основном - примеров псевдокода почти нет, разве что разбирать конкретные движки.
> А про граф сцены можно глянуть как было в Думе 3 сделано.
В исходниках копаться? Ух ебать, страшно стало.
Аноним 20/08/20 Чтв 15:08:27 #35 №692542 
>>692507
По думу 3 кстати можно всякие разборчики поискать
https://umumble.com/blogs/cpp/source-code-analysis-doom-3/
Аноним 20/08/20 Чтв 15:20:48 #36 №692549 
1523086451019.png
1513542715793.png
>>692542
Если не разбираешься с этим несколько лет подряд - нихуя с наскока не понять.
видать это точно не моё, разве что требования к рендеру и движку составлять, эх епты бля
Аноним 20/08/20 Чтв 15:38:15 #37 №692554 
>>692549
Ну если ты хотя бы в общих чертах понимаешь про устройство проц/гпу, типичные понятия по архитектуре кода, то это можно раскурить, просто первый раз надо чуть больше 5 минут посидеть.
Без этих знаний скорее всего действительно тяжеловато будет, слишком специфичная область.
Аноним 20/08/20 Чтв 15:51:47 #38 №692557 
Увидел тред. Обрадовался, ведь я тоже пытаюсь писать движки.
Прочитал тред. Задепрессовал, ведь тут обсуждают только графику.

Вот скажите, если вы для физики сразу берёте Box2D/Bullet, то зачем вам графику самим делать?
Физику вы УЖЕ берёте чужую, уже движок получается не ваш. Почему бы и графику чужую не взять?

И вообще, если уж на то пошло, нужно свой OpenGL писать с нуля, чтобы движок был 100% твоим личным.
А ещё свою операционную систему и свой язык программирования, но это для особо упорных, ящитаю.
Аноним 20/08/20 Чтв 16:48:25 #39 №692572 
>>692557
Я писал свою 2д физику, там буквально 200 строк: проверка столкновений и выталкивание объектов.
Аноним 20/08/20 Чтв 16:51:33 #40 №692574 
>>692557
А я бы задумался о том, как сделать йоба звук. Вообще инфы нет.
Аноним 20/08/20 Чтв 16:55:29 #41 №692575 
>>692572
На AABB кубиках что ли?
Ты бы попробовал OBB, или вообще произвольные фигуры, лол.
Плюс всякие некрасивые граничные случаи, пролет сквозь, десятки тысяч динамических объектов.
Аноним 20/08/20 Чтв 16:57:47 #42 №692576 
>>692554
> Без этих знаний скорее всего действительно тяжеловато будет
Да тут не только в этом дело. Вот к примеру, какой самый эффективный рендер для качественных теней в webgl? Для gles3? Gl4.6? А если динамический свет?
Короче, нетривиальные задачи. Если писать под одну платформу - всё впринципе ясно-понятно, можно даже несколько рендеров скопировать и понять. Но каких-то объективных данных по тестам я так и не смог найти, по эффективности подходов. Есть только буквально обрывки информации и тесты-сравнения, без пояснений.

>>692557
> Почему бы и графику чужую не взять?
Личноя взял threejs тому шо под html5 нужно качественно сделать. Но самих рендеров не так и много на самом деле. А качественных и мультиплатформенных - вообще нет.
Аноним 20/08/20 Чтв 16:58:58 #43 №692577 
>>692575
OBB. Алгоритм SAT для нахождения точки пересечения. Это очень кривая физика, для нормального выталкивания нужно рассчитывать не точку, а площадь. Но для простой игры сойдёт.
Аноним 20/08/20 Чтв 17:05:09 #44 №692578 
>>692557
Я как раз делаю свой язык программирования и его компилятор-интерпретатор. Уже небольшие функции и типы данных можно писать, но не более.
Когда-то задумывался о том, чтобы сделать свой формат ассетов и использовать свой язык программирования в качестве встраиваемого в эти ассеты, чтобы запускать всякие там анимации, движения. И один ассет включал в себя другие, а в связке с настройками (например, рендеринг, физика и всё прочее) создало бы игру. Но мне не очень нравится геймдев, так что я пока собирался язык встраивать только в некоторые другие будущие проекты.

Уже написал свой софтрендер-рейтрейсер, может сферы и треугольники с освещением рисовать. У меня есть и библиотека-недоделка, которая описывает графический мир через вложенные ноды и рисует их через бекенды. Есть 2 бекенда — софтрендерный и GLSL-ный, оба производят рейтрейсинг. Но даже второй не очень производительный, штук 500 треугольников в 60 ФПС в FullHD потянет.
Когда-нибудь, может, попробую написать Пастрейсер и фотонтрейсер.

Когда доделаю язык программирования и его компилятор-интерпретатор, хотел попробовать запилить и физический движок. Можно несколько — механический, жидкостный, термодинамический, электродинамический. Если пойму, как описываются атомы, то и химический. Но все кроме механического (и жидкостного?) подходят скорее для всяких технических задач.
Потом и графическую либу, и свою ГУИ-библиотеку переведу на свой язык программирования и выпущу в открытый свет.
Аноним 20/08/20 Чтв 17:20:27 #45 №692584 
>>692578
Почему каждый пилит свой движок? Почему бы не помочь развивать существующие опенсорсные?
Аноним 20/08/20 Чтв 17:32:00 #46 №692591 
>>692584
Их нет, опенсорсных, чтобы подходил всем и все бы над ним работали. Большинство - рендеры под опенжл/dx.
Собратсья в улей люди не очень способны, нужны деньги и менеджмент.
Аноним 20/08/20 Чтв 17:34:57 #47 №692594 
>>692591
Но вот ты можешь подобрать заброшеный движок - например, Urho 3D - и объявить себя его главным разработчиком.

Или форкнуть Годот, и соревноваться с Хуаном.

Вообще много увлекательных способов пилить движок, и не быть при этом никому не известным горбуном сидящем в своём подвале.
Аноним 20/08/20 Чтв 17:51:02 #48 №692599 
>>692584
>Почему каждый пилит свой движок? Почему бы не помочь развивать существующие опенсорсные?
https://en.wikipedia.org/wiki/Not_invented_here
https://ru.wikipedia.org/wiki/Синдром_неприятия_чужой_разработки

>>692594
>Urho 3D
>Годот
Ты его ответ глазами читал или чем? Он же писал, >>692591
>чтобы подходил всем
Очевидно, приведённые примеры ему не подходят.

>и не быть при этом никому не известным горбуном сидящем в своём подвале
Если тебе это важно - вперёд и с песней. Некоторым сидеть в подвале намного приятнее и спокойнее.
Аноним 20/08/20 Чтв 18:00:43 #49 №692602 
>>692578
>Уже небольшие функции и типы данных можно писать, но не более.
Я тоже несколько раз пробовал писать свой ЯП. И скажу честно, в долгосрочной перспективе это адЪ, потому что все эти функции-шмункции - пустяк, реализовать интерпретатор языка с функциями можно за несколько часов. Но в долгосрочной перспективе тебе придётся поддерживать огромный набор огромных API. Достаточно только взглянуть на WinAPI и ужаснуться. Зачем тебе API? Потому что ЯП без поддержки сторонних API - бесполезная игрушка, что-то вроде брейнфака - код писать возможно, но этот код ничего кроме простых арифметических операций делать не способен (ни файл с диска считать или записать, ни картинку на экран вывести, ни кнопочку нарисовать и нажатие на неё обработать). Пока ты пишешь интерпретатор на уже существующем ЯП, ты неявно используешь API системы благодаря готовым библиотекам этого ЯП, но когда тебе захочется сделать компилятор, чтобы твои программки выполнялись отдельно от чужого кода - тебе потребуется лезть во все эти дремучие API, если не в прерывания BIOS и коды процессора (зависит от того, во что будешь компилировать/транспилировать). Ну нафиг такое, даже если твой ЯП будет гениальным и лучшим в мире, без API он даже тебе ничем не поможет...
Аноним 20/08/20 Чтв 18:26:44 #50 №692614 
>>692594
>>692599
Дело не в самом создании движка, а в том что почти большинство современных движков какой-то дикий оверхед делают, который нахуй нинужен ни при каких условиях типичной игори. Или занимаются бессмысленными велосипедами, хотя можно взять SoLoud/OpenAL, Bullet, bgfx, Ozz-animation, Assimp а вот это уже хз, тут от реализации сцены всё зависит и собрать это всё в нормальный кросплатформенный двиг.

Алсо можно в этом треде собрать либы для движков, в стиле:

Системы анимации: Ozz-animation, ???, ?????
Звук: SoLoud, OpenAL
2d физика: Box2d
3d физика: Bullet
Рендеры: filament
Кросс-шейдеры: bgfx
Управление окном/вводом-выводом: SDL, SFML, GLFW
Граф сцены: бхуй))00 (возможно можно спиздить от ozz-animation, но это не точно)
Форматы данных: Assimp

вроде такие списочки есть на гитхабе, но хуле бы свой не сделать.
Аноним 20/08/20 Чтв 18:30:27 #51 №692615 
>>692614
>какой-то дикий оверхед делают, который нахуй нинужен ни при каких условиях типичной игори
Вот тут полностью согласен, самому хочется сделать простой худенький движок <100кб, но, видимо, не судьба.

Вообще тут всё от ЯП сильно зависит, если б ЯП умел выкидывать лишние функции из кода - было бы проще.
Аноним 20/08/20 Чтв 18:31:53 #52 №692616 
>>692602
На самом деле мой компилятор не интерпретирует код, он интерпретирует исходники как, например, linux-ld.so интерпретирует ELF-файлы в процессы. Просто мой ЯП предназначен для исполнения из исходников, а компиляция в бинарники это дополнительная фича.
Немного неудачно написал.

Что насчёт API, то не вижу тут ничего слишком сложного. Что там в этом API надо? Писать в файлы, октрывать сокеты, управлять памятью. В линуксе всё просто, open, read, write, close, sbrk и ещё парочка системных вызовов. Думаю, в виндовсе тоже не слишком усложнены операции записи в файлы.
Что насчёт сокетов и управления памятью, я пока не знаю, но в линуксе всё-равно не очень много системных вызовов (около 100), а для виндовса наверняка можно найти библиотченые слои совместимости с линуксовым и использовать их.
Например, поддержку потоков (через отдельную библиотеку моего ЯП) я собирался реализовать, используя pthread, а он есть и под линукс, и под виндовс (хотя, может быть, я пересмотрю это решение). Надо будет просто слинковать библиотеку.

>ни картинку на экран вывести, ни кнопочку нарисовать и нажатие на неё обработать
Этим пусть занимается SDL2. Думаю, я сделаю программку для перевода хедер-файлов Си в библиотеку моего языка программирования (бинарная библиотека линкуется отдельно) и всё готово.
У меня уже есть недоделка библиотеки ГУИ (на C++), которая умеет создавать окна и рисовать туда, обрабатывать нажатия. И базируется она на SDL2, так что можно запустить хоть на линдовсе, хоть на вуниксе, на микроконтроллере (но программисту придётся написать реализацию SDL2 для него, либо использовать более низкоуровневые функции), так как моя ГУИ-библиотека базируется на моей графической библиотеке, а к ней уже есть софтрендер-рейтрейсер. Да, рейтрейсить ГУИ это сомнительная идея, но растеризатор я ещё не писал
Аноним 20/08/20 Чтв 18:36:58 #53 №692619 
>>692584
Хуан плез
Аноним 20/08/20 Чтв 18:49:11 #54 №692626 
>>692616
>На самом деле мой компилятор не интерпретирует код, он интерпретирует исходники как, например, linux-ld.so интерпретирует ELF-файлы в процессы. Просто мой ЯП предназначен для исполнения из исходников, а компиляция в бинарники это дополнительная фича.
Я ничего не понял (в линуксе не разбираюсь). Компилятор не может интерпретировать код, компилятор код компилирует (преобразует текст в машинный код). Интерпретируют код интерпретаторы (непосредственно выполняют команды, соответствующие тексту). Компилятор и интерпретатор относятся к трансляторам, помимо них ещё есть транспилятор (отличается от компилятора тем, что транслирует код не в машинный код, а в исходный код другого ЯП). Если твой ЯП "предназначен для исполнения из исходников" - то у тебя интерпретатор.

Кстати, траспиляторы - возможный способ уйти от проблем с машинным/ассемблерным кодом. Можно компилировать в промежуточный ЯП типа C, а уже компилятор промежуточного ЯП будет заниматься созданием машинного кода. У этого способа есть свои недостатки, но по идее проще и удобнее, чем возиться с машинным кодом и API системы.

>Что там в этом API надо?
Всё, что там есть) Хотя по идее можно транспилировать заголовочные файлы из C в свой ЯП...

>Этим пусть занимается SDL2
Но его тоже придётся как-то линковать. А для этого нужны заголовочные файлы на твоём ЯП. А их писать нужно.

Короч писать ЯП - это интересно, но на сегодняшний день сильно бесполезно(
Аноним 20/08/20 Чтв 19:12:28 #55 №692639 
>>692584
Специализированый движок под конкретную игру намного проще, чем движки общего назначения.

>>692557
Физику сложно качественно реализовать самому, рендеринг же с использование API вроде D3D пишется довольно легко.
Аноним 20/08/20 Чтв 19:24:16 #56 №692643 
>>692615
> простой худенький движок <100кб
За тебя сделали Sokol и Oryol. Орёл потолще 100кб будет, сокол - то что тебе нужно. В 100кб кроссплатформенного кода уложишься.
Но лично я хз как сделать на этих пернатых полноценную игру готовую к продакшену. Исходники по 1к строк для теней только. Документация хорошая, но я нихуя не понял, тупой слишком.
https://github.com/floooh/sokol
https://github.com/floooh/oryol
> если б ЯП умел выкидывать лишние функции из кода - было бы проще.
Это делается при сборке. В теории, покрайней мере, на практике движкопицы редко занимаются обрезкой сборок под конфигурации. Даже библиотеки в одну свалку бросают.
Аноним 20/08/20 Чтв 19:27:01 #57 №692647 
>>692643
> Исходники по 1к строк для теней только.
Примеры сокола, да. И примеры теней на 200 строк, загрузка gtlf2 - 1к. Там вроде есть какие-то ништяки, но. Но.
Аноним 20/08/20 Чтв 19:28:01 #58 №692648 
>>692643
>>692639
Так движок общего назначения и не будет никогда "худеньким". Если для конкретной игры достаточно проверки столкновений прямоугольников в 200 строк кода, зачем тащить полную библиотеку?
Аноним 20/08/20 Чтв 19:31:03 #59 №692649 
>>692648
> для конкретной игры достаточно проверки столкновений прямоугольников в 200 строк кода
Это уже какое-то 2d.
Аноним 20/08/20 Чтв 19:38:20 #60 №692651 
>>692649
Если у тебя игра 2д, зачем тащить 3д?
Ну и наоборот, если игра 3д, то вряд ли нужны библиотеки для 2д анимации.
Аноним 20/08/20 Чтв 19:44:33 #61 №692655 
>>692651
Не, я к тому что для любого 3d столкновений недостаточно. Придется оклюжены всякие тащить и 3d аудио.
Аноним 20/08/20 Чтв 20:10:09 #62 №692663 
Сегодня, кстати, Кармаку 50 лет пиздец
Аноним 20/08/20 Чтв 20:18:17 #63 №692668 
>>692663
Пукает-хрюкает с Капланяном в Кококулусах
Аноним 20/08/20 Чтв 20:20:54 #64 №692672 
>>692668
Нет, сейчас он пилит ИИ для Скайнета
Аноним 20/08/20 Чтв 20:23:28 #65 №692673 
>>692648
> Если для конкретной игры достаточно проверки столкновений прямоугольников в 200 строк кода, зачем тащить полную библиотеку?
Если достаточно, то не надо тащить.
Если недостаточно, то надо тащить.
Аноним 20/08/20 Чтв 20:26:51 #66 №692674 
>>692673
Тогда это должен быть не движок, а ворох различных библиотек: вот физика 1, вот физика 2, вот физика 3 и т. д.
Аноним 20/08/20 Чтв 20:27:28 #67 №692675 
>>692507
> В исходниках копаться? Ух ебать, страшно стало.
Всё уже сделали за тебя. У Фабиана Сангларда где-то был разбор Дума 3
https://fabiensanglard.net/doom3/renderer.txt
https://fabiensanglard.net/doom3/doom3_notes.txt

Аноним 20/08/20 Чтв 20:44:13 #68 №692676 
>>692675
Ебать. Ну да ладно поцаны, пойду игру делать, ебал я в рот это всё писать.
Аноним 20/08/20 Чтв 20:58:35 #69 №692680 
>>692674
Если ты пишешь движок под конкретную игру, то будет только одна физика.

Движок - не обязательно монстр типа Юнити. Например idTech1 тоже движок, вполне себе компактный и под конкретную задачу.
Аноним 20/08/20 Чтв 21:07:14 #70 №692681 
>>692626
Мне кажется, у тебя какое-то старомодное отношение к програмимрованию.

>Если твой ЯП "предназначен для исполнения из исходников" - то у тебя интерпретатор.
Хорошо, у меня интерпретируемый язык программирования, где можно написать только одну, но очень длинную команду, раскиданную по нескольким файлам. Так же как линуксовый линковщик интепретирует ELF-файл (+ библиотеки) в процесс или виндовсовский экзекутор интерпретирует .exe в процесс или что там.

На самом деле, грань между компиляцией и интепретацией не такая уж и жёсткая. Ведь часто и команды интерпретируемых ЯП JIT-компилируются.

>в промежуточный ЯП типа C
Современные модные молодёжные языки программирования используют компиляцию в LLVM IR, а из него уже компилируется в любой поддерживаемый машинный код.
Так я делаю и со своим языком. По правде, я его перевожу сначала в свой промежуточный формат, который когда-нибудь станет байткодом как в джаве или питоне, а потом его в LLVM IR.

>А их писать нужно
Да. В случае с линуксом сделать интерфейс к сотне самостоятельных системных вызовов — проще простого. Для SDL2 уже сложнее, поэтому следует сделать утилиту для перевода хедеров си в код моего ЯП.
В моём ЯП, кстати, поддерживаются многие сишные типы, а ABI стандартный, так как им занимается LLVM, так что это действительно не сложно.

Что сложнее, так это совладать с кодом. Компилятор я пишу на питоне (как бы это странно не звучало) планирую потом на мой ЯП переписать, а я не очень разбираюсь в ООП и вообще наговнокодил, что перебирать и перебирать.
Аноним 20/08/20 Чтв 21:11:20 #71 №692683 
>>692681
>Так же как линуксовый линковщик интепретирует ELF-файл (+ библиотеки) в процесс или виндовсовский экзекутор интерпретирует .exe в процесс или что там.
Ой все
Аноним 20/08/20 Чтв 21:20:38 #72 №692684 
>>692681
Надеюсь твой язык называется v. Иначе смысла чет-то мало.
Аноним 21/08/20 Птн 03:45:35 #73 №692816 
>>692614
>вроде такие списочки есть на гитхабе, но хуле бы свой не сделать.
Постепенно сделаю по ссылке. Примерно в таком же виде. Просто всего много, надо еще и собрать
Аноним 21/08/20 Птн 04:02:44 #74 №692821 
>>692681
>виндовсовский экзекутор интерпретирует .exe в процесс или что там
Исполняемый файл не интерпретируется. Он загружается системой в оперативную память целиком, после того, как прошёл проверку по заголовку на корректность. И исполняется процессором как набор машинных кодов (с данными, но данные в отдельном сегменте). Да, разумеется, центральный процессор - это физическая реализация интерпретатора машинных кодов, однако когда речь идёт об "интерпретации кода", подразумевается программная интерпретация: программа-интерпретатор по байтам/по словам/по строкам считывает код, ищет в словаре соответствующие машинные команды/наборы команд и исполняет их (т.е. транслирует кусочки программы только когда нужно их исполнить).

>Что сложнее, так это совладать с кодом.
>я не очень разбираюсь в ООП и вообще наговнокодил, что перебирать и перебирать.
Имхо, часто лучше переписать с нуля, так код получится компактнее и понятнее, чем был с первой попытки. Вторая попытка займёт немного времени, ведь выдумывать намного меньше, чем первый раз.

>Мне кажется, у тебя какое-то старомодное отношение к програмимрованию.
А я не вижу смысла накручивать какие-то новомодные штучки, если от них куча проблем, а работать можно и без них)

Я вот забил на выдумывание своего языка ещё и потому, что осознал, что мне он и не нужен в общем-то. Что я на нём буду писать? Какие задачи решать? У меня по жизни почти не бывает таких задач, для решения которых нужно было бы писать программу, а если такая задача и появляется, то проще и быстрее всего решить её на лучше всего известном мне Pascal. Да, когда-то я мечтал о том, что придумаю ЯП, который многократно ускорит процесс решения задач, но теперь я понимаю, что самое главное в программировании - это придумать/найти/понять алгоритм, а реализация алгоритма мало зависит от применяемого языка. И вот придумывать алгоритмы никакой ЯП не поможет...
Аноним 21/08/20 Птн 04:23:42 #75 №692823 
>>692648
>Так движок общего назначения и не будет никогда "худеньким".
Будет, если будет написан на языке, поддерживающим частичную сборку (изолированный код отбрасывается).

>>692674
>Тогда это должен быть не движок, а ворох различных библиотек: вот физика 1, вот физика 2, вот физика 3 и т. д.
Зачем? Ну вот, допустим, у нас есть:
- проверка коллизий 2д фигур: круги, прямоугольники, линии
- проверка коллизий 3д фигур: сферы, параллелепипеды, линии
Итого 6 разных функций. Если мы из своего кода обращаемся только к одной из этих 6 функций (прямоугольники), то остальные 5 нам не нужны, так? Да, если мы где-то в движке неявно их вызываем, то они нам нужны, но если мы не делаем необдуманных вызовов, то они нам не нужны. А раз не нужны, то в игру (.exe) их можно просто не включать.

Вообще, любую программу можно рассматривать как дерево процедур/функций. Главная процедура - это собственно программа (program в Pascal, void main в C и т.д.), из которой вызываются процедуры первого уровня, из которых вызываются процедуры второго уровня, из которых - третьего, и так далее до самых примитивных процедур, "листьев" дерева кода. Нетрудно догадаться, что если мы написали какую-то ветку кода, а затем разорвали единственную связь между этой веткой и остальным деревом (закомментировали вызов корневой процедуры данной ветки), то наша ветка становится бесполезной - полностью изолированной от остального кода, и вставлять её в исполняемый код будет неблагоразумно. Почему бы не отбросить эту лишнюю ветку?..

Кстати, я слышал, что именно так и делает компилятор C/C++, т.е. не оставляет неиспользуемое в исполняемом коде, но в таком случае для меня остаётся загадкой, почему современное ПО, которое якобы почти всегда пишется на C++, так сильно жиреет. Ладно там игровые конструкторы типа Unity, но что на счёт реальных движков, для запуска игры на которых нужно произвести сборку кода игры вместе с кодом этого движка?
Аноним 21/08/20 Птн 07:45:00 #76 №692836 
>>692602
Дык FFI с C в помощь. Если в твоём супер-языке есть FFI C, всё, считай, у тебя есть и WinAPI, и POSIX API, и какое угодно API а если разработчику не нужно для этого руками писать биндинги, вообще улёт
Аноним 21/08/20 Птн 08:12:42 #77 №692837 
>>692823
>А раз не нужны, то в игру (.exe) их можно просто не включать.
Они и не включаются. Компилятор выкидывает - об этом в студии даже есть специальный варнинг (что-то типа "данная функция нигде не используется, она будет исключена из кода")
Аноним 21/08/20 Птн 13:48:45 #78 №692917 
maxresdefault.jpg
Как рисовать псевдотрёхмерные домики в стиле GTA 2? Я знаю, что GTA 2 полностью 2D, и домики рисуются какой-то сложной техникой (без использования 3D-ускорителя), но не понимаю, какой. Неужели прямо на процессоре рендерили?.. Хочется сделать что-то похожее, но 3D графика слишком сложная - я могу рисовать домики с помощью OpenGL 1.1, но шейдеры мне не понять. Подскажите что-нибудь на эту тему.

Кроме того, как лучше реализовать физику в стиле GTA 2? Я кое-как сделал физику кругов на плоскости, но так и не смог реализовать правильные отскоки (не знаю, как посчитать вектор отскока без использования сложных вычислений). А с прямоугольниками вообще непонятно что делать. И как быть с разными уровнями карты (в GTA 2 есть дороги под наклоном и даже лестницы)...
Аноним 21/08/20 Птн 17:32:38 #79 №693045 
>>692837
Это если все линковать в один бинарник. А если делать длл то все что экспортируется, то не выкинется.
Аноним 21/08/20 Птн 18:04:14 #80 №693059 
>>693045
Зачем делать длл с движком? DLL нужно только в двух случаях - когда функции DLL используются несколькими независимыми программами (изначальный замысел DLL, сегодня с ростом объёмов памяти это неактуально), или когда функции DLL нужно вызывать из кода на другом языке, но мы же тут пишем свои игры на своём движке, т.е. и игра, и движок на одном языке. Ещё по идее на неё немного другие лицензионные блаблабла, но лицензионный бред оставьте лицензионным бредологам. Ненавижу опенсурс за то, что приходится разбираться в лицензиях, тысячах лицензий!
Аноним 21/08/20 Птн 19:54:48 #81 №693107 
>>692917
> не знаю, как посчитать вектор отскока без использования сложных вычислений
Ничего там сложного нет, простейшая система диффуров - второй закон Ньютона да закон сохранения импульса.
Аноним 21/08/20 Птн 19:56:21 #82 №693112 
>>693059
> Ненавижу опенсурс за то, что приходится разбираться в лицензиях, тысячах лицензий!
Единственная лицензия, о которой как программисту приходится задумываться, это (L)GPL. Окей, две лицензии. Все остальные по сути означают "бери и пользуйся на здоровье, никто тебе ни слова ни скажет".
Аноним 21/08/20 Птн 22:26:46 #83 №693190 
>>693107
>система диффуров
Из курса математики я выпал примерно в 8-9-м классе, в 10-11 мне ставили тройки за красивые глаза...

>>693112
>бери и пользуйся
Если б всё так просто было. Нужно ведь ещё авторов указать (или не нужно), текст лицензии приложить (или не нужно) в каком-то определённом формате (или неопределённом), ссылку на оригинал дать (или не давать), указать список изменений (или не указывать)... Ну уж нет, лучше я напишу велосипед или совсем программирование брошу, чем буду насиловать себе мозг такими бессмысленными деталями. Вот как хорошо было бы, если бы были только собственнические лицензии - ты ничей код использовать не можешь, сидишь себе велосипед попиливаешь, но велосипед этот 100% твой, никто у тебя его отобрать не может и засудить на огромные бабки за разработку этого велосипеда тоже не может... Да, медленно, да, долго, зато безопасно и надёжно, т.к. варианты исхода известны (ты либо напишешь велосипед и получишь профит, либо не напишешь и не получишь, а не как с использованием чего-либо стороннего - подключил либу и дальше тебя ждёт неизвестно что).
Аноним 21/08/20 Птн 23:38:32 #84 №693204 
>>693190
> Если б всё так просто было.
Наверняка в гугле есть удобная таблица, в которую сведены все особенности свободных лицензий. Но мне влом её искать за тебя.
Аноним 21/08/20 Птн 23:59:43 #85 №693206 
>>693190
> Если б всё так просто было. Нужно ведь ещё авторов указать (или не нужно), текст лицензии приложить (или не нужно) в каком-то определённом формате (или неопределённом), ссылку на оригинал дать (или не давать), указать список изменений (или не указывать)... Ну уж нет, лучше я напишу велосипед или совсем программирование брошу, чем буду насиловать себе мозг такими бессмысленными деталями.
Всё это хуйня. Просто тебе нужны лицензии полностью свободные - BSD. Всё остальное можешь пропускать мимо.
Аноним 22/08/20 Суб 07:41:33 #86 №693233 
>>693204
Да, есть: https://tldrlegal.com

>>693206
Ты не понимаешь, о чём говоришь. MIT, например (которая на самом деле не MIT, а X11/Expat), ещё "свободнее", чем BSD (трёхпунктная, по крайней мере) - тупо меньше условий в тексте лицензии.
Аноним 22/08/20 Суб 08:27:10 #87 №693236 
wtfpl-strip.jpg
>>693233
Самая свободная вот http://www.wtfpl.net/ (способ отдать работу в общественное достояние)
Но я лично не хочу вкладывать в свой софт файл с чужим именем (почему я вообще должен давать ссылку на какого-то Сэма?). И что значит "changing it is allowed as long as the name is changed"? Как вообще возможно закопирайтить такой огрызок текста? Получается, не может существовать WTFPL-лицензии с другим текстом, потому что изменяя текст, меняется и название? Бред какой-то. Даже в писательстве и кинематографе нет такого строгого ограничения на совпадающие имена... Короче, не хочется лезть в это дерьмо, ни как лицензиат, ни как лицензиар, а то вдруг засудят.

О, представьте, что вы собираете движок из готовых библиотек, библиотеки линкуете статически, результатом выходит один-единственный exe (как у годота). В итоге у вас в папке \движок\ будет один файл движка и несколько десятков файлов лицензий. Почему не объединить в один файл или не зашить прямо в exe? Потому что "менять текст лицензии нельзя" (конкатенация = изменение; перекодирование, кстати, тоже изменение) и потому что "текст лицензии должен быть доступен без запуска приложения", то есть по факту тот же готот нарушает условия лицензирования (запечатывает лицензию внутри exe и не содержит копии в txt-файле). Бред какой-то, ну нафиг такое.
Аноним 22/08/20 Суб 09:26:34 #88 №693242 
>>693236
> Но я лично не хочу вкладывать в свой софт файл с чужим именем (почему я вообще должен давать ссылку на какого-то Сэма?
Потому что ты используешь труд другого человека, и публично признать, что ты это делаешь - это самое меньшее, что ты можешь сделать. Обрати внимание, тебя не просят за его труд отдавать деньги, тебя просто просят сказать "да, я использовал труд Сэма", просто чтобы ему было приятно. Твой подход к этому вопросу выдаёт в тебе малолетнюю свинью - тебе бесплатно дают крутые вещи, а ты хочешь их брать и взамен не отдавать вообще ничего.

> Получается, не может существовать WTFPL-лицензии с другим текстом, потому что изменяя текст, меняется и название?
Разумеется. Представь себе, что я возьму текст GPL, напишу в нём "ты сосёшь хуи" и буду распространять свой софт по этой лицензии, и внезапно масса людей оказываются ни за что ни про что зашкваренными.

> несколько десятков файлов лицензий


Аноним 22/08/20 Суб 09:29:28 #89 №693243 
>>693242
Ёбаный рот, с каких пор на двачах по Ctrl-enter отправка?

Так вот,
>>693236
> несколько десятков файлов лицензий
Необязательно лицензии в отдельные файлы складывать, можно заставлять тикнуть чекбокс "да, я в курсе про лицензии" при загрузке, можно показывать license agreement в инсталляторе, можно в сплэш-скрине одной строчкой, мол, this software uses libblah library which is MIT-licensed, see https://github.com/libblah/LICENSE for details. Тут возможны варианты.

> Бред какой-то, ну нафиг такое.
Да нет, просто ты малолетний долбоёб-неосилятор.
Аноним 22/08/20 Суб 11:04:14 #90 №693254 
>>693233
> Ты не понимаешь, о чём говоришь.
Прекрасно понимаю. Бсд и мит просто обычные свободные лицухи с тремя-двумя пунктами, для дэбилов.
>>693236
> Но я лично не хочу вкладывать в свой софт файл с чужим именем
Не с чужим именем, а лицинезией и с выполнением условий лицензии. Чужое имя это условие лицензии.
> Получается, не может существовать WTFPL-лицензии с другим текстом
Да. Лицензия защищает саму себя, в этом суть лицензий тащемта. Лицензия это как бы программный код исполняемый судами и юристами, ты записываешь в лицензии определённое поведение.
> потому что изменяя текст, меняется и название? Бред какой-то.
Это не бред, это необходимо для выполнение условий определённого поведения. Ты программист вообще или кто нахуй?
> по факту тот же готот нарушает условия лицензирования (запечатывает лицензию внутри exe и не содержит копии в txt-файле).
Нарушать лицензирования можно, но только БСД лицензий, потому что нужно выявить нарушение - чтобы истец предъявлял требования. БСД-подобные лицензии предъявлять тебе что-то там не будут.
> Бред какой-то, ну нафиг такое.
Нет, бред это делать велосипед, когда есть bgfx.
Аноним 22/08/20 Суб 11:12:25 #91 №693257 DELETED
>>693254
Как же ты заебал со своим кривым bgfx.
Аноним 22/08/20 Суб 12:43:49 #92 №693272 
>>693254
>Нарушать лицензирования можно, но только БСД лицензий, потому что нужно выявить нарушение - чтобы истец предъявлял требования
Пиздец, у тебя русский - не родной язык, что ли?

> Просто тебе нужны лицензии полностью свободные - BSD
> для дэбилов
Да ещё и с биполярочкой.
Аноним 22/08/20 Суб 13:20:38 #93 №693283 
>>693242
>тебе бесплатно дают крутые вещи
>крутые вещи
>текст лицензии, состоящий только из
>0. You just DO WHAT THE FUCK YOU WANT TO.
Да, а если я сделаю квадрат с чёрной заливкой, должен сделать ссылку на Малевича за такую крутую вещь, как чёрный квадрат.

>Представь себе, что я возьму текст GPL, напишу в нём "ты сосёшь хуи" и буду распространять свой софт по этой лицензии
И всё правильно сделаешь. Твой GPL <> GPL Васи Пупкина <> GPL Маши Петровой <> GPL Ивана Иванова. Читай текст, а не название!

>>693243
>Необязательно лицензии в отдельные файлы складывать
Я где-то читал, что обязательно. Потому что, мол, программа может оказаться на машине, которая не может запустить программу.

>see https://github.com/libblah/LICENSE for details
А если линк протухнет? Спустя лет 10 либо страницу с гитхаба потрут, либо гитхаб закроется, либо ещё чего. А файлы-то останутся...

>Да нет, просто ты долбоёб-неосилятор.
Пофиксил за тебя.

>>693254
>Лицензия это как бы программный код исполняемый судами и юристами, ты записываешь в лицензии определённое поведение.
О, спасибо, единственное разумное объяснение смысла лицензий. Вот только учитывая багнутость и уязвимость судов, нестабильность и неэффективность юристов, смысла их программировать нет, лучше выкинуть на свалку истории (или в музей машин прошлого) и заменить более надёжными и эффективными машинами... Это всё равно что программировать сегодня под какой-нибудь компьютер из первой половины прошлого века - можно, но зачем?.. ...так, падажжи, эта аналогия зашла слишком далеко.

>Нет, бред это делать велосипед
Но если я не сделаю велосипед, то чем я смогу гордиться? Тем, что нажал кнопочку "сделать зашибись" на чужом изобретении?
Аноним 22/08/20 Суб 16:22:45 #94 №693330 
>>693283
>Но если я не сделаю велосипед, то чем я смогу гордиться? Тем, что нажал кнопочку "сделать зашибись" на чужом изобретении?
Не забудь сделать свою ОС, чтобы Гейтс у тебя славу не украл.
Аноним 22/08/20 Суб 17:52:19 #95 №693358 
>>693257
Он прямой, не пизди. Одна из самых прямых либ.

>>693272
Ну и что это ты высрал? А главное, зачем?

>>693283
> Вот только учитывая багнутость и уязвимость судов, нестабильность и неэффективность юристов,
Так говорю же - доказательство нарушения лицензии (или хотя бы инициировать проверку) должен предъявлять истец. В случае бсд никто не будет этим заниматься.
> компьютер из первой половины прошлого века - можно, но зачем?
Скорее просто как под язык с тысячами возможностей неопределённого поведения.
Компухтер из первой половины прошлого века всё же имел вполне определённое поведение.
> Но если я не сделаю велосипед, то чем я смогу гордиться? Тем, что нажал кнопочку "сделать зашибись" на чужом изобретении?
Ты не сможешь в полной мере гордится велосипедом. Это же велосипед. Он ничего нового не приносит, ничего нового не создает. Можешь статью написать, но статей с описанием велосипедов дохуя уже. Может ты что-то и поймешь новое, при создании велосипеда. Но вряд ли.
А вот если ты сделаешь что-то реально полезное, то чего нет, то что никто до тебя не делал. У тебя не только повод для гордости будет.
Аноним 22/08/20 Суб 18:06:35 #96 №693361 DELETED
>>693283
> Я где-то читал, что обязательно. Потому что, мол, программа может оказаться на машине, которая не может запустить программу.

Ну раз не может то и проблемы нет?
А читать надо не на заборе, а в самом тексте лицензии - а там уже может быть сказано надо отдельно или не надо.

sage[mailto:sage] Аноним 23/08/20 Вск 11:40:00 #97 №693568 
Если б хоть один из вас, срущихся ИТТ, действительно делал свой движок.. Или хотя бы собирался его делать.

Но ведь нет же. Вместо этого новый тип срача изобрести решили. Лицензиосрач.

Этот тред просто попытка протечь из срачезагона..
Аноним 23/08/20 Вск 12:46:08 #98 №693575 
>>693568
Срач про лицензии -- одна из самых унылых вещей, которые я когда-либо читал. А начинался тред неплохо.
Аноним 23/08/20 Вск 17:29:11 #99 №693680 
>>693568
Прежде чем начать делать движок, надо определиться с лицензией.
Аноним 24/08/20 Пнд 00:49:39 #100 №693897 
>>693680
с гендером ещё надо определиться
Аноним 24/08/20 Пнд 01:52:32 #101 №693907 
>>693680
Есть только одна православно верная опенсурс лицензия - CC0.

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

Херня это, кому надо и так нарушит и плевал на писульку в файле License, достаточно обфуцировать код и никто не докажет что там было - mit или gpl (если не майкрософт и не эпл, то никто даже и не будет пытаться)
Аноним 24/08/20 Пнд 07:36:54 #102 №693928 
>>693568
> Если б хоть один из вас, срущихся ИТТ, действительно делал свой движок
Я делаю. Но мимо детей-максималистов пройти мимо не могу.
Аноним 24/08/20 Пнд 07:38:02 #103 №693929 
>>693907
Вот этот малолетний долбоёб, например: не понимает разницу между авторскими и исключительными правами, но Мнение Имеет.
Аноним 24/08/20 Пнд 09:31:04 #104 №693965 
>>693929
Какая разница? Все эти якобы попенсурсные лицензии имеют ограничения - например надо обязательно указывать авторство оригинала.

CC0 же в свою очередь полный отказ от всех прав и передача в общественное пользование - поэтому не ибет, авторские, исключительные или еще какие либо..

И да, мой код я всегда выкладываю под СС0.
Аноним 24/08/20 Пнд 12:09:43 #105 №693999 
>>693965
> И да, мой код я всегда выкладываю под СС0.
Учитывая твой психологический возраст, твой код нахуй никому не нужен.
Аноним 24/08/20 Пнд 20:15:30 #106 №694296 
>>693907
>Есть только одна православно верная опенсурс лицензия
>>693680
>Прежде чем начать делать движок, надо определиться с лицензией.
Можно для себя писать.
Для самого себя лицензия не нужна.

Вероятность что твой код заинтересует кого-то другого примерно равна вероятности стать космонавтом. В эпоху-то юнити и анриалов с гейммейкерами.
Так что вы аноны зря о лицензиях вообще думаете.
Аноним 24/08/20 Пнд 20:32:40 #107 №694338 
>>694296
Мой код с гитхаба включили в программу Artic Vault, так-то. А твой включили?
Аноним 25/08/20 Втр 01:32:18 #108 №694460 
>>693999
>Учитывая твой психологический возраст, твой код нахуй никому не нужен.
Ну да - типикал двачер
Аноним 25/08/20 Втр 01:32:39 #109 №694461 
>>694338
>так-то. А твой включили?
всех включили
Аноним 25/08/20 Втр 01:59:18 #110 №694468 
>>694461
Всех включили, а тебя?
Аноним 25/08/20 Втр 03:34:16 #111 №694482 
image.png
>>694468
и меня
Аноним 26/08/20 Срд 15:10:43 #112 №694927 
>>693680
Главное не вляпаться в GPL. А то когда вам принесут денюшку, будете страдать. Вот как они
https://github.com/TurningWheel/Barony/pull/521

Хотя в их случае то понятно, barony так-то коммерческая игра, поэтому вляпали gpl , как Кармак думы с квайками выкладывал.
Но как начали делать порт под nintendo, так "свободная" лицензия сказала "хуй вам".
Аноним 26/08/20 Срд 23:16:39 #113 №695183 DELETED
>>694927
Вроде даже в iphone appstore с GPL нельзя.
Аноним 27/08/20 Чтв 01:33:00 #114 №695223 
>>694927
Если в твой код никто другой не контрибьютит, вообще не важно какая у твоего кода лицензия, ты обладаешь всеми правами и можешь менять лицензии, закрывать код, выпускать под GPL и продавать коммерческие лицензии.

Можешь вообще никакой лицензии не указывать (это означает что на твой код можно смотреть, но нельзя использовать).
Аноним 27/08/20 Чтв 07:52:01 #115 №695237 
>>694927
>Но как начали делать порт под nintendo, так "свободная" лицензия сказала "хуй вам".
"Хуй вам" сказал коммерческий отдел Nintendo, а не свободная лицензия. Не нужно очеловечивать свободные лицензии, они этого очень не любят)))
Аноним 27/08/20 Чтв 16:14:05 #116 №695380 
.png
>>692117 (OP)
Аноним 28/08/20 Птн 09:30:37 #117 №696008 
>>695990
Только вот будешь вместо игры пердолиться с костылями движка. Особенно если твоя игра - что-то сложнее ангриберда
Аноним 28/08/20 Птн 09:31:14 #118 №696009 
>>695991
Ну зачем так рушить чью-то мечту?
Аноним 28/08/20 Птн 12:15:16 #119 №696046 
>>696009
>>696008
Опять мод-неадекват из комы вышел? Что там было?
Аноним 28/08/20 Птн 12:48:14 #120 №696076 
>>696046
Пуки гринтекстом.
Аноним 30/08/20 Вск 11:34:37 #121 №696522 
>>692117 (OP)
> например уютный софтрендер, как например делает sb3d
олдфаги всплакнули по картошке
Аноним 31/08/20 Пнд 05:39:30 #122 №696634 
Накидывайте годные ссылки для первопоста, у кого что есть
Аноним 03/09/20 Чтв 15:03:55 #123 №697045 
Чо там, тред то живой еще? Я нуфаня, вот потихоньку вкатываюсь в это дерьмо. Простой вопрос. Есть main loop, в нем происходит рендер и собственно обработка нажатия клавиш. Каждый ебаный цикл, естественно. Типо, я нажал клавишу влево и персонаж сдвинулся влево на одну клетку. Вроде все хорошо, но даже если я быстро по клавише щелкну, у меня цикл успеет итераций сто сделать, соответственно персонаж сдвинется на сто клеток влево, как фиксить?
Аноним 03/09/20 Чтв 15:08:51 #124 №697047 
Далее, блет. Как вообще идет игра? Ну, допустим, для простоты 2д какое-нибудь. Берем террарию, тут вроде очевидно, что за ширмой весь этот мир - это обычный массив и вся игра проходит в этом массиве, блоки двигаются, с персонажами - меняют ячейки массива, а рендер просто этот массив визуализирует, ну или тетрис - та же схема. Хотя с террарией не ясно немного, как персонаж занимает стоит на границе двух блоков - посередине, в тетрисе же четко на одну ячейку сдвигается. Возьмем какую-нибудь хотлайн майами, а тут как? Тут уже вроде как не подходит массив, тогда что?
Аноним 04/09/20 Птн 01:10:18 #125 №697184 
>>697045
Ты описал самый простой вариант. С которого можно начать.
Но в идеале конечно всё намного сложнее.

Нажатия клавишь запоминай отдельно. Делаешь флаги для каждой, со статусами типа "сейчас нажата" и другими.

Действия персонажа это другая система. Есть несколько общих решений как привязывать действия ко времени, но концептуально ты либо вызываешь действие один раз за отрисовку, передавая дельту времени, либо вызываешь действие различное количество раз за кадр. Где количество вызовов отражает подстройку под текущий фпс игры.

Вообще не пытайся всё сразу.
Начни с малого. Например научись точно ограничивать фпс игры. Научись таймер точный юзать.

Аноним 04/09/20 Птн 07:02:42 #126 №697196 
>>697045
>на сто клеток влево, как фиксить?
Через дельтатайм. Короче, суть такая - замеряешь время которое у тебя тратится на один кадр и умножаешь на скорость движения.

гугли main loop delta time
Аноним 04/09/20 Птн 07:06:44 #127 №697197 
>>697045
вот тут хороший пример
https://codeincomplete.com/articles/javascript-game-foundations-the-game-loop/

Чтобы перс не телепортился, нужно либо уменьшать скорость движения до дробных чисел( типа 0.001), либо делать паузы между движением (если это пошаговое). Дельта-тайм же гарантирует что движение не будет зависеть от фпс
Аноним 04/09/20 Птн 07:18:47 #128 №697198 
>>697047
>Тут уже вроде как не подходит массив, тогда что?
Тут есть несколько подходов. Для тетриса или рогалика достаточно двухмерного массива.
Еще вместо клеток юзают шестиграники (например в героях меча и магии)

Еще клетки могут быть мелкими - например так было в warcraft 2 - вся карта разбита на клетки, но они маленькие, из-за чего создается ощущение плавного движения, хотя на самом деле там движение по клеткам.

Еще есть вариант - смещения между клетками - мир разбит на клетки, но есть анимация перемещения из одной клетки в другую (при этом нельзя встать между клетками) - так сделано в рпг макере


В случае же платформеров делают по другому - любой объект имеет объем/форму, и просто зная курс геометрии мы можем узнать попадание объема игрока в объем земли, и в соответствии этого делаем реакцию - например не даем проваливаться игроку сквозь платформу.

Гуглить коллизии (collision), можно посмотреть на box2d - это двухмерная физика, она обычно не нужна для простых игр, но просто позволит понять как это делается. Или в ютубе поискать ролики по платформерам в юнити (это не рекомендация брать юнити - на готовом движке можно увидеть суть не отвлекаясь на всякие мелкие детали)
Аноним 04/09/20 Птн 17:01:36 #129 №697251 
>>697184
>Делаешь флаги для каждой, со статусами типа "сейчас нажата" и другими.
Эммм, я хз как там на ассемблере, конечно, но вроде на любом нормальном языке есть события press_down, press_up и тп
>Например научись точно ограничивать фпс игры. Научись таймер точный юзать.
И как это сделать?
Аноним 04/09/20 Птн 17:02:18 #130 №697252 
>>697196
>Короче, суть такая - замеряешь время которое у тебя тратится на один кадр и умножаешь на скорость движения.
Так кадры разные могут быть же. Один 12мс а другой писят
Аноним 04/09/20 Птн 17:03:32 #131 №697253 
>>697197
>Чтобы перс не телепортился, нужно либо уменьшать скорость движения до дробных чисел( типа 0.001)
Хуйня из под коня, на разных машинах по разному будет, у меня, допустим, рендерится 150 кадров в секунду, а у другого человека 24 и чо, у меня же преимущество будет, скорость движения будет различаться
Аноним 04/09/20 Птн 17:07:19 #132 №697254 
>>697198
>Еще вместо клеток юзают шестиграники (например в героях меча и магии)
Не охото ругаться, но ты адекватен, вообще? Программировал когда-нибудь? Какие нахуй шестигранники в коде? Покажи мне код, который шестигранниками оперирует - массив это просто квадрат ячеек по сути
>Гуглить коллизии (collision), можно посмотреть на box2d - это двухмерная физика, она обычно не нужна для простых игр, но просто позволит понять как это делается. Или в ютубе поискать ролики по платформерам в юнити
За это спасибо большое, погляжу на досуге
Аноним 04/09/20 Птн 21:57:48 #133 №697291 
>>697254
нихуя ты дебил поехавший.
просишь совета, а говоришь как скотина, ругаться неохота хуесосу
тебе сказали что шестигранники в игре, ты в глаза долбишься? какой массив?
Аноним 04/09/20 Птн 22:29:11 #134 №697294 
>>697291
Покажи мне реалиацию шестигранников не на массивах, пидор ебаный, ну, давай
Аноним 04/09/20 Птн 22:51:03 #135 №697296 
>>697294
кто пидор, ты пидор ёпта
ещё и тупой
тебе блядь никто вообще про реализацию слова не сказал, осёл
Аноним 04/09/20 Птн 22:52:07 #136 №697297 
>>697294
он же блядь тебе пишет, еблан
первый вариант - массивы
и перечисляет примеры

потом второй вариант - смещения
итд
Аноним 04/09/20 Птн 23:12:15 #137 №697298 
>>697297
Мне в ебало тебе поссать или чо?
Аноним 05/09/20 Суб 00:51:53 #138 №697300 
>>697298
себе поссы, чмо тупое
Аноним 05/09/20 Суб 01:16:08 #139 №697302 
>>697252
>Один 12мс а другой писят
>>697253
>рендерится 150 кадров в секунду, а у другого человека 24 и чо

Для этого и нужно чтобы ты изучил термин delta time.

смотри. у тебя 60 фпс. это 16 мс на кадр.
Умножаешь скорость 10 на 16 = двигаешь на 160

У тебя 120 фпс. это 8 мс на кадр. умножаешь 10 на 8 - двигаешь на 80. То есть у тебя в два раза больше кадров, поэтому ты двигаешь меньше. Если кадров меньше, то двигаешь больше.
Аноним 05/09/20 Суб 01:21:49 #140 №697303 
изображение.png
>>697254
>Не охото ругаться, но ты адекватен, вообще? Программировал когда-нибудь? Какие нахуй шестигранники в коде?
А кроме массивов ничего больше нет? Например списки? Деревья?

вот случайный пример про шестигранники - https://github.com/chenjie199234/HexagonMap

Тебе с таким подходом будет очень тяжело если захочется что-то про не евклидову геометрию, где в принципе вся логика ломается
Аноним 05/09/20 Суб 01:22:26 #141 №697304 
изображение.png
Впрочем и на сетках можно
Аноним 06/09/20 Вск 00:01:25 #142 №697391 
>>697251
>но вроде на любом нормальном языке есть события press_down, press_up и тп
Это события не языка, а операционки. Она эти события тебе передаёт. А сохранять статусы клавишь надо, чтобы ты мог их юзать из любого места твоей программы.

Если ты прямо в коллбэке где получаешь нажатие "стрелочки влево" начнёшь писать код движения персонажа влево, то далеко так не уедешь. Впрочем, для первого теста работоспособности сойдёт.

>научись точно ограничивать фпс игры. Научись таймер точный юзать.
>И как это сделать?
Разве не очевидно? Чекаешь таймер в главном цикле игры, если с момента отрисовки прошлого кадра уже прошла 1/60 секунды, то вызываешь новую отрисовку кадра.
Аноним 06/09/20 Вск 00:07:37 #143 №697392 
>>697302
Произвольная дельта в вызовах физики иногда приводит к проблемам. И вообще требует более внимательной реализации, это доп-нагрузка на кодера.

Схема с фиксированной дельтой считается более простой в написании и более надёжной.
Ставишь фиксированную дельту к примеру на 2 мс, тогда при 60фпс будешь вызывать физон 8 раз за кадр, а при 120фпс вызываешь 4 раза за кадр.
Однако, затраты процессорного времени у такого решения выше.

Просто для уточнения возможных вариантов пишу.
Аноним 06/09/20 Вск 10:51:25 #144 №697434 
>>697304
Пойди дальше. Посмотри на эту пикчу и мысленно распрями боковые рёбра шестиугольников в ровные линии. Что получится?


Ответ на обороте страницы:
Прямоугольная сетка со сдвинутыми на 1/2 столбцами.
Аноним 06/09/20 Вск 23:31:45 #145 №697571 
>>697434
Так и в каком месте это шестиугольники, если это просто ебаный массив?
Аноним 06/09/20 Вск 23:34:33 #146 №697572 
>>697391
>А сохранять статусы клавишь надо, чтобы ты мог их юзать из любого места твоей программы.
>
>Если ты прямо в коллбэке где получаешь нажатие "стрелочки влево" начнёшь писать код движения персонажа влево, то далеко так не уедешь. Впрочем, для первого теста работоспособности сойдёт.
В общем, делаю так - при нажатии клавишы ее id сбрасывается в список нажатых клавиш, но перед тем как туда его сбросить сам список чекается, не была ли уже нажата эта клавиша. Типо, так?
Аноним 06/09/20 Вск 23:35:54 #147 №697573 
>>697391
>Чекаешь таймер в главном цикле игры, если с момента отрисовки прошлого кадра уже прошла 1/60 секунды, то вызываешь новую отрисовку кадра.
Почему именно 60? Ага, старая еще не досчиталась, а уже новая начала считаться, чет не комильфо как то
Аноним 07/09/20 Пнд 01:15:40 #148 №697586 
>>697571
> в каком месте это шестиугольники
В углах?
Аноним 08/11/20 Вск 20:56:05 #149 №708475 
Внезапный бамп
Аноним 18/11/20 Срд 06:14:21 #150 №710289 
Народ, а подскажите за графические библиотеки, я имею ввиду такие как bgfx, magnum и т.д. Я вот смотрю, работа там как и скажем в чистом opengl на низком уровне, вершины/треугольники/шейдеры но в чем их плюс перед pure opengl в таком случаи? Как минимум если проект чисто учебный? в продакшене то понятно, там может пригодиться что библиотека по умолчанию может рендерить, где-то opengl, где-то vulkan, где-то webgl, где-то direct3d. Но в остальном невполне понятно
Аноним 18/11/20 Срд 17:41:35 #151 №710336 
>>710289
Пока ты будешь вручную пересылать массивы флоатов в вертексы и текскоорды и юниформить материалы, успешный геймдевелопер в пару функций загрузит модельку и скажет движку "Рендерь!". Ещё и проанимирует, и булевые операции, всякие модификаторы на вертексы применит, систему частиц абстрагирует, оптимизирует рейтрейсинг какими-нибудь октодеревьями и отрежет от отрисовки-растеризации то, что находится сзади.

Ну и как ты сказал, разные бекенды.
Я и сам потихоньку пилю свой графический движок, планирую добавить 3 бекенда: демо OpenGL (возможно без поддержки всяких материалов и теней, но может и добавлю), рейтрейсинг на GLSL, рейтрейсинг на софтрендере. Может ещё когда-то софтрастеризацию...
Причём с свой движок я бы добавил примитивы такие как Треугольники и Нурбс. + generic собственный объект, но разработчику придётся писать обработчики всякие под каждый из бекенд. Подумываю ещё, может воксельное октодерево добавить?
Вот, а для опенгла тебе придётся аппроксимировать тот же нурбс, сделать его треугольниковым.

>если проект чисто учебный
Если учебный, то можно и опенгл. Давай, иди учи свои glBegin и glEnd, а потом узнай, что это 20-й век и современные опенглы перебирают шейдерами, а вместо пересылки вертекс+текскоорд+колор просто массивы флоатов, из которых шейдер выберет, где вертексы, где нормали, где какие-нибудь эффекты и прочее.
Аноним 24/11/20 Втр 20:15:14 #152 №711333 
Пилю свой графический движок и я пока не совсем понял по PBR. Как я понимаю, это просто набор условных правил, что диэлектрик отражает свет в таких-то пределах, проводники в таких-то и всё это подстроено под физические правила. Но мне кажется, что курс на PBR мне не нужен и я лучше сделаю более гибкие настройки для рендеринга.
Но я не совсем разобрался с набором материалов. Сразу скажу, что мой движок предназначен прежде всего для рейтрейсинга.
Вот что я надумал:
0. RGBA — цвет + прозрачность. Тут всё понятно, диффузный цвет.
1. reflect 90° и reflect для 0°. Обозначает коэффициент от 0.0 до 1.0, сколько света должно отразиться для того или этого градуса. Для промежуточного угла линейная интерполяция от этих коэффициентов. Ещё можно сделать так, чтобы коэффициенты были разные для каждой RGB компонент.
2. Чёткость отражения. Если посмотреть на металлы, может быть, то можно заметить что в одних случаях отражение может быть чётким и зеркальным, а может быть размытым и зеркальным. Ещё можно заметить, что у всяких листовых металлов чёткость отражения отличается в зависимости от ориентации. Смотришь вертикально и видишь своё лицо, а горизонтально и оно размыто. Вопрос: Как это реализуется на практике и какие физические процессы стоят за этим в реале?
3. Степерь преломления. Тут вроде всё понятно, коэффициент преломления, который изменяет направление луча, падающего на поверхность в зависимости от коэффициентов смежных сред и нормали.
4. Specularity. С этим я не знаю как совладать. Знаю про спекулярность по фонгу, но это же не физическая характеристика, а так, эффект. Если осмотреться вокруг, то можно заметить, что материалы имеют блик от ярких объектов. То есть мне надо учитывать яркость источников освещения и в зависимости от их мощности делать разную яркость блика. Вопрос: Как это реализовать на практике и какие физические процессы? К тому же, блики могут быть цветными.
5. Карта нормалей. Ну тут всё ясно. Нормаль прибавляется к настоящей нормали и получаем ту, что используется для вычисления цвета.
6. Цвет внутренности и коеффициент внутреннего рассеивания. Использовать для объёмных предметов, в которые проникает свет. Например, если через сферу, то по краям будет не сильно затемнено, а в середине всё.
Или я ошибся интернетом и тут никто в PBR не умеет?
Аноним 25/11/20 Срд 03:21:43 #153 №711374 DELETED
>>711333
Шарят, но вряд ли возьмутся тебя учить.
Аноним 25/11/20 Срд 11:26:40 #154 №711395 
>>711333
> более гибкие настройки для рендеринга
С чего ты взял, что больше параметров => больше гибкости? Ты просто получаешь бесконечное количество случаев, когда твои материалы выглядят и работают хуёво. Принятые в индустрии физические модели и их параметризации позволяют порождать фотореалистичные и не очень рендеры уже пару десятков лет. Плюсом идёт огромное количество уже созданных материалов, бери и прикладывай.

Возьми какой-нибудь учебник, статью или ещё что, и изучи физику, из которой получаются уравнения и существующие модели рассеивания света на поверхности. Потом сделай всё то же самое, но сам. Раскури короче эту тему достойно, не пожалей времени, потом и сам не пожалеешь. Там ребята уже придумали много интересных вещей, и, даже если хочется придумать что-то своё, хотя бы ознакомься с их методами, иначе потратишь время на какие-то сомнительные вещи. Они делают примерно то же, что и ты, только более корректно.

Кстати, если у тебя лучи, лучше выкинь карты нормалей и завези нормальную геометрию. У тебя там рассеивание лучей по пизде пойдёт из-за таких финтов.
Аноним 26/11/20 Чтв 10:24:20 #155 №711534 
>>710336
> Рейтресинг на софте
Звучит как пиздец, если честно
Аноним 27/11/20 Птн 20:00:14 #156 №711806 
>>711395
>порождать фотореалистичные и не очень рендеры уже пару десятков лет
Но для геймдева и других проектов очень редко нужен прям фотореалистичный рендер. Это AAA графонослайсы гонятся за улучшением графики, оставляя один и тот же геймплей, тем временем многие успешные инди и не только инди игры используют нереалистичную мультяшную, пиксельную и другую графику.
Если сделать задел именно на PBR, то не получится ли движок кастрированным и без возможности настройки особой графики?

>>711534
Ну да, на топовом проце в фуллхд десяток-двадцаток сфер рисуются с меньше 20 FPS.
Это скорее подойдёт всяким встроенным системам, у которых экран 300x200 пикселей. Модельку на 3D-принтере отобразить или ещё что.
Аноним 28/11/20 Суб 07:42:57 #157 №711861 
Кто-нибудь читал третье издание оппика?
Аноним 28/11/20 Суб 21:01:55 #158 №711934 
>>710336
>Давай, иди учи свои glBegin и glEnd, а потом узнай, что это 20-й век
Но ведь glBegin и glEnd будут только в пределах графического движка, который можно в последствии целиком заменить без изменения внешних интерфейсов, так ведь? А учебный проект не ограничен только графикой. Какая разница, каким способом рендерить, если нужно просто пиксели закрасить, чтобы хоть что-то на экране увидеть? Ты ведь не можешь запилить и протестировать, скажем, физический движок, если твоя программа не может ничего на экране отобразить - даже банальный кубик без текстур.

>современные опенглы
Насколько я знаю, OpenGL считается полностью устаревшим, больше развиваться не будет и теперь все силы прежних разработчиков OpenGL направлены на развитие Vulkan? То есть вместо шейдеров GLSL теперь нужно вулкан какой-то учить...
Аноним 28/11/20 Суб 21:35:35 #159 №711939 
>>711934
> Насколько я знаю, OpenGL считается полностью устаревшим
Он будет ещё жить не один десяток лет.
Аноним 28/11/20 Суб 23:35:24 #160 №711959 
>>711934
Если ты собираешься отдельный интерфейс писать для использования опенгла, то пожалуйста. Можешь хоть glBegin, хоть glVertexPointer, хоть glDrawArrays. Когда я начинал учить опенгл, то в программировании не был очень силён и не думал про абстракции. Потом мне пришлось все свои говнокоды переписывать под новый опенгл. А потом под ещё более новый.
>Насколько я знаю, OpenGL считается полностью устаревшим, больше развиваться не будет
Последняя стабильная версия 4.6 3 года назад. Развиваться ему действительно не очень стоит. Опенгл очень рудиментарен. Это раньше люди думали, что надо сделать glBegin, а потом поняли, что легче сразу вертексы пересылать, а затем ещё научили видеокарты почти произвольный код исполнять.

>То есть вместо шейдеров GLSL теперь нужно вулкан какой-то учить
Нет. GLSL это просто сиподобный язык с матрицами, векторами и разными математическими функциями из коробки, у которого убраны указатели, рекуррентное исполнение функций и ещё некоторые фичи, что позволяет как бы из кода сделать комбинационную схему термин тут не уместен, но похож. Он из цифровой электроники, чтобы архитектура видеокарт нормально их восприняла. Вообще, теоретически, любой GLSL-шейдер можно запросто превратить в модуль на верилоге, VHDL или другом HDL.
А вулкан это просто новая обёртка, чтобы запустить GLSL-шейдеры насколько я понимаю. Или там какие-то другие шейдеры, но всё-равно отличий будет немного. На вулкане надо 1000 строчек прописать, чтобы треугольник запустить просто из-за его гибкости и возможности подхвата устройств-видеокарт или что-то такое. Вся отрисовка такая же как и была.
Аноним 28/11/20 Суб 23:41:19 #161 №711961 
Что по-вашему должен приносить графические движок помимо самой отрисовки?
В свой графический движок я собираюсь/уже добавил боксинг и разные анимации.
Под боксингом я подразумеваю, что есть родительские объекты и дочерние. Так, если один объект человек имеет дочерний оружие/шапка/кирка, то трансформация дочернего будет относительна родительскому.
А анимации я подумываю сделать трёх видов. Текстурно-цветовые, скелетные и свойственные.
Текстурно-цветовые это видео или массив цветов, которое меняется по FPS, длине кадра или другим правилам. То есть в случае пиксельной графики можно сразу анимацию загрузить и не думать над тем как перебирать кадрами.
Скелетная анимация это скелетная анимация.
Свойственная анимация это просто коллбек, который будет менять матрицу объекта. Например, заскейлить (когда курсор наводится на кнопку и она прыгает или когда надо дешёвую анимацию на 3D-персонажа нацепить).

Что ещё там может быть?
Аноним 29/11/20 Вск 06:08:40 #162 №711994 
>>711961
Различные виды куллинга: фрустум, окклюжн, порталы.
ЛОДы
Батчинг
Инстансинг
Системы частиц
Материалы
ИК
Шейдеры для воды, травы, террейна, скайбокса и т. п.
Аноним 29/11/20 Вск 07:29:49 #163 №712006 
>>711333
>Смотришь вертикально и видишь своё лицо, а горизонтально и оно размыто.
Это эффект Френеля.
Аноним 29/11/20 Вск 12:36:43 #164 №712030 DELETED
>>711961
Я бы сразу добавил 3д звук. Потому что потом заебисто прикручивать.
Аноним 29/11/20 Вск 15:03:25 #165 №712055 
>>712006
Сейчас перечитал, и понял, что ты имел в виду не эффект Френеля, а анизотропные поверхности.
Аноним 29/11/20 Вск 21:28:15 #166 №712094 
>>711959
>Если ты собираешься отдельный интерфейс писать для использования опенгла, то пожалуйста
А разве можно как-то иначе? От голого OpenGL до игровых сущностей несколько слоёв абстракции должно быть.

>в программировании не был очень силён и не думал про абстракции
>Потом мне пришлось все свои говнокоды переписывать под новый опенгл
Так если ты не думал про абстракции и сделал огромный чан с туго запутанной лапшой, тебе его в любом случае пришлось бы переписывать с нуля/рефакторить, даже если решил бы остаться на самом старом OpenGL. Сам проходил такое, и проекты приходилось бросать не из-за выбранных интерфейсов рендеринга, а из-за того, что что-то добавить, убрать или просто понять, как и что работает, становилось чрезвычайно трудно. Какая разница, какой опенгл, если ты через месяц не можешь нарисовать дополнительную кнопку на экране, не сломав полностью весь GUI, и это в лучшем случае; у меня проект, бывало, вообще весь целиком ломался, лол. С тех пор учусь избегать лапши.

>вулкан это просто новая обёртка, чтобы запустить GLSL-шейдеры
>Вся отрисовка такая же как и была
Я правильно понимаю, что теперь рендерер движка должен быть написан на GLSL, и загружаться в видеокарту? Потому что я вот скопипастил какой-то базовый пример GLSL-шейдера, а он мне просто экран красным закрашивает и всё, какие бы данные я не отправлял. То есть мне теперь иголкой в видеокарту тыкать, чтобы научить её модели рисовать? Почему всё так, почему нельзя загрузить какой-нибудь default шейдер, почему я должен учить видеокарту рисовать отдельными пикселями... Вот в legacy OpenGL ты отправляешь на видеокарту команды и она их исполняет, а в GLSL ты сам своими руками исполняешь эти команды. Как я буду эти команды своими руками исполнять, если они для меня - "чёрный ящик"?

Вот конкретно из-за GLSL я бросил разработку очередного своего движка последний раз (июль этого года). Не хотел больше даже касаться темы разработки игр, но меня всё равно тянет что-нибудь сделать...
Аноним 30/11/20 Пнд 01:05:54 #167 №712127 
>>711806
> Если сделать задел именно на PBR, то не получится ли движок кастрированным и без возможности настройки особой графики?
Нет, не получится. Получится удобно с точки зрения создания и заимствования материалов. Возьми любой blender и поиграйся с ним, сформируй сам мнение о том, хватит ли тебе того, что он может, или нет. Поищи на ютубе, что всякого охуенного с его помощью получается сделать у других.
Аноним 30/11/20 Пнд 08:49:18 #168 №712159 
>>711994
Что такое ИК?
мимо пишу курсач по графике, изучаю основные штуки
Аноним 30/11/20 Пнд 09:07:35 #169 №712161 
qw
Аноним 30/11/20 Пнд 13:31:33 #170 №712239 
>>712094
>От голого OpenGL до игровых сущностей несколько слоёв абстракции должно быть.
Посмотрел сейчас на свою первую игру, а там всего 9 функций, в которых и происходит весь игровой процесс. Сама игра это платформер на несколько уровней...

>скопипастил какой-то базовый пример GLSL-шейдера, а он мне просто экран красным закрашивает и всё
Предполагаю, что твой шейдер имел синтаксические ошибки и просто не скомпилировался. Для хандлинга ошибок надо использовать функции glGetProgramiv glGetShaderiv glGetProgramInfoLog glGetShaderInfoLog
Кстати, посмотрел мельком на вебсайты с упоминанием вулкана и как я понял, там сделали гораздо лучше. Вместо загрузки исходника шейдера можно загрузить сразу SPIRV — новый модный молодёжный промежуточный код для шейдеров, всяких вычислительных ядер и прочего. То есть компилировать GLSL для вулкана надо отдельно. Кажется, с помощью SPIRV можно запускать не только GLSL, но и HLSL, или свой собственный язык шейдинга.

>в legacy OpenGL ты отправляешь на видеокарту команды и она их исполняет
И это плохо по-моему. Плохо то, что для растеризации простых треугольников, линий и точек надо иметь отдельное устройство со своим полусовместимым интерфейсом.
Я считаю, что видеокарты это рак, особенно, что одни версии опенгла или GLSLа можно запустить на одних, а на других нельзя. Хотя это вроде бы просто вычислительное устройство со встроенным выходом на монитор.
По-моему, было бы хорошо, если бы некоторый параллелизующий сопроцессор был в процессоре вместо самой видеокарты. Можно добавить инструкций для рейтрейсинга луча и треугольника или других инструкций для ускорения видео.
Аноним 30/11/20 Пнд 14:47:57 #171 №712247 
>>712159
Inverse Kinenematic
Аноним 30/11/20 Пнд 14:48:18 #172 №712248 
>>712247
>Inverse Kinematic
Аноним 30/11/20 Пнд 17:09:27 #173 №712266 
>>712094
ну в текущий момент надо поддерживать два графических api - vulkan и условный gles2/opengl3.3
их достаточно для покрытия большинства целевых игровых устройств на планете, в отдаленном светлом будущем можно будет обойтись одним vulkan (когда на долю устройств с Android 5.0+ будет приходиться ~95% и отомрут старые компы/ноуты 10 летней давности)
Аноним 30/11/20 Пнд 20:59:00 #174 №712333 
изображение.png
>>712239
>Посмотрел сейчас на свою первую игру, а там всего 9 функций, в которых и происходит весь игровой процесс
Моя первая и последняя полноценная игра имеет целую кучу функций, типов и констант, есть даже ООП-шные классы, в которые я пытался загнать игровые сущности. Но всё это настолько перепутано, что спустя какое-то время я уже не смог разобраться в этой лапше и забил на игру. Клон тетриса, если что.. Наверное, сейчас бы я смог произвести рефакторинг, разделить на отдельные модули и т.д., но мне слишком лень, нет мотивации.

>Предполагаю, что твой шейдер имел синтаксические ошибки и просто не скомпилировался
Не угадал. Шейдер на пикриле. Скомпилировать удалось с какой-то попытки (кажется, я не мог получить правильный профиль OpenGL, получался только 1.0/2.0), но что делать дальше - непонятно. Какие-то in и out... Кто я, программист или колдун, чтобы неизвестно что получать и неизвестно куда передавать? В нормальном языке программирования я бы подключил библиотеку и передавал ей данные, а здесь я кому и что передаю? Магия какая-то.

>SPIRV — новый модный молодёжный промежуточный код для шейдеров
Ну это понятно, байт-код вроде как, да? Непонятно почему сразу такое не сделали...
>свой собственный язык шейдинга
Придётся копаться в этом SPIRV, наверняка это ещё сложнее, чем почитать туториал по GLSL)

>можно запустить на одних, а на других нельзя
Производители разные ведь. Это вообще с любым железом так (процессоры, SoC смартфонов, микропроцессоры).
>просто вычислительное устройство
Сегодня уже нет "просто вычислителей", там очень много ускоряющих работу костылей, это тебе не калькулятор.
>было бы хорошо, если бы некоторый параллелизующий сопроцессор был в процессоре вместо самой видеокарты
Ну вот Intel с AMD тоже так подумали и выпустили процессоры со встроенным видеоядром. Однако недостатки таких чипов очевидны - они вынуждены пользоваться общей с процессором оперативной памятью (а она медленнее видеопамяти) и делить место на кристалле с ядрами процессора. А у ARM с его SoC вообще всё на одном чипе, и что это меняет? Только позволяет уместить всё железо на пластинке размером с ноготь, но что это даёт разработчику ПО? Новый процессор или процессор другого производителя всё равно будут иметь свои особенности, в т.ч. в работе видеоядра.
Аноним 26/12/20 Суб 19:17:34 #175 №716855 
out.mp4
Пишу свойу библиотеку движок ГУИ, но чё-то плохо получается.
В нём есть как примитивные виджеты, такие как квадрат, так и сложные, как кнопка, слайдер, прогрессбар, список. Сейчас я остановился на прогресс барах и их очень сложно сделать. Сразу скажу, что тут прогресс бар состоит из двух дочерних виджетов — empty и full, меши которых изменяются в зависимости от value.
Я хочу запилить очень абстрактные прогресс-бары, чтобы они могли быть горизонтальными, вертикальными, со снаппингом, без снаппинга, круговыми или с генерацией своего собственного меша в зависимости от значения. А это ведёт к тому, что надо сделать отдельную библиотеку для булевых операций между 2D-мешами.
Но можно пойти по другому пути и сразу сделать нормально. Для этого придётся написать отдельный шейдер для опенгла, в который пересылать некоторый 2D-меш и если фрагмент (пиксель) попадает в него, то дальнейшие виджеты не рисуются.
Пример: Мы хотим сделать не горизонтальный и не вертикальный прогресс-бар, а диагональный. Для этого в прогресс баре есть 2 поля — для значения и угла, куда виджет full растёт. А чтобы это реализовать, надо сгенерировать 2 меша, которые будут являться разрезанным прямоугольником в определённом месте и под определённым углом. Далее пересылаем один меш во время отрисовки одного виджета и его часть отсекается, а другая нет. Важно чтобы так же отсекался трейсинг виджетов, так как в прогресс бар можно будет засунуть кнопки, например, и нельзя, чтобы их можно было нажать, пока не видны.
Таким образом можно сгенерировать и какой-нибудь свой меш. Например, если человек хочет сделать прогресс-бар, заполняющийся замощёнными шестиугольниками.
Такой шейдер позволит ещё ввести мою систему стилей. У меня стиль виджета это набор материалов (по сути цвет + текстура), связанные со своим индексом. Суть накладываемых стилей в том, чтобы они могли перемешивать индексы других стилей и, например, была белая кнопка с чёрным текстом, а стала синяя с белым текстом. Надо этим надо подумать.
Как тебе такое, Qt?

А по факту я сейчас имею криво работающие горизонтальный прогрессбар и один такой со снаппингом.

Кстати, эта библиотека работает поверх моего графического движка и мне придётся расширять возможности каждого бекенда, чтобы на них работал мой ГУИ.
Аноним 26/12/20 Суб 21:17:07 #176 №716864 DELETED
>>716855
Alpha scissoring
Аноним 27/12/20 Вск 16:49:50 #177 №716936 
>>712333
> Клон тетриса, если что
> целую кучу функций, типов и констант, есть даже ООП-шные классы
Тоже страдал такой хуйнёй, бобёр, выдыхай, как говорится в старом анекдоте.
Тетрис это просто:
1. Генератор фигур. Возвращает массив 4 на 4 содержащий булевы. Далее фигура.
1.1. Поле для вывода следующей фигуры. Генератор может загружать фигуру сначала сюда, затем по требованию игры выдавать отсюда, а сюда следующую.
1.2. Поле для удержания фигуры. Обмен фигуры в этом поле и фигуры на игровом поле.
2. Проверка на возможность помещения фигуры (ниже, правее, левее). Принимает фигуру. Возвращает булево.
3. Смещение фигуры (ниже, правее, левее). Принимает фигуру, координаты. Выполняет обнуление игрового поля по старым координатам и прорисовку по новым.
4. Проверка заполненности полей. Выполняется один раз при остановке фигуры, работает снизу вверх, при обнаружении заполненной строки, убирает её, начисляет очки, сдвигает поле всё что выше на 1 вниз.

Всё, нахуй, никакие ООП-классы не нужны.
Аноним 28/12/20 Пнд 19:58:35 #178 №717222 
Каким образом я могу в своем велосипеде максимальный фреймрейт в vsync привязать?
Аноним 12/03/21 Птн 00:42:44 #179 №732568 
2021-03-11-2002181920x1080scrot.png
>>692117 (OP)
Кастомный движок в составе готовой игрры весом 200кб, 300кб хд мод, лол
2,5д фпс шутан на чистом С, без копирайта по сути.
https://gitlab.com/drummyfish/anarch
алсо что почитать на тему процедурной генерации, текстур например, уровней?
Аноним 12/03/21 Птн 01:49:44 #180 №732583 
2021-03-11-2224421920x1080scrot.png
>>732568
+
Рендерит кастомная рейкаст либа 60кб,
апаратное 3д ускорение и обчисление плавающей точки- не требуется,
код минимальный\чистый, хорошо коментирован.
-
Из зависимостей с99, сдл2дев, системная либа,
кривая реализация мыши, от мыши проседает фпс
Аноним 12/03/21 Птн 18:03:35 #181 №732729 
>>692277
> А этого почему-то нет.

Есть. Называется "любой готовый графический движок".
Аноним 13/03/21 Суб 07:16:32 #182 №732829 
>>732568
Ебать там шиза в FAQ
Аноним 13/03/21 Суб 13:33:49 #183 №732902 
2021-03-13-1025411920x1080scrot.png
2021-03-12-1656351920x1080scrot.png
2021-03-12-1859331920x1080scrot.png
>>732829
Да побарабану, каждая точка зрения имеет место быть.
Аноним 13/03/21 Суб 15:28:21 #184 №732938 DELETED
>>732568
> attempts to avoid possible cultural dependencies and barriers (enemies are only robots,
Как бы лет через 5 извиняться не пришлось
https://www.youtube.com/watch?v=fn3KWM1kuAw
Аноним 13/03/21 Суб 17:58:19 #185 №733007 
b.webm
test
Аноним 05/05/21 Срд 14:53:16 #186 №741099 
out.mp4
Как сделать физический движок (механики)?
Вот на видео уже используется примитивный графический движок, а куб я вращаю при помощи кватерниона. Всмысле, провожу операции с кватернионом, а потом превращаю в матрицу, которая передаётся в шейдер.
Но если посмотреть на сами кватернионы, то они же бесполезные в этом деле! Разве можно описать угловую скорость кватернионом? Нет! Когда я создаю кватернион из вектора и угла, над ними проводятся синус и косинус операции, то есть неважно, какой угол, скорость не получится сделать достаточно большой.
Я так понимаю, кватернионы надо выбросить и описывать угловую как скорость, так и положение просто вектором и числовым значением.
Аноним 05/05/21 Срд 18:58:08 #187 №741167 
Сука, ненавижу пилить движки
Аноним 07/05/21 Птн 09:42:39 #188 №741402 
tumblro6salslAzJ1rffzkuo11280.png
>>692117 (OP)
Тред не читал. Вобщем мне уже 30 лет, но я не умею кодить. Я пытался, но каждый раз сливался из-за лени, депрессий и прочего. Ну и плана никакого не было. Не было цели. И вот я подумал - надо уже решаться и научиться кодить, стать специалистом в этой области хотя бы за 5 лет. Я смотрю в сторону Си - не спрашивайте почему и не отговаривайте. Я хочу написать игру с вот такой механикой https://www.youtube.com/watch?v=OUKzvX9-8F8 но без сюжетной линии, только оффлайновое пвп на одном компе, получается короче файтинг наверное. Ну если будет возможность запилить и онлайн версию. У меня нет цели прям заработать на ней или что, просто хочу научиться кодить и добавить эту игру к себе в портфолио если что. Дайте советов с каких книг начать, с чего бы вы сами начали и т.д.
Аноним 07/05/21 Птн 09:56:35 #189 №741404 
>>741099
Посоветуй что почитать. Как такое же написать?
Аноним 07/05/21 Птн 10:46:07 #190 №741406 
>>741402
нидхогг уже написали, ты опоздал
Аноним 07/05/21 Птн 11:17:58 #191 №741410 
>>741406
Ты похоже по диагонали читал - у меня нет цели заработать на ремейке или сделать убийцу die by the blade. Цель научиться кодить и стать миддлом за 5 лет.
Аноним 07/05/21 Птн 13:13:05 #192 №741422 
>>741410
Научиться кодить ЧТО? Какая предметная область? Кодить новые движки не нужно, учись работать в существующих.
Аноним 07/05/21 Птн 13:24:25 #193 №741424 
Сильно
Аноним 07/05/21 Птн 19:00:32 #194 №741440 
>>693907
> Остальные - виляние жопой - типа хочу быть свободным, но чтобы никто не украл мое авторство (а это не свободное).
Как раз таки это и является свободным. Не путай open source и free source.
Аноним 08/05/21 Суб 04:18:14 #195 №741505 DELETED
>>693907
CC0 вообще не опенсорс лицензия и не подходит для кода.
https://opensource.stackexchange.com/questions/133/how-could-using-code-released-under-cc0-infringe-on-the-authors-patents
Вкратце - она сохраняет патентные права автора и он потом может придти и поставить на счетчик.
В отличии от CC0, лицензии созданные для кода, упоминают передачу патента.
Аноним 20/05/21 Чтв 15:50:17 #196 №744014 
>>741404
Разберись в простеньком, уже написанном
https://gitlab.com/drummyfish/small3dlib
Аноним 20/05/21 Чтв 18:25:56 #197 №744065 
15683921024310.webm
>>692281
>(Автор этого поста был предупрежден.)
Аноним 20/05/21 Чтв 19:10:24 #198 №744080 DELETED
>>692117 (OP) >>692134 >>692135 >>692140 >>692146 >>692149 >>692206 >>692228 >>692234 >>692238 >>692240 >>692244 >>692249 >>692253 >>692259 >>692268 >>692273 >>692277 >>692281 >>692339 >>692343 >>692365 >>692366 >>692373 >>692376 >>692377 >>692428 >>692444 >>692451 >>692473
test
Аноним 06/12/21 Пнд 11:41:12 #199 №780032 
Отвечаю в годный и адекватный тред
У меня возникла идея создать рил тайм стратежку с ролевыми элементами. Так вот, в основу идёт разрушаемость мира и и тд.
Так вот вопрос, возможно ли натягивание совы на глобус полигонов на воксельные модели.
Да понимаю что звучит тупо и не оптимально для нынешнего железа, но возможность смотреть как падают деревья и взрываются камни, не запечёным пререндером, меня просто вдохновляют писать код и изучать это проблему.
то есть цимес не про ультра разрушение, а про элегантность падения или деформирования тех или иных объектов на карте.
Аноним 06/12/21 Пнд 11:43:38 #200 №780033 
>>692281
я тя удивлю...
но питон в геймдеве используется по своему прямому назначению.
только не говорите ему про lua и Cython,а то он бедный инфаркт схватит
Аноним 06/12/21 Пнд 11:48:07 #201 №780035 
>>780032
кста в кодинге я ноль без палки, но пережёвываю информацию и вроде понимаю матан и зачем нужна тригонометрия в 3д движках. За большое ещё не брался, но идеи просто заставляют их себя записывать и изучать Си и Пайтон дальше (нет я не дурачок, питон и правда полезная вещь, главное реализовать продукт, а допиливать ты его потом будешь, главное начать)
Аноним 08/12/21 Срд 10:02:28 #202 №780354 
Чем грузите меши кроме ассимпа?

У меня какое-то проклятие - какую либу не беру, а мои модельки в моем движке грузятся в десять раз дольше чем в каком-нибудь другом с той же либой и в той же среде
Аноним 08/12/21 Срд 11:53:46 #203 №780357 
>>780354
Иди скачай уже fbx sdk.
Аноним 15/01/22 Суб 18:52:21 #204 №785625 
У меня уже есть самописный графический движок. Где можно взять довольно сложную сцену для оптимизации, бенчмарков и всего такого?
Аноним 15/01/22 Суб 19:35:46 #205 №785637 
>>785625
sketchfab.com
Аноним 23/01/22 Вск 17:50:10 #206 №787235 
вот в чем вопрос.jpg
>>692117 (OP)
Юнити или свой ламповый движ? Замечу что игра не AAA.
Аноним 23/01/22 Вск 18:28:39 #207 №787238 
>>787235
Бери Годот, не пожалеешь.
Аноним 23/01/22 Вск 19:30:26 #208 №787239 
>>787238
Посмотрел пару игр которые на нем сделали. Печально.
Аноним 23/01/22 Вск 19:53:17 #209 №787241 DELETED
>>787239
На своем ламповом движке ты вряд ли такого добьешься.
Аноним 23/01/22 Вск 20:29:10 #210 №787242 
>>787241
Решительно не согласен. Но допустим соглашусь лол. Меня беспокоит что Юнити на C#, а логику я уже написал на С++. Я C# отрицаю, не знаю и отношусь к нему с недоверием. Мне кажется что это новомодная поделка Майкрософта которые в последнее время написали много глючного копирующего чужие проекты софта. Они просто копирнули Java и сделали язык для веба который медленный по определению. Вот не понимаю - язык новый но он медленнее старого. Это как? В чем смысл? Просто выебнуться? Мне кажется да.
Аноним 23/01/22 Вск 21:35:10 #211 №787254 DELETED
>>787242
>Решительно не согласен.
Тут вопрос объективный, количество кода которое надо написать. Все эти инициализации опенгл/вулкана, создание всяких буферов, потом исправление багов во всем этом. У меня есть свой пет движок, но там до игры как до луны роскосмосом.
>это новомодная поделка Майкрософта
C# это уже лет 10 легаси, лол. К тому же она переведана в опенсорс.
> сделали язык для веба
Это все неважно, в конце там компиляция в машинный код. Оверхед там не на скорости языка, а на обвязке, например проверке выхода за границы массива. Разница в том, что в Java/C# ты получишь вылет который сразу укажет место ошибки. В c++ у тебя типа быстрее, но при ошибке у тебя просто портится стек и ты об этом узнаешь только через несколько минут и совсем в другом месте программы, то есть ошибку искать день.
Кстати, в Годоте можно писать на с++.
Аноним 23/01/22 Вск 22:07:34 #212 №787258 
>>787254
>Кстати, в Годоте можно писать на с++.
Повторить на уровне X-COM2 реально? В смысле графики и физики?
Аноним 23/01/22 Вск 22:59:16 #213 №787262 
>>787258
У тебя команда сколько человек то?
Аноним 23/01/22 Вск 23:19:34 #214 №787268 
>>787262
Я, наследие Unity, а это целая армия духов и бесконечная вера в успех. Лучше команды не найти во всей Галактике.
Аноним 24/01/22 Пнд 00:37:55 #215 №787271 DELETED
>>692117 (OP)
Как разработчики движков совмещают тени и искажение геометрии, например дисплейсмент? Там же могут получаться новые фигуры совсех других форм, не?
Аноним 01/02/22 Втр 04:17:35 #216 №788493 
>>692146
Подводный камень всего один. Очень неоптимальная хуйня, если твои руки не из плеч и не золотые. Сделать ECS так, чтобы это работало быстро, довольно тяжело.
Это будет очень удобная и расширяемая штука, своего рода конструктор, куда можно легко добавлять новые детальки, но это все равно будет работать медленнее узкоспециализированного движка, заточенного под конкретные цели.
Если ты собрался делать не просто движок, а свой конструктор игр или планируешь моддинг в своей поделке, то полезно. Иначе не рекомендую тратить время, потому что не окупится.
Работаю в компании, где приходится дрочить на ECS, поскольку в нашей экосистеме свой язык программирования и конструктор игор
Аноним 01/02/22 Втр 04:21:16 #217 №788494 
>>780033
> используется по своему прямому назначению.
На нем делают змейку?
Аноним 09/02/22 Срд 18:42:28 #218 №790312 DELETED
Как сделать на ECS иерархию сцены? Возьмем банальный пример - танк. У него есть башня, ее трансформ, очевидно, должен быть не глобальный, а локальный относительно корпуса. У пушки же уже наклон относительно башни. Как это организовать? Решение в лоб - завести компонент Parent и для каждой энтити проходить рекурсивно всю цепочку трансформов. Но это же очевидно ломает весь принцип ECS. Как-то хитро сортировать тоже не выглядит надежным. Как бы вы поступили?
Аноним 09/02/22 Срд 19:58:36 #219 №790334 
>>790312
>Как бы вы поступили?
Не пытался бы писать ecs с нуля, а взял бы готовое.
Например, как в bevy сделано. Не знаю, как там работает под капотом, но есть 2 компонента, Transform и GlobalTransform, при апдейте трансформа глобальный пересчитывается системой с учетом всей иерархии. Возможно как раз через "хитрую" сортировку.
https://github.com/bevyengine/bevy/blob/main/examples/ecs/hierarchy.rs
Аноним 09/02/22 Срд 22:57:01 #220 №790394 DELETED
>>790334
Хотелось бы чего-то более приближенного к реалиям.
Аноним 09/02/22 Срд 23:04:56 #221 №790399 
>>790312
Не надо на ЕЦС делать иерархию сцены. ЕЦС отдельно, граф трансформов отдельно.
Аноним 09/02/22 Срд 23:09:21 #222 №790404 DELETED
>>790399
Допустим, а как это организовать? Как эта система будет отслеживать что энтити чайлда удалили?
Аноним 09/02/22 Срд 23:15:06 #223 №790405 
>>790404
Без обхода графа - никак, но это не значит, что у каждой сущности игры должен быть компонент трансформ (как в юнити, например). Или что граф сцены должен что-то знать о ЕЦС (не должен). Просто каждый трансформ должен хранить ссылку на позицию в графе, который уже не является частью ЕЦС.
Аноним 09/02/22 Срд 23:19:15 #224 №790410 DELETED
>>790405
Я скорей про то, что или узел графа должен иметь ссылку на энтитю, но тогда он может ссылать на уже удаленную энтитю, или энтитя иметь ссылку на узел графа - а чем это тогда лучше просто компонента трансформа, если все равно двойной учет вести?
Аноним 09/02/22 Срд 23:27:05 #225 №790413 
>>790410
>узел графа должен иметь ссылку на энтитю
Это совершенно ни к чему

>>790410
> или энтитя иметь ссылку на узел графа - а чем это тогда лучше просто компонента трансформа
Тем, что ЕЦС и иерархия трансформов - это две подсистемы игры. Суть в уменьшении зависимости (decoupling). ЕЦС это не серебряная пуля, не надо пихать его везде.
Аноним 09/02/22 Срд 23:35:51 #226 №790416 DELETED
>>790413
В смысле "ни к чему" если трансформ и ецс относятся к одному игровому объекту. Не, твой вариант мне вообще не подходит, спасибо.
Аноним 09/02/22 Срд 23:40:23 #227 №790417 
>>790416
А других и нет. Делай тогда на обычном ООП, зачем тебе декомпозиция тогда вообще.
Аноним 10/02/22 Чтв 07:50:41 #228 №790439 DELETED
>>790417
Вопрос был тем, кто знает. Тебе отвечать не нужно.
Аноним 10/02/22 Чтв 14:43:26 #229 №790481 
>>790394
>приближенного к реалиям
Это как? По ссылке рабочий пример кода с иерархией на ecs движке, который можно скомпилить и запустить.
Чем это не приближено к реалиям?
Аноним 12/02/22 Суб 01:24:35 #230 №790836 DELETED
>>790481
>Это как?
Что-то использующееся в реальных играх или движках.
Я уже нашел несколько настоящих библиотек на настоящих языках программирования, сейчас изучаю.
>По ссылке рабочий пример кода с иерархией
Там какие-то несколько хелло ворлдов "можно так а можно сяк"
> который можно скомпилить
То, что код компилируется, мало что говорит о его архитектуре, качестве и производительности.
Аноним 11/06/22 Суб 00:17:06 #231 №806311 
Бб
Аноним 17/06/22 Птн 13:30:22 #232 №807898 DELETED
Здpaвствyйтe, аноны
Сразу прощу прощения за вайп


Нe дyмaл, что пpидётся вот тaк обpaщaться зa помощью к нeзнaкомым людям, но я уже нe знaю, что дeлaть блин

У моeго котикa обнapyжили лeйкоз.
Зовyт Mишa. Михaил Алeксaндpович. Молодой eщё, 2 годикa
Кaк я пpочитaл, это очeнь мepзкaя болeзнь, из-зa котоpой пpи отсyтствии лeчeния Мишa можeт yмepeть. В общeм, нyжно пepeливaниe кpови...
Доноpa я нaшёш, a дeнeг нeмного нe хвaтило.
1300 остaлось нaйти
Умоляю, аноны, помогитe!!

552140ᅠ03758030ᅠ54

Всё нaчaлось с того, что в послeдниe дни Мишa стaл очeнь пaссивeн, постоянно лeжaл, eдy почти нe eл, только пил. Я дyмaл, это пpойдёт... Зaбил тpeвогy только когдa Мишa под сeбя сходил в тyaлeт. Помчaлся с ним в вeт.клиникy, тaм осмотpeли, взяли кpовь нa aнaлизы и чepeз дeнь обнapyжили лeйкоз. Объяснили, что это нe вылeчить, но пpи пpaвильном yходe котикy можно пpодлить жизнь. Я готов к этомy и моpaльно, и мaтepиaльно, я полyчaю стипeндию, работаю, но из-зa того, что нe ожидaл, что Мишa тaк зaболeeт, дeнeг нa обслeдовaния/пpоцeдypы и сaмо пepeливaниe нe хвaтaeт, a стипeндия и зарплата только 25-го. Я зaнялa, сколько смоглa, но всё paвно 1300 нe хвaтaeт.
А доктор сказал, что пepeливaниe нyжно сдeлaть кaк можно быстpee...

Он постоянно лeжит, сaм нe кyшaeт (пpиходится со шпpицa дeтским питaниeм нaсильно), писяeт под сeбя. Нy и похyдeл сильно нa фонe этой этого всeго...

Умоляю, аноны, помогите пожaлyйстa, любой суммой, хоть копейкой блин...

Аноним 26/07/22 Втр 14:13:54 #233 №823480 
Вверх.
Аноним 07/12/22 Срд 20:48:29 #234 №843791 
Кто нибудь слышал или пробовал этот физический движок
https://github.com/DanielChappuis/reactphysics3d
Аноним 07/12/22 Срд 21:07:57 #235 №843799 
>>843791
>C++
мертворожденный проект
Аноним 07/12/22 Срд 21:08:43 #236 №843801 
>>843799
Не толсти.
Аноним 07/12/22 Срд 21:52:11 #237 №843825 
>>843801
Зачем нужен движок на с++ от васяна, если physx, bullet и еще куча движков написанных профессионалами?
Аноним 07/12/22 Срд 21:54:09 #238 №843827 
>>843825
Поэтому я и спросил, кто пользовался или слышал.
Соре, bullet написан мамонтами, может они и профессиАналы, а может и нет, и кста он тоже на с++, но код там так себе.
Может тут чувак все по уму переписал нормально.
Аноним 08/12/22 Чтв 00:35:53 #239 №843877 
>>843827
bullet писали и оптимизировали ученые математики
васян в лучшем случае просто скопировал готовый код оттуда, в худшем наговнокодил непонятно чего.
Аноним 08/12/22 Чтв 00:54:30 #240 №843881 
>>843877
Фигню какую-то пишешь, честно.
Аноним 08/12/22 Чтв 01:06:07 #241 №843882 
>>843877
>васян в лучшем случае просто скопировал готовый код оттуда, в худшем наговнокодил непонятно чего.
СКАЧАЙ @ ПРОТЕСТИРУЙ
Зачем вот это вот всё вангование здесь писать?
Аноним 08/12/22 Чтв 02:10:29 #242 №843894 
>>780354
>Чем грузите меши кроме ассимпа?
Напиши свой формат.
Аноним 08/12/22 Чтв 02:21:34 #243 №843896 
>>843881
Думаешь кто-то изобрел новый гениальный алгоритм расчета коллизий? О чем этот гитхаб? Об очередной реализации физики по туториалам?
Аноним 08/12/22 Чтв 02:22:31 #244 №843897 
>>843882
>СКАЧАЙ @ ПРОТЕСТИРУЙ
Не, спс. Если бы мне понадобилось, я бы physx скачал лучше
Аноним 08/12/22 Чтв 05:18:00 #245 №843910 
>>692273
>лучше всего учиться программировать на Python
Как преподаватель со стажем скажу, что - нет. Многим людям он дается гораздо хуже как первый язык из-за вот этих вот значащих отступов. Поэтому советовать его новичкам или людям далеким от программирования не стоит.
Аноним 08/12/22 Чтв 06:01:52 #246 №843911 
>>790334
> Не пытался бы писать ecs с нуля, а взял бы готовое. Например, как в bevy сделано.
так разраб bevy как раз свою реализацию ecs и писал, потому что другие были тормознутыми, он только в самых первых версиях движка взял готовое, потом выкинул и написал свое
Аноним 07/06/23 Срд 05:15:34 #247 №880874 
ВСЁ!!!!!!!!

- Движок на C++.
- Скриптовых языков будет на старте три: C++, C# и какой-то свой «простой язык скриптования, чтобы облегчить вход в разработку начинающих специалистов».
- Визуальный скриптинг будет.
- Будет работать на любой ОС, «в том числе и Linux» 🙃.
- Web-билды будут, консольные версии «в проработке».
- Граф. движки: DX12, Vulkan и Metal. Будет и поддержка RT с DLSS. Хотят сделать «простой пайплайн» по работе с FBX, glTF или USD.
- Хотят запрыгнуть на хайптрейн и добавить ИИ-инструменты.
- Касательно «легаси-кода», ответили, что «в современных реалиях open-source разработки создавать комплексные решения с нуля, очевидно, не имеет смысла». Видимо, и правда за основу что-то готовое взяли.

это про нау энжин
Аноним 07/06/23 Срд 05:22:39 #248 №880875 
>>880874
По набору фич совпадает с годотом.
Аноним 07/06/23 Срд 07:36:15 #249 №880876 
image
>>880874
Мы будем отталкиваться от существующих технологий, поэтому наличие legacy-кода неизбежно. Также мы рассчитываем на вовлечение комьюнити в процесс разработки, а это означает, что большое количество кода будет написано сторонними командами и любой код будет содержать свои legacy-конструкции.
Аноним 16/03/24 Суб 14:00:41 #250 №941965 
1683581943416.jpg
1692785046503.png
1669955669417.png
1684019745966.webp
Нашел у себя обрывки книжки, по которой в юности изучал софтрендер на си
Там описаны алгоритмы дума и подобного. Заливка, пересечение полигонов. В сети есть djvu.
У автора еще предыдущая книжка с похожим названием гуглится, на ассемблере.
comments powered by Disqus

Отзывы и предложения