Главная | Настройки | NSFW
Тема:
Доски


[Ответить в тред] Ответить в тред

[Назад] [Обновить тред] [Вниз] [Каталог] [ Автообновление ] 504 / 190 / 315

GameDev Anonymous No.96153
15734747705230.jpg (12 KB, 474x405)
15734747706201.png (656 KB, 1700x943)
15734747707022.png (70 KB, 1273x712)
15734747707443.jpg (61 KB, 570x297)
Gamedev тред #0 + сон про кубы и чанки тред.
В этом треде обсуждаем gamedev. Тут уже где-то 4 треда про создание видеоигр, пусть будет объединённый. Началось с того, что я, команда PredposledniyRubikon мучился во сне, мне снилось, что я в своей игре на 0,0,0 блоке на адресе 0x5XXXXXXX..., в итоге я выпустил игру под названием Industriworks: https://store.steampowered.com/app/1143340/Industriworks/
Но я также продолжу и новые игры делать, когда закончу Industriworks.
И вы тоже пишите в этот тред про свои игры и наработки, спрашивайте ответы, задавайте вопросы.

FAQ:
0. Не хочу разбираться в движках типа Unity, Godot и GameMaker, хочу сразу делать игру. Как?
Ответ: Учи C или C++, смотри туториалы по SDL2, OpenGL, OpenAL, делай игру. Алсо, если тебе в туториале по OpenGL предлагают glBegin или glEnd, то этот туториал сильно устарел, но можешь попробовать для общего развития, работать будет.
1. Не хочу учить OpenGL, какой выбрать графический движок?
Ответ: Я незнаю, но можешь попробовать Ogre3D
2. Я офигею писать физику, какой движок использовать?
Ответ: Bullet (вероятно, лучший), NewtoneEngine (вероятно, лучший), ODE (вероятно, плохой, но я юзал). Это всё под 3D.
3. Как скомпилировать игру под виндовс/гнулинукс/макось?
Если у тебя GNU/Linux, то для виндовс есть mingw-X, где под X gcc и другие инструменты.
Как под линукс не из-под линукса скомпилить, я незнаю, не пробовал.
Для МакОС придётся либо покупать Apple-компьютер с XCode, либо качать некий Хакинтош. Но учти, что хакинтош это не уровень стим-игр, где-то ошибёшся и потом не будешь понимать, почему у эппл-игроков не работает, а их почти 3% от всего количества.
4. Хочу запилить реалистичную физику жидкостей.
Ответ: Наверное, тебе надо копать в сторону уравнений Навье-Стокса. Векторные поля, диффуры, всё это можешь учить на mathprofi.ru.
Вопрос в том, где ты найдёшь достаточно вычислительной мощи.
5. Как рисовать текстуры?
Овтет: В графическом редакторе, их много. GIMP, Krita. Например, Krita неплохая для графического планшета, а в гимпе тебе будет неудобно даже пиксельную графику рисовать.
6. Как делать музыку?
Ответ: Если не можешь в реале, то тебе понадобится трекер. Я использую milkytracker, но он мне не нравится.
7. В моих звуках слишком много шума, как его убрать?
Ответ: Звуковые эффекты, в т. ч. и избавление от шума можно сделать в программе Audacity.
8. Как делать 3D-модельки?
Ответ: В блендере. В недавнем обновлении ГУИ изменили, так что если ты начинающий, то тебе будет сложно смотреть старые уроки по блендеры, хотя при первом запуске ты можешь выбрать старый ГУИ.
9. Как загружать 3D-модельки?
Ответ: libassimp.
10. Как выложить игру на Steam?
Ответ: Регистрируешься в steamworks, на каждую игру единоразовая комиссия 100 долларов + от покупок около 30% (не считая налогов). Тебе придётся внести свои реальные данные, возможно и пасспорт. Читаешь документацию по стиму и стимапи (там ссылки кругом, разберёшься), создаёшь игру, проверяешь, она запускается хотя бы или нет, отправляешь на проверку в стим и тебе говорят, можно выпускать или какие-либо фатальные ошибки или рекомендации. Потом 2 недели минимум игра висит чисто страничка, потом пользователи могут покупать. Цены и скидки сам накладываешь когда тебе удобно, но с некоторыми ограничениями.
11. Как выложить игру на Google Play?
Ответ: Регистрируешься в гугл плей консоль, на каждого разработчика единоразовая комиссия 25 долларов. мобилочки подходят для рекламы и внутриигровых покупок, но никто тебе не мешает ещё и платной её сделать.
12. Как выложить игру на itch.io?
Ответ: Регистрируешься на itch.io, выкладываешь игру. Можешь даже продавать, получая на пейпал.
13. Как сделать игру?
Ответ: Мотивация + воздействие x время.
14. Как продать игру?
Ответ: Маркетинг.
15. Как делать трейлеры к игре?
Ответ: ffmpeg, OpenShot. Нужна хорошая музыка.
Anonymous No.96156
О, не думаю что ты слышал про концепцию с четвёртой картинки.

>Хочу запилить реалистичную физику жидкостей.
В играх если оно и есть, то там или частицы, или уравнение мелкой воды.
Например, в From Dust и Cities:skylines вроде как мелкая вода, но точно не уверен.

>Нет, ОП-пост совсем не подходит.
На свой бы посмотрел же.
Anonymous No.96161
>>96156
Всё-же, думаю мой ОП-пост гораздо больше подходит, чем твой. Ты говоришь, что время от времени ты будешь делать игры на юнити, а я создал полноценный gamedev тред, даже с [b]FAQ[/b даже если часть вопросов в некоторой степени шуточные или неточные], единственное что — я его окропил своим индустриворксом, сделав некоторую рекламу. Всё-таки, это, наверное, первая видеоигра выпущенная аноном с тучки в стим, масштаб большой. Я ещё не видел готовых игр анонов с тучки.
Anonymous No.96162
15734842024550.jpg (136 KB, 1251x683)
>>96161
Там не мой тред. Я просто к тому, что если уже есть четыре треда - то может быть в них и стоит остаться, чтобы не получилось как на картинке про "у нас есть 18 конкурирующих форматов..."?

Ну и ладно. Если остаток от деления на 7 суммы цифр в номере моей картинки будет равен 0,1,2 или 5 - буду быть в этом треде.
Просто тут очень много текста в шапке который в стену текста сливается, спонтанный тред в две строчки и с одной картинкой лаконичнее и эстетичнее выглядит.
Anonymous No.96164
Очень годная шапка.
Anonymous No.96236
>>96164
Тучую.
Anonymous No.96242
>>96153 (OP)
>0. Не хочу разбираться в движках типа Unity, Godot и GameMaker, хочу сразу делать игру. Как?
>Ответ: Учи C или C++,
А С# не канает?
Пост отредактировал Anonymous
Anonymous No.96243
>0. Не хочу разбираться в движках типа Unity, Godot и GameMaker, хочу сразу делать игру. Как?
>Ответ: Учи C или C++,
Лол, хочешь сразу делать игру, так не разбирайся с движками, а потрать минимум пару лет на то чтобы освоиться с сложным языком, на котором отстрелить себе ногу (а то и яйца) проще простого. Начинать надо с скриптовых языков попроще. Basic, Python, Lua. И писать свой движок на голом OpenGL смысла особого нету - на это уйдёт очередная пара лет. И для начала лучше взять какой-нибудь GameMaker или RPGMaker, где фишка в хорошем визуальном редакторе.

>3. Как скомпилировать игру под виндовс/гнулинукс/макось?
Компилировать надо под Виндовс. Под Линукс аудитория ничтожная, а если им так надо, пусть поставят Wine и его используют. Вот проверить совместимость игры с Wine это можно.

>6. Как делать музыку?
Лучше скачай свободную, её сейчас полно.

>7. В моих звуках слишком много шума, как его убрать?
Найти нормальные звуки без шума или купить нормальный микрофон и звуковую карту.
Anonymous No.96246
>>96243
>купить нормальный микрофон и звуковую карту
Для начинающего игродела бомжа это дорого.
Anonymous No.96247
>>96153 (OP)
Немного знаю Луа. Где мои навыки пригодятся? И куда копать?
Anonymous No.96251
>>96243
>минимум пару лет на то чтобы освоиться с сложным языком
В каком месте он сложный же? Я не уверен что питон проще.
Если пишешь "сложный" код, то питон со своими возможностями метапрограммирования даст фору крестам. А если простой - то там просто разницы нет. Кроме того, что в си 7/3 равняется 2, и несколько настолько же простым вещам, которые за неделю освоишь.
В питоне только готовые модули тащат - то что можно в пять строчек соединится с сервером условным или загрузить картинку. А в си их ещё подключить и скомпилировать надо, и строчек будет побольше во многих случаях. Но если модули раскрывать - едва ли там будет сильно более простой код, чем в аналогичных крестовых модулях.

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

>>96247
В создании модов для фактории. Довольно во многих играх луа прикручивают как язык для модов или для логики уровней (чтобы можно было кастомные уровни со своей логикой делать).
Anonymous No.96256
>>96251
>В каком месте он сложный же?
Ручное управление выделением и освобождением памяти. Возможность порчи памяти. Для начала хотя бы это.
Anonymous No.96260
>>96256
Не уверен, что это сложно. Можно выделять память блоками, но потом все выделенные блоки потом нужно освободить - что может быть проще?
>Ручное управление выделением и освобождением памяти.
И зачем оно нужно с новыми стандартами с++? В питоне ты пишешь без ручного управления памятью, а тут оно тебе понадобилось? 99.9% программ можно сделать через стандартную библиотеку, через ту часть, что с контейнерами.
Работа с памятью необходима только если создаёшь новую структуру данных, какое-нибудь октодерево, которой нет в стандартной библиотеке. Или если какую-нибудь сишную библиотеку прикручиваешь, которая вся на указателях, условные winapi функции те же.
То есть я сам постоянно использую указатели - но во всех случаях я мог бы обойтись вовсе без них, во многих случаях без каких-либо существенных изменений, мне кажется. Но очень уж они выразительные - не хочется от них отказываться в угоду чему-то ещё.
Пост отредактировал Anonymous
Anonymous No.96263
>>96242
Я незнаю ничего насчёт C#, но из-за него, наверное, будут проблемы с портированием. Он подойдёт только, если ты портируешь игру на один виндовс.
С C или C++ ты можешь портировать хоть на 3 флагмана для ПК — MS Windows, GNU/Linux, Mac OS X, хоть на мобильные платформы через некоторые промежуточные слои. Хотя, насчёт iOS не уверен
>>96243
>минимум пару лет на то чтобы освоиться с сложным языком
Нет, пока юный геймдевер будет писать игру, сразу и освоится с языком, хотя и будет много спотыков.
Помню, когда ещё не был программистом, пробовал Unity. Это было ужасно, я так и не смог ничего сделать. В гейммейкере уже было получше, но тоже так себе. Чистые ЯП же дают огромную свободу действий и учить их легче, чем движки, которые и не движки, а программы по созданию игр.
>>96256
Мне кажется, что понять концепцию указателей и выделения памяти гораздо легче, чем питон с его объектами в виде текста, скриптового языка программирования. И ведь в питоне тоже есть указатели, только они менее явные.
Anonymous No.96294
15735782774260.webm (12929 KB, 1280x720, 00:00:29)
Anonymous No.96302
Я подумывал над добавлением в Industriworks режим децентрализованной сущности aka режим крепости. Появляется 2 человека (мужчина и женщина) и игрок может управлять ими, размножать, организовывать их труд. Как режим крепости в дварф фортресс, хотя есть некоторые отличия. Например, игрок может управлять ими напрямую, а может задания давать и они сами его выполнят. Ещё они могут перемещаться по миру как если бы это был один игрок. Если все умрут, то игрок проиграет, как если бы он был в хардкоре.
По механике разные режимы это просто игроки за разных мобов играют. Например, _player_ у меня айди состоит из 8 ASCII символов это игрок с выживанием. _buildr_ это игрок в режиме building (aka creative). Потом будет ещё хардкорный форк _player_, какие-нибудь наблюдатели, члены крепости и наблюдатель крепости (который держит камеру вне членов).
Мультиплеер я планировал сделать так, что игрок выбирает мир и запускает его в виде сервера, игроку показывают айпи:порт, по которому подключаться будут его друзья и он может настроить сервер. Например, после выхода с серва игроки будут пропадать по идее они должны просто остаться стоять, но по-дефолту они будут пропадать и через сколько времени после выхода, какие режимы игры для входа доступны (то есть, игрок выбирает стать выживальщиком, хардкорщиком, креативщиком, наблюдателем, децентрализованной сущностью).
Но это сервер с низким порогом вхождения. Для логов и всяких сетевых модов можно будет использовать cli-интерфейс. И если вводить cli-интерфейс для сервера, то можно и для клиента. Например, опции для того, чтобы сразу запустить нужный мир, а не входить в меню.
При этом, если на сервере установлены любые моды, то клиенту не надо иметь их у себя. Файлы ресурсов и локализации сами должны быть загружены сервером на клиент, а машинные библиотеки продвинутых модов должны исполняться на стороне сервера. То есть, есть всякие блоки типа печей и верстаков. Когда игрок интерактирует с ними (E), запускается коллбек GenGUI из структуры данных для именно этого предмета. Эта функция должна исполняться на стороне сервера и передаваться по сети игроку.
Но я никогда не писал сетевых игр и могут быть проблемы. Значительные проблемы.
Anonymous No.96358
Теперь пикрилейтед который я не смог запостить это самый настоящий кликер но не идлер и не должен быть идлером.

Разработка Индустриворкс идёт параллельно и я ускорил обработку света, а точнее не ускорил, а отвязал от мьютекса изменения чанков и привязал к мьютексу генерации чанков, в любом случае, теперь не фризит, хотя свет не быстро обрабатывается. Я ещё сделал так, что у каждого блока есть 2 структуры света — одна небесная, другая искусственная. Во время генерации draw даты используется максимальное значение из них. Но нужно именно 2 структруы, чтобы во время изменения времени суток пройтись по всем структурам для небесного света и расчитать только его, без искусственного света.
Anonymous No.96361
>>96358
Индустриворкс это просто клон Майнкрафта? Или он чем-то отличается?
Anonymous No.96363
>>96361
Он пиздец как отличается. От миникрафта только основные механики типа добычи ресурсов и кубики
Anonymous No.96370
Думаю, я релизну Индустриворкс v0.2 где-то 20 Ноября. Я думаю над тем, чтобы интегрировать настоящий физический движок, например, Bullet, а то мне сложно считать коллизии. Можно подумать, что это оверкилл, но нет. Я плохо совладеваю с коллизиями, в нынешней dev-версии у меня игрок прыгает в ребро блока и проваливается вниз, просто летит. Также можно попасть в ствол дерева, если идти в ребро и застрять в нём. В нынешней публичной версии игрок не прыгает, а летает и если попал в блоки, то может легко выйти.
Ещё я когда-то думал над идеей, чтобы предметы дропа имели lowpoly модельки с пиксельными текстурками и вели себя как обычные 3D-объекты в физическом мире, но из кубиков. Но мне кажется, что это немного не подходит. Кроме того, моддерам будет сложно делать моды с такими предметами.
Тем не менее, такое можно использовать для визуальных эффектов с частицами. Может быть шарики со спрайтом в центре покатятся при смерти какого-нибудь моба. Или при отрубании конечности она красиво полетит.
Ещё можно облагородить анимацию мобов. Например, при хождении ноги поднимаются и корпус опускается, пусть высота, на которую моб опускаются вычисляется с помощью тех же коллизий.
Ещё в bullet есть, вроде бы, физика мягких тел, в частности тканей, а я в Индустриворкс планирую добавить ветер.

>>96361
Во время выхода первой публичной версии v0.0.6 он не сильно отличался (за исключением, что это очень недоразработанный клон), впрочем и сейчас.
Если же рассматривать его как идею или как будущую релизнутую версию Индустриворкс, то очень сильно отличается.
Нынешний курс таков, что игрок появляется в мире, где ему надо будет очень много гриндить. Но гринд должен увеличиваться путём автоматизации с помощью големов. Порог вхождения в големоведение высок, игроку придётся научиться крафтить сталь (тут https://steamcommunity.com/sharedfiles/filedetails/?id=1866265922 показано как), чтобы скрафтить пилу и вырезать блоки горных пород для создания пьедесталов и самих големов. Для создания големов нужны заклинания, игрок может получить их из инвентаря за MP — money point. MP можно получать путём убийства других мобов и торговлей. Также, возможность создания големов-охотников и големов-торговцев для гринда большого количества дропа с мобов, в т. ч. и редкого и продажи товара.
Алсо, я и думал недавно над механикой спавна мобов. Раньше я предположил, что пусть они генерируются вместе с чанками и единственный способ получения новых мобов — их размножение. Всех мобов. Но решил, что это не подходит Индустриворкс. Пусть в зоне из чанков создаётся структура данных о популяции некоторого вида и если таких осталось мало, то они будут просто спауниться, а деспавна не будет никакого. Таким образом, игрок может поймать в клетку интересные экземпляры мобов и наслаждаться их видом. А какой-нибудь Порченный не задеспавнится с ценным предметом. Или можно просто стоять на месте и убивать новоспавнящихся мобов. Убирать спавн или усиливать его можно будет при помощи специальных предметов. Не всем понравится, если на их личной лужайке начнут спавниться кабаны желтоглазые.
Все эти ресурсы нужны, чтобы побеждать боссов и минибоссов. В Майнкрафте боссов 2, а Террарии 14-15, а в Индустриворкс пусть будет 30 и 50 минибоссов.
Если посмотреть на боссов в регулар играх — Майнкрафт, Террария, ТЕС5 Скайрим, многие другие, то они по меркам Индустриворкс минибоссы. Боссом может быть летающий остров с кучей пушек, отряд злых гоблинов или проклятие населённого пункта, заставляющего всех жителей строить особые конструкции. А минибоссом отдельный моб, может быть, имеющий несколько приспешников.
Также одна из фишек, которые надо будет добавить, это обилие заклинаний и их реакций с окружающим миром. Сейчас есть 3 заклинания — Жизнь, Разложение и Реконфигурация. В следующей версии (v0.2) появится картошка и с помощью заклинания Реконфигурация из неё получается помидор. Это пример такой реакции.
Заклинаний разных много можно добавить. Например, Поджиг — дорогой аналог зажигалки, Регенерация — для лечения мобов, Исполнение — игрок ставит макет блоков (как чертежи в Факторио), идёт и блоки сами ставятся некоторое время. Причём, предметы, в частности заклинания, можно применять на предмет и на себя.
Изначально доступны только Жизнь и Разложение. Для открытия, например, Реконфигурации, надо выпить 10 наковален и заплатить 2 ML — money level.
Anonymous No.96374
Ладно, давайте роллю что ли, чего ждать - всё-равно заброшу через пару недель. По остатку (секунды поста) от деления на 5. Раз в два дня обязательно показывать скриншот и отчитываться о проделанном.
0. Клон-ремейк oxygen not included без элементов симса и более физически реалистичный.
1. Клон-ремейк Project Zomboid с меньшим количеством элементов симса.
2. Стелс-стратегия в лесу со временами года, где противника нужно для начало найти по вырубленным деревьям, натоптанным тропинкам, с помощью собак или по помятым кустам травы.
3. Сессионный шутер с аутизмом, для 1-10 человек минут на 40 на карту. С помятой травой и сидением в кустах.
4. Лабиринт (очень понравилась картинка: >>95004), только трёхмерный, чтобы там год можно было плутать. С элементами песочницы, чтобы можно было расставлять освещение в пещере и рисовать на стенах знаки для ориентирования.
Anonymous No.96523
15736745276950.webm (2555 KB, 1280x720, 00:00:48)
Немного освоился с буллетом, но документацию пришлось угадывать. Ещё и прослойку C — C++ писать незнаю, есть ли для си биндинг

>>96374
Круто, попробуй. Мне понравилась идея под номером 2, но тебе выпало 3.
Anonymous No.96580
Вопрос насчёт документаций.
Вот смотрите полный мануал по ODE: http://ode.org/ode-latest-userguide.html
А теперь документацию по bullet (случайная страница): https://pybullet.org/Bullet/BulletFull/classbtRigidBody.html#ad692042edc901425189cf1d067eebac6
Вообще это немного не то, у буллета есть тоже мануал, но он в виде PDF и там почти ничего не объясняется по аргументам.
Почему у C++-библиотек такие странные доки? Такой же стиль видел у LLVM, непонятно что делают те или иные классы, их методы, что их аргументы означают. Ладно, я увидел в одном туториале как узнать положение body в пространстве, теперь я могу угадать как получить его кватернион углового положения, но это потому что я видел как получать кватернион в ODE. Почему нигде не показано, за что отвечают аргументы? Может оно сделано по единому стандарту, который я пропустил в мануале для соответствующей библиотеки? Для создания цилиндра мне предлагают давать функции btVector3, но что делает третье число? Первое, допустим, — радиус, второе — высота, а третье на что? Пустой груз? Я не понимаю. C++ники сверхлюди, чтоли? Они, может быть, понимают друг-друга с полуслова?
Не рекомендую учить C++ первым ЯП программистам, они не поймут, что такое класс, его конструкторы и деструкторы и бросят программирование, как это я сделал когда-то. Надо учить C вместо C++, он элементарный и близок к машинам, позволяет понять как они работают. хотя, чтобы понять указатели, мне пришлось изучать ассемблер, но я думаю, это не обязательно.
Anonymous No.96606
Ввожу физику в Индустриворкс, а через буллет игрок иногда застряёт на пустом месте. На самом деле не на пустом, а при выбросе дропа, который появляется там же, где и игрок. Это не страшно, ведь дроп и мобы не должны быть твёрдыми как и мобы, они должны отталкиваться как это реализовано в Майнкрафте друг для друга. Надо будет посмотреть как это сделать. Кстати, ещё можно сделать физические характеристики для дропа — как они будут себя вести — как цилиндр, который всегда стоит, как шар покатится или как цилиндр-колесо и в зависимости от этого меняется их траектория движения. Или даже мобов/снаряды в виде самых настоящих шаров, а не скелета из кубиков.
Что насчёт ещё дропа, то неплохо бы сделать механику как у листьев для некоторых видов предметов. То есть дроп летит туда-сюда, плавно спускаясь на поверхность. Для бумаги, листьев деревьев и чего ещё.
Я когда-то думал над добавлением косых блоков — в виде рампов обычных и угловых, внутренних и внешних. Но я думал, что не осилю, максимум коллизии для однонаправленных параллелипипедов заделаю. С буллетом всё легче.
Алсо, я порицаю использование исключительно косых блоков в архитектуре (строения, здания) в блочных играх для косых поверхностей. Я думаю, что лучше комбинировать косые с обычными кубами, разнообразя крышу, таким образом.
Так можно будет и легко сделать движущиеся чанки, с помощью которых могут быть сделаны многоблочные корабли, летающие остров и, даже, вагоны! Да, в версию v0.3 я собираюсь ввести железную дорогу и неплохо бы, чтобы на вагоны можно было ставить блоки где-то в 8x4 площадь и несколько в высоту, это сравнительно с габаритами настоящих вагонов, даже меньше. Главное, что на таких вагонах можно будет хоть дом построить плоский, хоть любые пушки вставить для обстрела.
Anonymous No.96620
>>96606
>С буллетом всё легче.
А он не умрёт от геометрии 3х3х3 чанков?

И почему ты игнорируешь физикс? Если буллет без особых проблем с ним может конкурировать, то ode и невтон просто не работают по сравнению с физиксом. У невтона свои преимущества, но ode же просто бесполезный - единственное что в нём любопытно, что он просчитывает столкновения до интегрирования скорости (а не как все остальные движки) - из-за чего объекты отталкиваются ещё до видимого столкновения.
Anonymous No.96641
>>96620
Да я вообще не разбираюсь в физических движках. И в википедию почему-то не додумался посмотреть. Я уже и не помню как узнал об ODE. Про newton от тебя, небось. А про буллет услышал насасаче захожу в ридонли тематику иногда.
>геометрии 3х3х3 чанков
Это будет в среднем около 50 параллелипипедов-семплов на чанк, к тому же, они immovable. Разве сложно пройтись по нескольким десяткам сущностей и просчитать коллизии между ними, учитывая, что большая часть вообще будет вне радиуса, где может случиться коллизия?
Кроме того, там можно распараллелить. Если расчитывать на 4 ядра рядового компа, то 2 ядра расчитывают физику, одно-два мир, тем временем одно иногда генерирует чанки, а GPU пусть опенгл рисует.
Сейчас отрисовка блоков чанка выглядит так:
for (u32 rdp_i = 0; rdp_i < chunk->rdpNum; rdp_i++) {
RenderDataPiece* rdp = &chunk->rdp[rdp_i];

if (rdp->fps != 0.0) {
rdp->frame = FrameNow(rdp->fps,rdp->FrameNum);
}

for (u32 rd_i = 0; rd_i < rdp->rdNum; rd_i++) {
glBindTexture(GL_TEXTURE_2D,rdp->rd[rd_i].frames[rdp->frame]);

glBindBuffer(GL_ARRAY_BUFFER,rdp->rd[rd_i].vbo);

glVertexPointer(3,GL_FLOAT,0,(void*)(u64)0);
glTexCoordPointer(2,GL_FLOAT,0,(void*)(u64)(rdp->rd[rd_i].num*sizeof(GLfloat)*3));
glColorPointer(3,GL_FLOAT,0,(void*)(u64)(rdp->rd[rd_i].num*sizeof(GLfloat)*(3 + 2)));
glDrawArrays(GL_QUADS,0,rdp->rd[rd_i].num);

glBindBuffer(GL_ARRAY_BUFFER,0);
}
}

u32 это uint32_t
Я не знаю как тут оптимизровать, я хотел попробовать использовать gl list, но ведь glvertexpointer и другие pointer это клиентские функции и я не очень всё это понимаю.
Кроме того, для отрисовки сущностей я использую glPushMatrix и glPopMatrix, но, как я понимаю, это прошлое десятилетие и нормальные программисты вручную считают для каждого кадра через синусы хитроумные перемножения матриц вертекс данные, текстурные данные и вообще делают единую текстуру-атлас, а мне всё это сложно, я плохо знаю математику и опенгл слишком низкоуровневый для меня.
Anonymous No.96644
15737578371870.webp (531 KB, 1742x1003)
15737578374931.webp (665 KB, 1793x1059)
>>96641
Нет смысла (в плане быстродействия) использовать glCallList, если у тебя GL_ARRAY_BUFFER.
А что за карточка у тебя? Ну не может тормозить то количество чанков, которое у тебя на экране. Даже через glBegin/glEnd на встроенной карточке от интела за 2004 год.
Вот смотри. Я рисую 50 тысяч квадратов (первая картинка), и перед на каждый из них вызываю glBindTexture и новую пару glBegin, и даже такое говно выдаёт 50 фпс.

>for (u32 rd_i = 0; rd_i < rdp->rdNum; rd_i++)
Вот это проход по текстурам, насколько я могу понять.
То есть у тебя цикл по чанкам, а внутри него по текстурам. Попробуй переставь их, чтобы был цикл по текстурам, а внутри него цикл по чанкам.
Вот, смотри второй скриншот - я увеличил количество квадратов в 10 раз (плотность примерно такую же поставил, умножив размеры поля на 4 по двум осям), но убрал переключения текстур, так что сначала рисуется 250 тысяч одной текстурой, а потом другой. Пары glBegin/glEnd при этом на месте. Фпс увеличился с 50 до 540. Вообще охуеть, 500к квадратов в 500 фпс.

>опенгл слишком низкоуровневый для меня.
Зачем тогда си мучаешь, если есть кресты?
Anonymous No.96646
>>96641
А вообще один GL_TEXTURE_2D_ARRAY решит все твои проблемы. Там не будет переключения текстур (совсем, ни одного переключения) и не требуется группировать отрисовку полигонов по типу текстур. То есть ты на каждый чанк один раз вызываешь glDrawArrays, и всё. Все полигоны с разными текстурами в одной куче. Тип текстуры заключается в третьей компоненте текстурной координаты (придётся поставить glTexCoordPointer(3, ... )).
Пост отредактировал Anonymous
Anonymous No.96682
15737977707390.webm (523 KB, 1800x980, 00:00:07)
15737977708571.webp (159 KB, 2124x780)
>>96374
>Раз в два дня обязательно показывать скриншот и отчитываться о проделанном.
Настроил рендер в текстуру кое-как. Он потребуется для hdr-освещения, и для камер. И тепловизоров. Ещё через него можно сделать честное полноэкранное сглаживание и много других эффектов по типу бликов или выделения границ.

Пока технический план такой:
Разложить рендер и игровую логику в два разных потока (чтобы управляемость не зависила от фпс - как происходит в подавляющем большинстве игр, где нажатия клавиш привязаны к рендеру картинки).
Сделать коррекцию прямоугольной перспективы (эффект, из-за которого в трёхмерных играх объекты по центру экрана меньше, чем если камеру повернуть под углом). Пример на второй картинке, из игры Apex Legends c fov равным 110.

Список геймплейных идей:
Мир замкнутый - можно неограниченно идти в любую из сторон, но через некоторое время вернёшься назад. Много гор, пещер, проходов, сложная организация пространства.
Из окружения камни, кусты (ни разу не прозрачные - но звуки разносятся далеко и сквозь кусты нельзя бежать с адекватной скоростью), трава, следы от игроков. Совершенно точно смена времени дня, и, маловероятнее, погода. Погода сложная всё-таки. Может быть руины какие-нибудь.
Из оружия огнестрел и какие-нибудь копья - потому что разведка существенна и шуметь лишний раз не стоит. Растяжки, капканы, камеры, дистанционные микрофоны, взрывчатка реагирующая на звук, на движение, с дистанционным взрывателем или таймером. Игра должна быть не про аим и реакцию, а про тактику, удачные позиции и предугадывание действий противников. Никаких поединков на револьверах со 150 метров на удачу. При этом нужно как-то решить проблему с высиживанием в одной точке - например, через некоторое время на запах сбегаются собаки, и после достаточного скопления они начинают лаять и выть выдавая позицию. На самом деле это будут не собаки, а абстрактные летающие вдоль земли и жужжащие мобы из соединённых октаэдров - потому что я не умею в моделлинг и не вижу никакой самоцели в стремлении сделать именно человеческие модельки, дома и всё такое привычное - к тому же даже если бы умел - такое количество всего в "человеческом сеттинге" одному сделать почти невозможно даже не считая кода, который нужно будет написать для разнообразных анимаций.
Экипировку игроки выбирают заранее.

В первую очередь минимальный играбельный прототип.
Завтра же пустой плоский мир (пока не замкнутый) без освещения и графики, движение игрока (сферического в виде облака пыли/искр) и камеры, одно оружие и стрельба из него.
Во-вторую очередь вообще любые звуки просто чтобы были и мультиплеер. Потом всё остальное.
Anonymous No.96711
15738106653730.webm (2181 KB, 1606x858, 00:00:20)
Я перерисовал текстурки maho_lif (Life) и maho_rcn (Reconfiguration), сделав их анимированными.
Думаю, добавлю ещё 4 большие фичи и выпущу v0.2:
0. Сделать анимацию хождения гоблину.
1. Добавить физику.
2. Исправить звуки (они у меня появляются немного не в тех местах).
3. Изменить ачивки — вместо моделек (блока, предмета) буду рисовать отдельную иконку, виджет contexmenu ачивки будет содержать имя и квест (добыть дерево, выплавить сталь), но главное то, что при нажатии будет открыто окно с описанием и рецептами крафта, таким образом, игрок может узнавать рецепты крафта прямо из игры по мере её прохождения.
Никаких книг рецептов как в майнкрафте (которая, к тому же, запоминает только уже деланные крафты) или экстернальных форумов.

>>96644
>>96646
Можно попробовать этот GL_TEXTURE_2D_ARRAY, но, как я понял, текстуры должны иметь одинаковый размер, а для этого мне придётся переделывать весь движок отрисовки и генерации дравдаты, так как текстуры у меня разных размеров. Есть с развёрткой куба, есть большие текстуры для горных пород, где блоку придаётся смещение в пикселях, и могут быть текстуры с одной стороной блока.
Насчёт моей видеокарты, то это встроенный интел гпу, причём, возможно, прожжоный. Когда-то иногда возникали шумы на мониторе, а потом прекратились. Тем не менее, те же игры, которые и раньше запускались, не так уж и тормозят.
Anonymous No.96725
Я, кажется, понял философию C и C++. C — для интровертов, а C++ — для экстравертов.
Когда кто-то задает вопрос по C, ему предлагают сделать велосипед, а не использовать уже готовую библиотеку, то есть как раз занятие для одиноких людей, которые лучше сделают самостоятельно, чем найдут готовое универсальное решение. С другой стороны, если прочитать документацию по рядовой C-библиотеке, то всё станет понятно.
А когда читаешь документацию по C++-библиотеке, ты на самом деле не читаешь, а пытаешься её угадать. Люди, живущие активной социальной жизнью должны понимать намёки других людей, иначе им конец. Вот и вместо написания нормальной документации, они говорят "Это же ООП" и заставляют других людей угадывать как работает их библиотека.
Это можно найти и отражением в программах, написанных на этих языках. Возьмём Линус и Виндовс. Линукс написан преимущественно на C и самая популярная ОС на нём — GNU/Linux очень одинока. Около одного процента пользователей Стима используют Линукс, а если вообще десктоп, то ещё меньше. С другой стороны, документация, связанная с ним очень хорошая, как аутисту объясняют. Если же посмотреть на Виндовс, то как решается проблема: Вылазит сообщение, что произошла ошибка, пользователь нажимает OK и пытается угадать, в чём была проблема, как её исправить и нужно ли вообще этим заниматься или стоит потерпеть (как иногда терпят неприятных людей). Если же попроситься на сайт поддержки микрософта, то там вряд ли что-то ответят, то есть тебе всё-равно надо самому угадать как решить проблему.
Мне кажется, что велосипеды, как и угадывание документации — плохая затея для программирования. Другое дело питон...
Anonymous No.96728
15738279795320.png (73 KB, 1414x212)
>>96711
> текстуры должны иметь одинаковый размер
Да нет же. Всё что им нужно - одинаковый тип и фильтрацию (что тоже можно обойти через более сложные шейдеры). Ты создаёшь один GL_TEXTURE_2D_ARRAY, просто потому что он не ограничен размером и в одну такую штуку можно запихнуть все текстуры даже довольно крупного размера. Если текстуры маленькие - то ты запихиваешь несколько на один слой. При этом в шейдере у тебя есть доступ к массиву, где указано, что текстура 57 - это текстура с 13 слоя с текстурными координатами по x от 0.25 до 0.5, и по y от 0.75 до 1.0.
А в самом коде ты просто через третью компоненту текстурных координат указываешь 57 - а к нужным текстурным координатам нужного слоя это приведёт несложный шейдер в три строчки.

Если у тебя все текстуры по 16х16, то можно и один слой GL_TEXTURE_2D оставить. Но, возможно, тогда есть смысл на процессоре заранее просчитать и привести все текстурные координаты, особенно если у тебя интел. Но это будет давать выигрыш только при таком низком разрешении текстур (которые уместятся в одну текстуру) и только потому что у тебя интел, мне кажется.
Кстати, по идее вывод текста у тебя уже должен работать подобным образом, не очень представляю как можно было сделать сделать по другому. Я вроде бы показывал, у меня вот такая текстура генерируется - с самым худшим, написанном на коленке алгоритмом заполнения текстуры прямоугольниками. Для объектов оно точно так же работает, как и для шрифта.
Anonymous No.96866
В другом треде анон попросил другого сделать игру про дождевого червячка на поле боя и я вспомнил одну из своих идей:
Идёт мужчина голый из душа в своей квартире, а его многоэтажка взрывается. Его отлетает, но он в созании и думает "Эх, жаль, конечно, что такое случилось, но повернуть обратно уже нельзя, пора приспосабливаться к новому образу жизни" борьба со стрессом. К началу игры его руки и ноги сломаны и ему передвигаться очень сложно. Есть ряд квестов. Выбраться из-под завала и увидеть серое пасмурное небо, найти мимосевшую божью коровку, выкопать из-под завала трёхлетнего мальчика, который потом побежит по завалу и выберется, найти какие-нибудь ресурсы и вещи, попробовать оказать первую помощь себе. Игра заканчивается тем, что через несколько часов его находят спасатели.

Раз я начал писать этот пост, то напишу новости про Индустриворкс. Я отказался от буллета. Как бы хорош он ни был а я даже это не успел проверить, плохая документация убивает его полностью. Буду сам писать с гитхаба функции для распознавания коллизий между параллелипипедами. У меня есть баг, при котором игрок попадает в ребро и падает, но недавно я понял, что неудобство можно нивелировать, если разрешить игроку прыгать, даже если его скорость ненулевая. Раньше так нельзя было, потому что игрок, теоретически, сможет прыгнуть, достигнув высшей точки параболы траектории (где скорость по y нулевая), а не конца.
Популярность Индустриворкс в последнее время возрасла, мне это нравится.
Кстати, осенью и зимой будут бешеные скидки на него в это время, вероятно, будет самая маленькая цена на Индустриворкс в стиме, за полдоллара можно будет купить, так что если кто-то из вас до сих пор этого не сделал собирался, это шанс для вас сэкономить несколько долларов.

Я также делаю и другую игру. Планировал к второму декабря доделать (итого за месяц), но фичи не вводятся, так что, скорее всего, придётся 2 месяца делать. А 2 x pi/2 = 3.
Anonymous No.96867
>>96866
>Игра заканчивается тем, что через несколько часов его находят спасатели.
Необычный сюжет, однако.
Anonymous No.97010
Я понял, почему у меня в Industriworks FPS проседал. Я забыл после обработки изменённого чанка устанавливать флаг изменения в 0, из-за чего лочился мьютекс, связанный с отрисовкой динамических моделей блоков (голем-инсертер, голем-крафтер). Теперь максФПС доходит до 100.
Anonymous No.97157
>>96153 (OP)
Дебич, вместо того чтобы реально занятся ИГРОЙ делает унылые костыли дристодвижок. И имеет невероятный фурор на стиме. Слабоумный шизик тратит время
Anonymous No.97182
Industriworks v0.2 из вышел
Тут можно посмотреть все новости:
https://steamcommunity.com/app/1143340/allnews/
Теперь буду делать v0.2.1
Anonymous No.97429
Пока ничего не делаю, только немного облагородил страницу в стиме: https://store.steampowered.com/app/1143340/Industriworks/
И трейлер теперь имеет музыку. Она очень элементарная, но я думаю, хоть какая-то, чем вообще без звуков. Но к релизу стоит сделать нормальный трейлер если сам индустриворкс будет нормальным с очень хорошей музыкой, чтобы выглядело как опенинг для аниме. Причём несколько трейлеров, один — опенинг, второй — шуточный, а третий — геймплейный. На такое и потратиться на звукорежисёра + композитора неплохо. Но это в случае большего успеха Индустриворкс.
Я ещё нашёл баг, из-за которого вылетает, если сделать скриншот (F2), предварительно ресайзнув окно. До сих пор не понял, в чём проблема.

До лайси + миллионы библиотек далеко, а игры делоть надо, так что я изучаю вопрос в сторону движков, а именно — годот, потому что это опенсурсное свободное и, вероятно, удобное, там ещё gdscript на питон похож. Пока выглядит не плохо, когда-то при первом знакомстве с ним я отошёл, потому что не прочитал документацию. Главное — воспринимать его как приложение для создания небольших приложений, а не как игровой движок. Для Индустриворкса он не подошёл бы. Для новой игры, которую я тоже поделываю, подошёл бы, но я уже начал делать на си, так что не буду ничего переписывать. Он также мог бы подойти для платформера про паучка, который я отменил. Может быть потом и поделою, мож даже игру про нефтедевочку на нём заделаю. Если только не будет отторжения моим организмом и если я вообще буду делать игры. В них я вижу прежде всего возможность дохода и только потом творчество. Но в игре про нефтедевочку большая составляющая творчества, было бы интересно просто её сделать и выпустить.

>>96682
>пять дней спустя
ммм?
Anonymous No.97433
Сап, аноны, хочу попробовать сделать эдитор для внок, но в гуем и формочками как в вордпрессах этих ваших. Думаю сверстать на пайтоне. Что думаете по этому поводу?
Anonymous No.97444
>>97433
Есть же renpy, какой смысл в гуёвом приложении для создания VN, если там почти ничего, для чего понадобился визуал, нет. Визуал это для видеографики, 3D-моделирования, а совмещение картинок с текстом можно и в воображении представить, стиль подобрать за несколько итераций.
Но я не разбираюсь в VN, так что не уверен насчёт этого.
Anonymous No.97456
>>97429
Это говно ещё и покупать надо?!
Anonymous No.97533
>>97429
Я же говорил это один и тот же шизик, хуево быть тобой
Anonymous No.97552
По Industriworks выпустил ещё видео:
https://www.youtube.com/watch?v=687mQvdBiO4&feature=youtu.be
Anonymous No.97556
>>97429
>ммм?
Муу.
>Пока ничего не делаю
Вот то же самое, на выходных кое-что случилось и никакой возможности желания что-то сделать на них или немного после не было, не писать же об этом. Не заставляй отчитываться то, сам хорош - почти ничего не сделал за три месяца. Иди лучше анона, который хотел делать свою рпг потыкай(>>95837 (OP)), у него даже пульса нет, в отличие от.

Каждые два дня я фигурально имел ввиду кстати. После каждого куска проделанной работы имелось ввиду. Не могу попасть в состояние потока сейчас, чтобы быть в достаточной степени продуктивным и мотивированным.
Пост отредактировал Anonymous
Anonymous No.97560
15744254802750.png (1365 KB, 1584x893)
15744254804151.png (688 KB, 1584x893)
15744254804832.png (676 KB, 1584x893)
Тещу новый ландшафт сгенерированный по шаблону в виде картинки. В данном случае я использую шаблон круглого острова. Только тут на каждый блок свой пиксель отвечает, причём в линейной зависимости. В будущем же надо сделать каждой область в N×N блоков пиксель и зависимость немного нелинейная, ещё и шумом перлина холмов накидать. И океаническую воду добавить.
На последней картинке видно как островной шаблон обрывается обычным шумом.
Думаю, не буду делать процедурно генерируемую историю, но шаблонный остров с некоторыми вариациями, ещё и единственными локациями, разбросанных в разных уголках острова. Приблизительно так в террарии — один дандж, один джунгевый дандж, один пустынный/джунглиевый/снежный биом. Только там один перс может ходить в разные миры, а у меня нет. У меня теоретически могут генерироваться больше экземпляров одной локации, но реже.
Один остров генерируется вокруг игрока, а другие, с другими биомами и более сложные рядом, а когда заканчиваются шаблоны — просто процедрные островки, в которых и могут встретиться новые экземпляры этих самых локаций.
Алсо, я писал когда-то про цветы роз, но их я собираюсь делать, когда введу хитбоксы. Куст роз тоже будет иметь хитбоксы, а в них цветки роз и при срезе их ножницами они будут подсвечиваться.
Anonymous No.97588
15744485099950.png (1949 KB, 1584x893)
15744485100701.png (124 KB, 400x400)
Хотя не, шумом перлина сдабривать не надо — только ухудшит.
Надо будет и пещеры как-нибудь нарисовать и чтобы они такими же шаблончиками генерировались.
По-хорошему мне нужен воксельный 3D-редактор, если я не хочу играть в дварф фортресс в гимпе. Индустриворкс в такое я превращать не хочу, так как зачем ещё оптимизировать и лишний ненужный контент добавлять? Бинарными вокселями буду пещеры делать, а цветными разные блоки обозначать.
А в интернете есть очень много пещерных и гробничных артов для вдохновения. Но мне бы ещё научиться острова рисовать.
Anonymous No.97604
15744523683710.png (153 KB, 799x701)
15744523685611.png (111 KB, 959x740)
Вариант домика для гоблина-бомжа. Грубые трухлявые бетонные стены, несколько стёкол, сундук, кровать и дверь, деревянная крыша.
У более богатых гоблинов будут уже нормальные дома.
Anonymous No.97626
>>96153 (OP)
> GameDev
Как же это сложно. Тут без команды кодеров и дизайнеров ничего не сделаешь.
Anonymous No.97629
>>97604
Кокой милый домик. Не понимаю почему в Майне нет нормальных НПС с поселениями, которые они развивают, а есть только тупые и уродливые жители.
Anonymous No.97649
15745156242000.png (1471 KB, 1584x893)
Раньше, если зайти далеко (сгенерировать много чанков), начинало лагать. Это было, потому что при поиске чанков по коордам у меня просто перебирался весь их массив и сравнивались координаты. Теперь же я храню их в ассоциативном массиве, у которого в индексах координаты. Не уверен как называется такая структура данных, я думал, что "дерево", полез в википедию и оказалось, что мне надо было деревья делать, а не то, что я.
Ну ладно. Производительность так выросла, что я офигел. Бежал до конца карты, пока вся ОЗУ не заполнилась чанками (которые, пока что, не выгружаются на диск) и ничего не лагало.

>>97626
кодер, дизайнер, композитор, сценарист-геймплеер, 3D-моделер/рисовальщик, тестировщик, а самое главное — маркетолог если только ты не делаешь игры чисто для себя/для интереса. Да, это сложно, но в современном мире 3D-моделера/рисовальщика и композитора можно заменить процедурным алгоритмом, а кодера "движоком" типа годота или юнити, так что, будучи лишь маркетологом можно делать успешные игры. Но это грубо сказано и чтобы сделать AAA-проект, придётся установить несколько пакетов хорошего софта и потратить минимум пару лет.

>>97629
имхо, Майнкрафт это классика, причём развивающаяся и быстрый рост только навредит ему. По-моему в последних обновлениях было много лишнего. Например, отряды, нападающие на деревни или арбалетчики, спавнящиеся около башен. Что насчёт первых, то идея неплохая, но не слишком хорошая, а вторая вообще тупо реализовано. Арбалетчики спавнятся без остановки вокруг башни, неизвестно, сколько на том регионе их осталось и как остановить спавн. Ещё Особняк в тёмнодубовом лесу выглядит как-то нелепо, даже незнаю чем описать. Слишком большой, что ли, комнаты непроработаны, слишком мало разнообразий, не уверен. Я думаю, что майнкрафту нужна кастомизабельность, в частности, официальная поддержка модов. Хотя и уже майнкрафт сильно кастомизабелен при попощи команд и командных блоков и других фич. Кстати, Командный блок — первый шаг, чтобы стать линуксоидом для десятков тысяч детей по всему миру!. На многих серверах можно увидеть всякие скульптурки, сделанные из вешалки для брони, блоков и предметов.
Для меня майнкрафт это даже не просто игра, это нечто большее. Как культура какая-то, часть жизни, способ представления данных и выдуманного мира или что-то наподобие этого. Мне не хотелось бы, чтобы он слишком быстро рос, а то плохая фича станет опухолью.
Anonymous No.97910
15746149650300.png (1550 KB, 1584x893)
15746149651021.png (814 KB, 1584x893)
15746149651612.png (659 KB, 1584x893)
15746149652113.png (1676 KB, 1584x893)
Около окенана лагает — вода просачивается в пещеры.
Но какие виды! Благодаря ним хочется и дальше продолжать делать индустриворкс.
Для следующей версии v0.2.1 осталось ввести 2 фичи — смерть и урон от скорости (падения в частности).
Ещё надо будет попробовать с мультиплеером поэкспериментировать, но сначала лучше ввести режим Building и Hardcore.

Я придумал ещё одно заклинание, которые надо будет добавить — ускорение. Если применить его на игрока, то ничего не будет, если на растения — они быстрее вырастут или умрут.
Кроме него, регенерация — для восстановления здоровья, исполнение — для быстрой ставки блоков по чертежу (которые тоже надо будет добавить), поджиг — для создания огня.
Anonymous No.97942
>>97910
>ускорение (времени, как в дед стандинг дэ?)). Если применить его на игрока, то ничего не будет
Почему же, лечение ран должно быть.
Anonymous No.97960
Привѣтъ, я дѣлаю классическую RPG въ духѣ первыхъ Ультимъ или того же Wasteland. Хотѣлось бы услышать, что бы вы пожелали тамъ увидѣть. Кроме коровановъ, разумѣется - они и такъ будутъ.
Пост отредактировал Anonymous
Anonymous No.97991
>>97942
>как в дед стандинг
Я скорее вдохновлялся походкой божества из Принцесса Мононоке.
Насчёт лечения ран, то зачем тогда Регенрация? Возможно, Ускорение будет избавлять от бафов и дебафов, а вообще, игрок схож с големами и он не должен стареть. Возможно, Ускорение будет немного лечить обычных мобов.
Anonymous No.98208
15747800231260.png (863 KB, 1031x815)
15747800232041.png (449 KB, 789x616)
Смотрел свою игру (это хоррор), а там первая локация сделана отвратительным кустарным и ламерским способом. Брал и добавлял одним инструментом новые грани, экструдил из них стены, особым кубиком вырезал дверные проёмы и всё перетаскиванием курсора, потом ещё и в колладу проэкспортировал. Попробовал текстурку наложить и решил, что будет легче сделать заново. джва часа искал как вертексу присвоить глобальное положение.
Anonymous No.98218
>>98208
Забавно, но если бы я делал игру, то в первую очередь вдохновлялся Stanley Parable или The Witness.
Anonymous No.98246
Выпустил обнову v0.2.1.
Тут новости: https://steamcommunity.com/app/1143340/allnews/
А тут видео с океаном: https://www.youtube.com/watch?v=-FjyqxtJX6Q

В следующей версии собираюсь улучшить ачивки.

А вы знаете как пользоваться реддитом? Я слышал, что там можно популяризовать мнение, в т. ч. и Индустриворкс, но я немного не понимаю, что это такое. Похоже одновременно на "сайт со смешными картинками", имиджборду и просто форум.
Anonymous No.98249
15748535365350.png (642 KB, 1104x728)
Мой вердикт: Блендер не предназначен для создания реальных 3D-моделей.
Такое ощущение, что люди модельки делают из полигонов, а не из условной глины. Почти все моделеры в реальном мире использовали камень, глину, металл. Помните как Микеланджело (или не он или не это) говорил? "Я беру глыбу и отсекаю всё лишнее". В блендере же нельзя просто взять и отсечь, тут ад с полигонами.
Хотя, может, блендер полезен только для моделирования персонажей/животных, деревьев и камней, но никак не зданий
В общем, придётся писать очередной велосипед, теперь уже для создания 3D-моделей, из-за чего ещё меньше времени останется на игры. А нынешние игры придётся делать из тех же кубиков и спрайтов с велосипедными скелетами, мож ещё воксельные модели получатся. Велосипеды везде. Даже всем программистам на C предлагают писать велосипеды, но это всё ещё лучше чем угадывать документацию (для большинства библиотек) в случае C++.
Свой 3D-редактор можно даже на Си писать, необязательно ждать выхода Лайси. Но это не решает проблему, что я очень плохо знаю математику, придётся попотеть, что вертексы пересекались и сходились как надо. Жаль, что единственную ГУИ-библиотеку, которую я знаю это Qt, и только на питоне, так как под си не завезли биндингом. Ну ничего, можно фронтенд на питоне, а бекенд на Си, свой ГУИ я писать не хочу.
Надеюсь, хоть годот оправдает своё предназначение как конструктор простеньких игр.
Anonymous No.98253
15748572090650.webm (8101 KB, 1146x652, 00:00:40)
15748572095311.webm (3155 KB, 1208x700, 00:00:15)
15748572095712.webm (6877 KB, 1208x700, 00:00:39)
>>97649
>Теперь же я храню их в ассоциативном массиве, у которого в индексах координаты.
У тебя заранее массив размером в 64х64х64, где нулевые или ненулевые указатели, или у тебя считается своего рода хеш от координат?

>13/08/19
>Зачем ты в несколько потоков это делаешь в первой же версии?
>Удобно и не сложно.
>17/11/19
>Я понял, почему у меня в Industriworks FPS проседал
>лочился мьютекс
Совсем не сложно, лол. Прости, не удержался.

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

Ещё есть вот такое (первая вебм - внимательно считайте повороты в туннелях, специально раскрасил; жёлтый сегмент на 20-ой секунде - это один и тот же сегмент). Нужно написать кучу функций: для определения видимости объектов в таком пространстве, для рассчёта расстояния между многоугольником и линией и всё в таком роде. Не слишком понятно какой должен быть интерфейс для редактора уровней с такой организацией пространства. И ещё как рендерить звук. Но если делать такое - то строго до написания какой-либо игровой логики, потому что слишком многое завязано на обычном трёхмерном пространстве. Сначала хотел как костыль сделать, просто чтобы в некоторых точках мира игрока телепортировало создавая иллюзию "короткого хода". Но рука не поднялась и теперь я могу делать подобные туннели (и открытые пространства) какой угодно по сложности формы и всё это будет работать с нормальной скоростью и без артефактов. Можно сделать небольшой с виду дом, внутри которого пространства будет в десятки раз больше, чем должно было быть. В общем - я совсем точно хочу такую механику к себе под бок.

Вторая/третья вебм: коррекция искажений "прямоугольной перспективной проекции" (не знаю как её здоровые люди называют, какая-нибудь центральная проекция на прямоугольник), но там всё просто и её можно будет в любой момент включить с нужным углом обзора и коррекцией. Идея в том, что в игре угол обзора порядка 90 градусов, а экран ирл занимает 20-30 градусов обзора, из-за чего равные по размеру объекты (находящиеся на одинаковом расстоянии от камеры) имеют разные угловые (видимые) размеры и форму.
На второй вебм показана ванильная проекция при 150 градусах (горизонтальных) обзора. Как можно заметить - прямоугольники по углам вытягиваются в невообразимо острые ромбы, прямо как плакаты в Apex Legends (в нём стоит около 120-130 градусов >>96682).
На третьей вебм некоторая более-менее универсальная коррекция. В идеале нужно указать точку экрана наиболее близкую к глазу, расстояние до этой точки и размеры (реальные) экрана, что позволит искажениям стать ещё менее заметными.
Мне мой вариант намного больше нравится. Во-первых квадрат остаётся квадратом (я специально водил камерой по бежевому квадрату). А во-вторых объекты в центре экрана имеют такой же размер, как и по краям. В случае ванильные проекции объекты по углам намного крупнее, чем в центре. Это странно - по идее наоборот центр наиболее важен.
=

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

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

Каждый маленький кусочек любого действия распространяется как лавина, порождая кучу ненужных действий в других местах, что никак не получается контролировать.
Пост отредактировал Anonymous
Anonymous No.98254
15748574654260.webp (57 KB, 1208x700)
15748574656571.webp (54 KB, 1208x700)
>>98253
Вот отдельно скриншот одного и того же угла для сравнения. Центральная область раза в два больше.
С другой стороны от такой коррекции меня сильно укачивает. В общем, эта штука должна быть настраиваемая и отключаемая. Коррекцию вполне можно включить в половину силы. Или в треть.
Впрочем, при угле обзора в неадекватные 150 градусов в любом случае будет укачивать, наверное.
Anonymous No.98257
>>98249
>В блендере же нельзя просто взять и отсечь, тут ад с полигонами.
Да не поверю, это чуть ли не базовый инструмент же. В 3dsmax-е, по крайне мере.


Тебе кстати нужен zbrush, если ты хочешь глину.
>для моделирования персонажей/животных, деревьев и камней, но никак не зданий
Вот он об этом, правда. В нём очень круто делать животных, головы и лица и другие мягкие формы. Но для роботов и зданий zbrush не подходит.

Вот первый попавшийся видос: https://www.youtube.com/watch?v=_8lY9HaflVQ
Не обещаю что он хороший - я лишь отдельные кадры посмотрел.

Хотя вот соврал, роботов тоже делают: https://www.youtube.com/watch?v=HVZMpVCIb04
Пост отредактировал Anonymous
Anonymous No.98279
15748715903850.png (410 KB, 892x526)
И правда, зачем делать свой велосипед, когда надо вознести в привычку форкать чужие проекты или писать под них плагины, особенно, когда есть хорошая поддержка. Единственная проблема при форке — лицензия, но она не очень страшная.
Я джвадцать минут делал лесенку, сджоинил её со зданием, а оказалось, что не туда. Попробвал вернуть, а истории не хватило. Поставил в 300 шагов буфер, а максимум 256. И почему?
В общем, делаю лесенку заново. Тут можно было бы изучить скрипты и скриптом её построить (хорошо, что у них питон, а не луа), но это, может быть, потом.
Что насчёт глины/металла, то я видел, как люди в кадах делают интересные штучки. Резьбы, шестерёнки за пару кликов, икосаэдр из треугольничков собирают, интрузят отверстия в виде текста и всё это с точности до у.е., мм., например. Вот такое мне нравится. Можно найти написать плагин, который упростит моделинг в этом плане.
Кстати, а могут ли поддерживаться в блендере кривые без форкинга? Ненавижу, когда в вектороной 3D-графике не поддерижваются кривые. Кривые безье, плоскости Безье, шарики всякие там. Это касается и опенгла, из-за этого он мне не нравится хотя, его достаточно выбросить на помойку уже потому что он интерфейс для рудиментарных аппаратных алгоритмов консоли, видеокарты, а не сам алгоритм. Незнаю, может с кривыми есть большие проблемы, я в этом не разбираюсь. Как можно жить без кривых? Я писал простенький рейтрейсер для сфер, на хабре есть алгоритмы, неужели будут сложности с кривыми плоскостями безье?

>>98253
>У тебя заранее массив размером в 64х64х64, где нулевые или ненулевые указатели, или у тебя считается своего рода хеш от координат?
Нет, я храню в одной структуре игреки и указатели на указатели с зетами, а там указатели с иксами. Не помню, почему не додумался до хеш-таблицы, вроде бы неплохая идея и памяти много не займёт.
Anonymous No.98320
>>98279
> в одной структуре игреки и указатели на указатели с зетами, а там указатели с иксами.
Поставь зеты с краю (в начало, скорее всего). Человек плоский, смотрит вбок и двигается в бок в большинстве случаев - z между x и y кощунственна.

>почему не додумался до хеш-таблицы
Может быть потому что в хеш-таблице нельзя найти соседние клетки. А в том же дереве можно довольно неочевидным образом получить все элементы в диапазоне x от 11 до 37, грубо говоря. Оно ещё и балансироваться может, так чтобы в каждой ячейке было не больше 20 элементов - если плотность элементов сильно неоднородна.
Пост отредактировал Anonymous
Anonymous No.98332
>>98320
У меня y это низ-верх, так что сначала происходит поиск по меньшему кол-ву значений.
Никогда не понимал тех, кто координатой Z определяет высоту. Ведь когда мы смотрим на график XOY, мы думаем "ого, как высоко тут функция поднялась", а потом они добавляют координату Z и говорят мол это высота, и мы что, всё это время в пол смотрели?
Anonymous No.98333
>>98332
>всё это время в пол смотрели?
Да. Перед тобой на столе лежит листок бумаги и на нём обозначены оси xy; z получается максимально интуитивным образом, как векторное произведения xy.
Anonymous No.98352
>>98333
А разве не на доску мы смотрим, когда на график? А листок это просто минидоска, которая лежит на столе.
Кроме того, на y часто обозначают высоты. Например, высота траектории летящего мячика. Да и разве обычно не ассоциируется именно z с глубиной, когда y с высотой?
Anonymous No.98361
Интересно, а пропустят ли встиме очень жестокую игру, где присутствует изнасилование, инвалидизм, жесть и всё такое, при условии что от игрока требуется сопротивляться этому? В стиме есть много всяких жесть-игр, где наоборот и их пропустили.
У меня прост появилась идейка для сюжета эдвечур-игры. В 2025-м году какой-нибудь новоБерия или кто там был самым главным насильником в СССР? смотрит на экран с ассистентом, там высвечиваются фотки потенциальных жертв (женщины, девушки и девочки), они выбирают их и в соседнем окошке высвечивается 3D-модель, нынешнее местоположение в городе, другие данные досье и главгад останавливается на понравившейся персоне. Далее идёт сценка, где она идёт на работу/со школы/в магаз, приезжает джип и её увозят. На базе ей отрезают руки и ноги, бинтуют культи, а главгад не дожидаясь заживания насилует её (предварительно подготовленную, помытую, украшенную). Она ему не очень понравилась и её отвозят в склад, где где-то 10 таких же девушек лежат в кластере из коек в стене.
Те уже свыклись и некоторые разговаривают друг с другом о том, о сём, замечают факт, что новенькую подвезли, наша ГГ ревущая в сумасшедствии и агонии после изнасилования, её положили в её новый дом. Но она необычная иначе бы игра была скучная и геймплея не было бы, она выиграла в генетическую лотерею, так что стресс дал ей силы, чтобы сбежать.
Управлять придётся забинтованными культями голой девкой, первый квест — как-нибудь отрезать себе волосы (она длинноволосая) о подкультьные средства, чтобы не мешались. Тем временем старые жертвы отговаривают её, говорят, чтобы вернулась (лол, как она залезет обратно?), ей только хуже будет и она привыкнет. Обычное рабское быдло, которое легко теряет волю. Далее ей надо будет выбраться из базы главгада, попутно убивая или убегая от охранников и кумов, решать логические загадки и не попасться на камеры и роботов с ИИ. Так как её положили голой, она будет ползать голой, причём по мере прохождения, от царапин и ссадин её кожа будет становиться всё хуже и хуже, будет больше и больше ран и грязи. Но пока она не найдёт чей-то бионический протез и не подсоеденит к себе, тогда у неё и ноги, и руки появятся и она даже одеться сможет, но контакт всё-равно небольшой.
В конце будет самое сложное задание — угнать чей-нибудь автомобиль и уехать в лес. После всего этого показывается катсцена, где её семья — старик, родители и маленький брат сидят в однушке, волнуются, а к ним приходит полиция:
— Открывайте, у нас ордер на обыск
открыли
— Мы имеем подозрения, что вы производите или храните наркотики.
— Что? Мы ничего такого не делаем.
— Ага, а это что? полицейский достаёт из кармана зип-пакетик с белым порошком и показывает перед лицом отца семейства Пакуйте всю семью
Родители хватают своего маленького сыночка и перебрасывают через полицейских на нижний полуэтаж и кричат "Беги! Беги!", что он и выполняет (неглупый мальчик), но за ним побежали 2 полицейских.
Следующая сцена это просто показывают город и подозрительно грязное здание немного снизу.
От действий ГГ во время прохождения игры зависит, в этой сцене будет услышано 3 выстрела или 4.
Anonymous No.98376
>>98361
Хороший сюжет.
Anonymous No.98383
15749440579910.png (88 KB, 1114x815)
15749440581821.png (611 KB, 1049x700)
В Индустриворкс делаю новую механику ачивок. Пока сделал иконки, но в некоторых случаях неудачно — ракурс не тот и предмет отображения не виден. Я собираюсь ввести виджет, отображающий рецепт в тексте. Таким образом, если буду добавлять книги, то можно будет и туда записывать рецепты или игрок находить книги с неизвестными ранее рецептами и добавлять в какую-нибудь свою книгу рецептов.
А в своей другой игре мучаюсь. В прошлый раз я неправильно выразился насчёт блендера. Он оперирует вертексами, еджами и полигонами, но почему не телесными телами? Ведь в большинстве случаев модельки объёмны и телесны. Мне кажется, что гораздо легче было бы именно такими мешами оперировать, а не пересекать полигоны вертексами и удалять перекосившиеся эджи. Я просто ножичком вырезал проём для двери и теперь стена имеет кучу ненужных полигонов. Я пытался сделать dissolve над вложенными полигонами в стене, но почему-то не получается. В любом случае, лестницы тоже имеют боковые полигоны и в интерактивном режиме я не могу к ним подлезть. Может есть какой-то инструмент, который сделает всё хорошо с полигонами, но я незнаю его названия. Нашёл limited dissolve, но он не решил проблему. Неужели мне снова придётся делать новую модель?
Некоторые ещё называют других дураками, за то что они не на движке делают игры, а кодя. Парадоксально, конечно, что сложные игры на си с опенглом делать легче, чем простые на годоте/юнити. По крайней мере мне так. Сложно соединяться с разумами иных людей.
Anonymous No.98412
15749972523070.png (6 KB, 243x196)
Компилируется по 60 секунд после изменения любой строчки. Отвратительно.
Это поправимо, но мне очень не нравится идея того, что мне нужно разбивать файлы на более мелкие потому что компилятор сам этого сделать не может по каким-то причинам. Там условных 40 методов в файле, которые никак друг с другом не связанных и это собирается очень долго. Я делаю два файла в каждом из которых по 20 методов и это начинает компилироваться быстрее. Оно не может само понять, что код других методов не изменился и их не нужно заново собирать? Брр. Прикручивать постобработку что ли, которая каждый метод вынесет в отдельный файл.

>>98383
>Сложно соединяться с разумами иных людей.
Да, да и ещё раз да, аноньчик. Как я это понимаю.
С другой стороны если хочешь работать с командой, то есть смысл один раз "соединиться" и потом вы можете вместе работать в одном и том же пространстве какого-то определённого движка или идеи.

Не понял про юнити/си и простые/сложные игры, правда. Там вроде бы наоборот, в случае простой игры сделать на юнити проще, чем на си (потому что все трудности в такой игре заключаются в загрузке моделей, кодинге эффектов и прочего, задачу чего как раз юнити и решает) - а в случае сложной игры сделать на юнити сложнее, чем на си, потому что трудности вызванные ограничениями юнити становятся тяжелее, чем те трудности которые связаны с использованием си, про загрузку моделек и прочее.
Anonymous No.98418
>>98412
>последний абзац
Да, я так и написал

>компиляция
Что у тебя там так долго компилируется и на какой машине?
У меня сборка Индустриворкс занимает 21 секунду с полной перекомпиляцией.
Anonymous No.98431
15750230096370.png (11 KB, 694x300)
>>98418
>Что у тебя там так долго компилируется
Подозреваю, что лямбда-функции. Время компиляции резко увеличилось, когда я добавил их кое-где вместо затычки.
Я использую их не по назначению.
Например, у меня внутри одной функции много разных действий с локальными переменными. Некоторые действия однообразные - я не хочу дублировать код, но и локальные переменные за пределами функции не имеют никакого смысла.
То есть есть четыре очевидных мне варианта:
1 - Сделать локальную лямбда-функцию с захватом по ссылке. Очень хреновый смысл кода, но максимальная выразительность и ёмкость по соотношению количества действий (кода) и строчек кода.
2 - Перенести локальные переменные "наружу" функции, и сделать несколько функций. Минус в том, что все объявления будут очень далеко от того места, где они используются. Ну и то что эта память висит, когда переменные не используются.
3 - Сделать функцию снаружи и передавать ей громадный список аргументов. Это было бы нормально, если функцию заинлайнить - но выразительность посредственная, когда там помимо двух координат будет ещё 5 переменных, которые неявно присутствуют в списке захвата лямбды.
4 - Сделать локальную структуру с методами внутри себя и все локальные переменные перенести в эту структуру, вызывать методы.

Я не представляю по каким причинам нет синтаксиса локальный функций (как закомментированно на скриншоте, например), которые эквивалентны лямбда-функции с захватом по ссылке, но при этом внутри это не лямбда функция - а простой синтаксический сахар, который лишь вместо меня делает ctrl+c/ctrl+v.
А define не во всех случаях справляется - и в нём код не подсвечивает. Вот в примере с картинке я бы в самом деле поставил define, но только потому что там одна строчка.
Anonymous No.98435
15750239255510.png (67 KB, 1037x516)
>>98431
Да, мне тоже не нравится, что в дефайне не подсвечивается синтаксис. Вот если будет готов Лайси, то там дефайнами определяется почти всё и отсутствие подсветки синтаксиса в дефайне было бы кощунством.

Но в своём коде я использую дефайны, хотя там можно было и функции написать, но код старый, а главное — работающий. У меня из-за дефайнов так однажды кланг взбесился и компилировал отлично от gcc. Тот баг я ещё не зарепортил в кланг.
Anonymous No.98546
Кажется я придумал как сделать порталы так, чтобы игроки не мучались и генерация мира не была слишком богатой по ресурсам.
Для начала, скажу, что для создания портала придётся открыть одно из высших заклинаний, заклинание Portal, которое стоит 5000 ML и для открытия возможности открытия придётся поглотить очень много ресурсов, но, может быть, не живых.
Игрок берёт заклинание и пропитывает им некоторую полость, где и будет создан портал. Из полости постепенно улетучивается Портал и игроку надо спешить к следующей полости (таким образом, чем дальше — тем дороже). Для экономии MP придётся построить железную дорогу и на ней гнать, а для экономии ресурсов придётся не строить железную дорогу, а наторговать побольше MP на самом деле экономить что-то не придётся, так как 5000 ML дофига развития, так что, может быть, это будет низкоуровнеове заклинания. Но что же тогда высокоуровневое?. И нельзя, чтобы 2 игрока с двух сторон это делали это тупость, ведь можно же с помощью механизма. Короче. это не подходил в качестве высокоуровневого заклинания. Тем временем, посерединке должен находиться Обратный Выгибатель, потребляющий электричество. После создания, порталы стабильные и даже электричества не требуют. Таким образом, порталы лекго могут быть сгенерированы и существовать при генерации мира. Но это только один тип портала.
Второй тип портала уже не требует Обратного Выгибателя, но и переносить он способен только флюиды, лучи (энергию), и взрывную волну. На этом эффекте может быть основоно величайшее оружие, которое может быть использовано против последних боссов.
Есть ещё вариант телепортера, но я не уверен, а нужен ли он. Можно сделать так, чтобы он тратил электричество, но открытия заклинания Portal не требовал. Таким образом можно сэкономить на ЖД, потратившись на электричество.

Тем временем я делаю лого для индустриворкса, чтобы популяризовать его эффективнее. Надеюсь, меня не забанят, если буква t будет похожа на католический крест?
Anonymous No.98637
15752135557310.png (21 KB, 889x749)
Мда, опенгл это действительно фу.
Мне нужно сделать виджет-бокс, ограниченный в рамку, чтобы его элементы не вылазили за пределы. И через слайдеры будет проходить смещение.
Попробовал через glViewport, но максимум, что у меня получается это пикрилейтед.
Я смотрел туториалы по рендерингу в текстуру, но там тоже всё не понятно, какие-то шейдеры создавать предлагают, в итоге у меня на одной функции просто сегфолт произошёл.
Возвращаюсь обратно к glViewport, ща буду с glOrtho шаманить.
Anonymous No.98638
>>98637
По идее ты просто делаешь "виджет" с размерами от 0 до 1 (всё содержимое должно вручную предварительно масштабироваться и сдвигаться, чтобы влезать в 0..1 - opengl никаким очевидным образом это делать не умеет (только что glClipPlane есть для плоскостей отсечения, который тут не нужен)) и хоть через glScalef+glTranslatef размещаешь его в нужном месте с нужным размером. Никаких подводных камней.

Чем текст выводишь? Неужто glRasterPos? Вот тогда подводный камень появляется.
Anonymous No.98648
15752195508880.png (43 KB, 931x722)
>>98638
Сделал костыль с помощью glScalef (хотя я успел сам додуматься).

>glRasterPos
Я таких функций и незнаю, не учил опенгл. Для вывода текста я просто имею массив с сырыми данными каждого символа и вручную составляю из них данные для строки, которые уже загружаю в OpenGL-текстуру.



ОпенГЛ пора выбрасывать на помойку. Уже давно первенство именно алгоритма над машиной. SDK программное, а не аппаратное, а LLVM компилирует во всё (ещё и SPIR есть в вулкане, о котором ты, вроде бы, говорило)
Надо будет посмотреть vulkan, когда читал туториал по выводу треугольника, сложилось впечатление, что отрисовка выполняется исключительно шейдерами, что меня радует, хоть я в этом ничего и не понимаю.
Что там так себе, так это долгая настройка хардвара. Если есть какой-нибудь utility toolkit для вулкана, то было бы хорошо, если там есть что-то типа функций-конфигураторов, которые сами всё сделает под определённый нужды.
Но потенциальный рейтрейсер/растеризатор на Лайси с нативным алгоритмическим параллелизмом вуглядит лучше
Anonymous No.98649
>>98648
>которые уже загружаю в OpenGL-текстуру.
Всё верно, тогда всё у тебя в руках и никаких подводных с виджетом. Про glRasterPos забудь как страшный сон - у тебя просто текст выглядел напоминающий текст выводимый через растры.

>ОпенГЛ пора выбрасывать на помойку.
В вулкане же всё то же самое вроде бы, только мелочей которые нужно сделать и указать вручную ещё больше.
Не знаю что ты имеешь ввиду под "отрисовка выполняется исключительно шейдерами", но в opengl начиная с честной (без режима совместимости) третьей версии без шейдера нельзя ничего нарисовать.
Anonymous No.98666
>>96153 (OP)
>C или C++

На голом Си можно полноценно писать игры? Знаю базовый си и питон(неплохо знаю старндартные батарейки) - этого может хватить на мморпг песочницу-рогалик 2D? И посоветуйте инструменты, в какую сторону копать для реализации такой задачи.

Нет особого желания копаться в 1.500 листной спецификации плюсов
Anonymous No.98669
Начинаю прогрызаться в шейдеры и уже понимаю, какое же говно (извините) они в имплементации опенгла. Какие-то рудименты на рудиментах, версии, андефайнед бехавиор в зависимости от вендора, я еле скомпилировал GLSL, хотел попробовать уж сразу SPIR-V, чтобы не мучаться с сорсами, а они аж с четвёртой версии поддерживаются, а у меня на компе максимум третья. И получаю знания о шейдерах из кусков статей по интернету, ничего не понятно. Фрагментный шейдер хоть работает без вершинного?
Вот мой шейдер:
#version 130

precision mediump float;

out vec4 color;
void main() {
color = vec4(1.0,0.0,0.0,1.0);
}

Он компилируется и запускается, но не работает. Я бы тоже не работал, если бы увидел этот код. Куда мне color пихать, лол? Что color вообще такое?
Но мне всё-равно придётся изучить шейдеры, не только для Индустриворкс, но и для собственного развития. А для индустриворкс я уже подметил, что шейдеры должны быть уметь в файле ресурсов загружаться и исполняться опционально. Не работает шейдер — ок, будешь сырые вертексы потреблять, работает и компилируется GLSL или SPIR-V, в зависимости от этого будет разный функционал. Я собираюсь использовать GLSL для поддержки OpenGL 3.0 или чего-то подобного, но моды могут использовать и скомпилированные.
Бесплатный сыр в мышеловке, а бесплатное говно везде. Это относится к большинству СПО про проприетарное и заикаться не буду, это уже не совсем софт. В том числе и линукс с его POSIX и сложностью в разграничении прав процессам. Или многочисленные графические программы, которые косят под винду. ГУИ, запускающийся по таймингу. Я по вашему в игру играю, что собираюсь в определённый пиксель в определённый момент времени попасть? Неконфигурируемые конфиги, куча всего. Приходится всё самому создавать. Немногочисленные программы хороши, и большинство из них — cli или библиотеки. 2 графические хорошие программы, которые мне вспоминаются это mpv и Blender (несмотря на большой порог вхождения в него).
Но я не виню разработчиков, наверное, сложно смотреть в будущее и, при этом, делать на будущее.
Ну ладно. Что я хочу попробовать сделать с помощью шейдеров, так это:
0. Туман вдалеке.
1. Желейные анимации кубиков для некоторых мобов.
2. Покачивание травы.
3. Что-нибудь с солнечным светом.
4. Можно попробовать отражение воды.
Щас окажется, что всё это время я зря тратил его же пересылая вертексы через glvertexpointer и vbo и надо было изначально шейдеры учить.
Anonymous No.98676
>>98666
>На голом Си можно полноценно писать игры?
Ты не поверишь. Яркий и известный пример - Doom, который самый первый. Си + asm.

В одиночку не осилишь.
Anonymous No.98677
>>98669
>out vec4 color;
Вот эта фигня из glsl поздних версий вроде бы.
>#version 130
А вот эта фигня указывает на очень раннюю версию. По идее он ошибку должен выдать при создании.
Тут нужно было написать [gl_FragColor = vec4(1.0,0.0,0.0,1.0)], если у тебя 130. И стереть строчку с объявлением color. И вторую строчку я бы тоже удалил - зачем она? Это же цвет, плевать на точность. И не уверен, что она поддерживается в 130.
Или поставь [#version 330 compatibility] - будет работать как и старые встроенные юниформы по типу gl_ProjectionMatrix/gl_FragColor, так и новые фичи по типу [layout(location = 0) in ...]
>Фрагментный шейдер хоть работает без вершинного?
Работает до третьих версий или в режиме совместимости.
>зря тратил его же пересылая вертексы через glvertexpointer и vbo
Это разные области же и обе нужны - vbo голый инструмент, а шейдеры уже содержат элемент творчества, если хочется облака рисовать, например.

>>98666
>На голом Си можно полноценно писать игры?
Да. Но будет сложно найти либы и может быть не очень с поддержкой новых апи. Не уверен что у новых версий directx есть нормальный апи для чистого си, например.
Пост отредактировал Anonymous
Anonymous No.98694
>>98666
Ты не поверишь. Яркий, но неизвестный пирмер — Industriworks, который один из последних клонов Майнкрафта. Си + Python для генерации ресурсов + один небольшой файл C++ в качестве обёртки для стим-библиотеки.

В одиночку осилишь. Но, думаю, не стоит идти учить опенгл, лучше найди какой-нибудь графический движок типа Ogre3D (Ogre2D), irrlicht или ещё какой. Хотя, если у тебя будет
>рогалик 2D
То можешь и опенглом попробовать.
Что насчёт сетевой состоавляющей, то я ничего не знаю. Для индустриворкс я планирую использовать просто сокеты, только надо разные обрётки под Линукс и Виндовс сделать, ты тоже можешь так сделать. На питоновском модуле socks можешь потренироваться.
А если хочешь упростить себе программирование, то пиши питоне, только он более жрущ, так что можешь попробовать cython (python с си-фичами), хотя про него я не могу быть уверен. Ещё в numpy можешь покопаться, как быстро вычислять. Или даже самый бекенд сервера писать на си, а остальное на питоне. Си-библиотеки очень легко запускаются с питона.
Anonymous No.98696
15752864590560.jpg (237 KB, 768x512)
Нравятся такие фотографии, потому что они очень вдохновляющие.

>>98694
>В одиночку осилишь.
Опрометчивое заявление.
Он спросил про "мморпг песочницу-рогалик 2D", прошу заметить. Ни один язык или движок не позволят ему сделать что-то внятное за внятное время в таком жанре. Ну, то есть это возможно и никакого явного запрета нет, но я не верю в такие незначительные вероятности.

>>98666
>Нет особого желания копаться в 1500 листной спецификации плюсов
В них кстати не обязательно копаться, просто пролистай и возьми что понравится. И содержание стандартной библиотеки пролистай. Что-то точно понравится. А в остальном просто пиши си-код в с++ компиляторе - кучу нервов и времени себе сохранишь, чем если будешь пытаться использовать неприкрытый си и писать врапперы для крестовых библиотек.
Anonymous No.98741
Выпустил v0.2.2 Индустриворкс.
https://steamcommunity.com/games/1143340/announcements/detail/1717490355306147969

Теперь буду делать v0.2.3. В ней ожидаются:
0. Деревья на мапе.
1. Сеттлменты гоблинов.
2. Мобский ИИ.
3. Атака мобов.
Anonymous No.98744
15753888736080.png (17 KB, 630x181)
Ещё заказал у себя новый логотип. Хотел в картинку, которую в стиме в магазине в списке игр показывают, вставить название и справа гоблина, а оказалось, что название моей игры слишком длинное! Просто не влезало так, чтобы оставалось читаемым. И в 2 строки не разделить, потому что будет не красиво. Пришлось в менее видимую картинку гоблина вставлять.
Anonymous No.98759
15754016192500.png (303 KB, 722x508)
15754016192991.png (343 KB, 761x550)
15754016193372.png (294 KB, 698x502)
15754016193693.png (276 KB, 653x496)
сукп)))0))((((( Какая же блендер бешеная тварь! Его надо годами руками ковырять, чтобы он научился отличать ТЕЛО от ПУСТОТЫ. И ведь в его терминах есть что-то типа manifold, то есть замкнутое тело, которыми и являются реальные, настоящие с объёмом.
Знаете, почему детям нравятся растры, воксели и майнкрафт? Потому что они, сука, простые! У них дискретные координаты и ясные уму характеристики. Посадите ребёнка за inkscape или blender вычислять коллизии, что он вам скажет? Если бы они увидели рогалик с дискретными коордами (как DF), но в 3D, то обписялись бы от радости.
Почему я вообще начал делать minecraft-like игру с флоатскими передвижениями? Надо было с дискретными блочными значениями, был бы рогалик, но уже позно, концепт игры подготовлен, а бойны динамичны.
Я недавно понял, что фигню делал, джоиня меши, надо же было интерсектить))))0) А оно вон как T_T
Это надо кардинально менять, никакие аддоны не помогут. Надо брать сорсы блендера и превращать его в нормальный 3D-редактор, но для этого придётся и сами сорсы изучать. У него ещё координаты постоянно съезжают, небось floatы использует.
Не, ну они серьёзно? Они мне предлагают дома для новой игры моделировать в гокселе?
Anonymous No.98806
15754739690850.png (376 KB, 1194x605)
Ахаха, ладно, беру свои слова назад. Блендер соврешенно не подходит для создания 3D-моделей, если это не какие-нибудь животные/гуманоиды с цветными (не тестурированными) полигонами.
Однажды я посмотрел видеоурок по блендеру создание персонажа, попробовал и подумал, что блендер действительно достоин, у меня всё получалось и это было легко и доступно. Как же я ошибался.
Придётся велосипеды писать. В таком случае, можно сразу и от попыток на годоте что-либо делать. Не буду же разбираться, как там вертексы генерить.
Anonymous No.98817
Я придумал сюжет для ещё одной своей возможно будущей игры.
Взять форкнуть индустриворкс и сделать из него слешер с сюжетом и катсценами, без строительства и разрушения нет это не клон minecraft dungeons. Поселение ненормальных гоблинов, которые живут под землёй, а их соседи дварфы или гномы или кобольды (не определился пока с сеттингом в Индустриворкс) удивляются гоблинам в пещерах. Сюжет заключается в том, что какие-то стычки с игроком, а наш ГГ-гоблин обладает удивительной способностью к быстрой регенерации и сильному интеллекту и он отправляется побеждать игрока, но, как оказалось, игрок, внезапно, возрождается и возвращается на новое место, где устраивает мстительный геноцид. И тут подключаются соседние поселения "Тупой гоблин нажил нам общего врага, помогай расхлёбывать теперь", чтобы схватить игрока и построить для него тюрму, где его будет всё время хилять, чтобы он не возродился. В конце игрок просто станет обездвижен (вышел из игры). Можно ещё в сюжетце (может DLC) сделать типа охранники видели как игрок двигался и он поменял дислокацию, но снова перестал двигаться (по ту сторону монитора смотрел на свои миры, зашёл — вспомнил — удалил), но от этого создаётся новый сюжет.
Должны быть динамические сцены, например, на игроковых железных дорогах по вагонам-вагонеткам. Или лавопад по пластинам бегает-прыгает по таймингу. ещё неплохо бы добавить разветвления, которые позволят избежать скриптовой смерти, например.
Боёвка — ближний бой, но иногда дальний. Ограничение на кол-во боезапасов, либо стрельба тратит MP (деньги). Вид от третьего лица, с комбо, навыками, а стрельба показывает траекторию полёта снаряда.

Сегодня игр я почти не делал и чувствую себя плохо, кажется, у меня развивается игрозависимость.
Вообще, в планах сейчас у меня 6-8 игр и четыре из них немного разработаны (про сферу-захватчика, хоррор-комедию и платформер про паучка), наибольшего развития Индустриворкс достиг, он, хотя бы, выпущен.
Anonymous No.98888
15755757444780.png (658 KB, 1491x842)
Чужие среди своих.
Anonymous No.98906
15756254003380.png (50 KB, 603x804)
>>98888
>фон
Рендерить каждый чанк в небольшую текстуру и выводить лишь текстуру. Перерисовывать не каждый кадр, а только когда игрок выходит из некоторого эллипсоида, за пределами которого угол зрения изменяется достаточно, чтобы перерисовывать с нового ракурса. Угол можно регулировать, выбирая разумное качество дальнего фона.
Чем дальше чанк - тем реже его нужно перерисовывать и тем меньше размер текстуры что позволит поднять дальность прорисовки до громадных значений. При этом можно рисовать что угодно обычном способом и не придумывать непонятные спрайты для деревьев (как будет выглядеть спрайт дерева, если из дерева выкопать 1 блок? А если обрезать половину листвы? А если собрать непонятную фигуру из разноцветных блоков?).
Anonymous No.98922
>>98906
Да, я тоже думал о таком варианте для сверхдальней прорисовки. А для просто дальней я собираюсь семплировать прямоугольники блоков до одноцветных, чтобы каждый раз не выбирать текстуру или чанк, а сразу вертексы+колор зарисовать.
А что до этих деревьев, так они показываются там, где чанки ещё не сгенерированы, как и та зелёная карта высот.
Anonymous No.98923
>>98922
>А для просто дальней я собираюсь семплировать прямоугольники блоков до одноцветных
Нет смысла. Номер текстуры и текстурные координаты занимают столько же места, сколько и цвет. Выборки из текстуры почти не займут времени по сравнению с преобразованием вершин, а запихнуть текстуры в один текстурный атлас тебе в любом случае придётся, если ты хочешь хоть чуть-чуть позаботиться о быстродействии рендера. У тебя твоя штука будет тормозить из-за громадного количества вершин, а не из-за текстур вместо цветов.
Anonymous No.98932
15756540074340.jpg (77 KB, 764x1080)
Блядь.
Сегодня решил поделать хоть что-нибудь. Решил взяться делать игру в tic80. Погромирование не проблема, а вот с рисованием и музыкой совсем беда. Вот бы была программка, которая генерировала бы спайты и музыку.
Anonymous No.98933
>>98923
У меня уменьшиться кол-во вершин, так как те же 4 рядом идущих квадрата станут одним, а в случае текстурированных блоков я так не смогу сделать, ведь у меня текстуры могут быть рандомизированы или перевёрнуты на соседних блоках.
Ещё можно некоторые участки ссемплировать больше чем на один блок, то есть изменение высоты на 2 блока вместо одного не будет выглядеть так, будет просто один полигон.
Anonymous No.98950
15757346562020.webm (16421 KB, 1280x720, 00:00:37)
Сел за Идустриворкс гоблинские поселения делать, а там генерация замакаронена.
Ну и пошёл я игру про сферку делать. Добавил некоторый функционал.
Anonymous No.98960
>>98932
Раз погромирование не проблема, то запили.
Anonymous No.98996
15758074423750.png (8 KB, 800x400)
Джва часа делал я так, чтоб вепрь убегал от перса, ничего не получалось и я решил привести систему координат в нормальное состояние.
Оказалось, что по сторонам (x,y,z) у меня всё нормально. Истинная декартова система координат, правая, но где под Y подразумевается вверх. Что было с углами, так всё плохо. У меня есть угловые координаты ax и ay. ax это вокруг y, а ay это просто от плоскости вверх. Ещё недавно понадобилась az, когда делал ушки оленю, но больше случае история не упоминает. Исправил, немного подлатал функции.
Потом ещё долго мучался с передвижением персонажа, а оказалось, что я писал в рудиментарную часть кода.
Надеюсь, теперь перестану подгонять алгоритмы под результат вместо нормальной разработки.
Anonymous No.99012
15758128107290.png (7 KB, 912x587)
Так мне надо было ещё и полигоны рисовать, чтоб шейдер активировался! А я просто колор клеарил. Ещё и имя мне подсунули тогда glFragColor, а потом gl_fragColor, сейчас посмотрел в уроки NeHe и там показано gl_FragColor что и написал анон выше и синтаксисом засветился, теперь работает. Ну всё, теперь можно цветы шевелить и солнечную + лунню тень малевать. Только надо научиться читать вертексы и переписывать их и время takt передавать.
#version 120

void main() {
gl_FragColor = vec4(1.0,0.4,0.3,1.0);
}
Anonymous No.99062
И почему я раньше не учил шейдеры? Вот, множество Мандельброта вычисляется за долю секунды, когда на питоне я ждал несколько минут, пока отрендерится.
Вот картинка >>99063
Пост отредактировал Anonymous
Anonymous No.99063
15758833286230.png (35 KB, 616x567)
Anonymous No.99126
15759340590870.png (69 KB, 726x568)
15759340591191.webp (428 KB, 4320x3240)
Заголовок спойлера
Всё очень плохо. Хочется выкатить что-нибудь прикольное, чтобы скриншоты радовали глаз (не в плане красоты - красоты не будет, а в плане содержания). Но пока сплошные математические абстракции. А ещё за последние 6 дней (не считая сегодняшнего) я трогал нужный код минут 5-10, по правда говоря. Мне нужен надсмотрщик, лол, можно с кнутом. Вот если бы анон сказал - а ну-ка выкати мне технологию раскачивающийся на ветру травы - то вот тут всё понятно что делать и как делать, дело одного дня. А тут мне нужно найти матрицы для скошенной перспективной проекции (первая картинка: рыжая - нормальная пирамида видимости, сиреневая - скошенная) и внедрить все проверки пересечений сфер-пирамид для такой матрицы и потом внедрить это всё в функции отрисовки, чтобы лишние объекты за окноми не рисовались - всё по отдельности просто, да и вместе не очень сложно - но только пока таких оптимизаций меньше десяти и пока они не взаимодействуют друг с другом. Интересно зачем я этим занимаюсь, если у меня всего 2 полигона на всю сцену в виде пола. Не считая тестовых треугольников в воздухе.

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

Ещё чуть-чуть помучаю свой код отрисовки (перфекционизм не даёт оставить как есть даже на первое время), и потом приступлю к генератору мира, по крайне мере собираюсь.
По идее город не так сложно сгенерировать, если генератор мира сделать послойным. То есть, первый слой генерирует карту дорог и местоположения строений. Второй по заданной форме строения и его назначения (с точки зрения генератора города) генерируется внутренние расположения помещений, лестницы, служебные помещения, шахты лифта, подземную стоянку или ещё что. Третий слой генерирует мебель для помещений по информации о назначении помещения от второго слоя. Четвёртый слой генерирует конкретные объекты мебели. Чашки немного разной формы и всё в таком роде.
На каждой стадии есть какие-то базовые параметры (является ли комната спальней или кухней) и затравка для псевдорандома; слой взаимодействует только с соседними слоями через параметры. По отдельности сделать простенький генератор дорог и строений для города или генератор для форм чашек/стаканов выглядит чем-то выполнимым. Достаточно потратить всего 2 часа на чёртову чашку, и по всему городу у меня будут самые разнообразные кружки и чашки. Или на ручки для дверей. Надо ещё подумать как организовать такое количество генераторов. Но в начале там конечно лишь куб с надписью "чашка" будет, тому что визуал не нужен.


>>99062
Сразу предупрежу - шейдеры плохо дружат со сложными циклами и условиями.
Если у тебя конструкция вида:
//r - принимает значения от 0 до 100000
if (r<1){
.. сложные вычисления освещения с векторными произведениями, нормалями и экпонентами
}else{
.. упрощённое освещение вида col=vec3(0.2,0.2,0.2)
}

То несмотря на то что проверка почти никогда не будет происходить, скорее всего (никто не знает как будет на самом деле) видеокарта всё-равно во всех случаях посчитает как упрощённую формулу, так и усложнённую, и потом подставит нужный вариант, что может катастрофически сказаться на производительности. Рискну предположить, что она реализует условия через функцию Хевисайда тому что ей нужно константное время выполнения каждого местного "потока". В OpenCL то же самое, кстати.
Пост отредактировал Anonymous
Anonymous No.99154
15759995730450.png (787 KB, 1587x907)
Генерация фундамента стен домиков некорректна!

>>99126
Слышал об недружбе ветвлений в шейдерах. Попробую писать их поменьше, может быть.
Вот шейдер, которым я рисовал множество Мандельброта:
#version 120

#define ITERNUM 200

#define WIDTH 1200.0
#define HEIGHT 600.0

#define STARTX -3.0
#define ENDX 1.0
#define STARTY -1.0
#define ENDY 1.0

#define RADIUS 1.0

void main() {
float c_re = gl_FragCoord.x/WIDTH*(ENDX - STARTX) + STARTX;
float c_im = gl_FragCoord.y/HEIGHT*(ENDY - STARTY) + STARTY;

float z_re = 0.0;
float z_im = 0.0;

int i = 0;
for (i = 0; i < ITERNUM; i++) {
float new_z_re = z_re*z_re + -z_im*z_im;
float new_z_im = z_re*z_im*2;
z_re = new_z_re;
z_im = new_z_im;
z_re += c_re;
z_im += c_im;

float a = sqrt(z_re*z_re + z_im*z_im);
if (a > RADIUS) {
break;
}
}

if (i == ITERNUM) {
gl_FragColor = vec4(0.0,0.0,0.0,1.0);
}
else {
if (i < 50) {
gl_FragColor = vec4(0.0,0.0,float(i)/50.0 + 0.1,1.0);
}
else if (i < 100) {
gl_FragColor = vec4(0.0,float(i)/100.0 + 0.1,0.0,1.0);
}
else {
gl_FragColor = vec4(float(i)/ITERNUM + 0.1,0.0,0.0,1.0);
}
}
}

Мне понравилось ускорение в несколько тысяч раз по сравнению с кодом на питоне.
Anonymous No.99156
>>99154
>в несколько тысяч раз по сравнению с кодом на питоне.
Код на си на всех трёх моих ноутбуках в 200 раз быстрее, чем питон. Не 100, не 300, а 200 для более-менее разнообразной программы с разными штуками выразимыми на си. Видеокарта ещё в сотню раз быстрее, чем даже многопоточная процессорная си-программа, в некоторых случаях.

>if (a > RADIUS) break;
Вот это требует тяжёлого условного перехода и не разворачивается через хевисайда.
Точно не обещаю, но если написать что-то вроде:
for (i = 0; i < 10; i++) {
...фигня комплексными числами. (без проверки радиуса).
}
for (i=10; i < ITERNUM; i++) {
...фигня комплексными числами.
if (a > RADIUS) break;
}

То это может заработать быстрее. Идея в том, что первые десять итераций без проверки (выполняющиеся для каждого пикселя в любом случае) рискуют выполнятся быстрее, чем нужно количество итераций с проверкой. Уменьшаешь среднее количество джампов - увеличиваешь среднее количество линейных итераций. Это разумно.

Используй float2. Точнее, vec2, например как-то так: z=vec2(z.x*z.x-z.y*z.y, 2*z.x*z.y). Впрочем, это зависит от мозгов твоего драйвера и может не дать никакого прироста производительности.

> float a = sqrt(z_re*z_re + z_im*z_im);
> if (a > RADIUS)
Вот это капец, за такое просто руки отрывают. Ты хотя бы примерно осознаёшь насколько тяжёлая операция извлечения корня?
Напиши: float a = (z_re*z_re + z_im*z_im); if (a > RADIUS*RADIUS) break; где квадрат на всякий случай лучше тоже в константу засунуть (компиляторы для видеокарты не отличаются особым умом). Зачем ты заводишь float a, если значение используется всего один раз?
А если тебе нужен радиус или расстояние, используй glsl-функции по типу distance, length, normalize.

>Финальная часть шейдера с ракрашиванием.
Если ты заведёшь массив uniform-ов (uniform vec4 col[5];) и засунешь цвета и напишешь gl_FragColor =col[3.4] - то он линейно заинтерполирует col[3] и col[4]. Может быть не только с юниформами работает - точно не скажу.
То есть ты можешь написать float fi=i/50 и потом без всяких условий выбрать нужный цвет одной командой gl_FragColor =col[fi];
Пост отредактировал Anonymous
Anonymous No.99157
>>98960
Как я без текстур игру делать буду? Надо чтобы атмосферно и красиво было с щепоткой pixel a e s t h e i c s
Anonymous No.99163
15760489326950.png (420 KB, 1587x907)
15760489328001.png (19 KB, 1136x569)
Вот так и живут.



>>99156
Переписал шейдер, раньше рендеринг занимал где-то 33000 тактов, а теперь 25000.

#version 120

#define ITERNUM 200

#define WIDTH 1200.0
#define HEIGHT 600.0

#define STARTX -3.0
#define ENDX 1.0
#define STARTY -1.0
#define ENDY 1.0

#define POW2RADIUS 1.0

void main() {
float c_re = gl_FragCoord.x/WIDTH*(ENDX - STARTX) + STARTX;
float c_im = gl_FragCoord.y/HEIGHT*(ENDY - STARTY) + STARTY;

float z_re = 0.0;
float z_im = 0.0;

int i = 0;
for (i = 0; i < ITERNUM; i++) {
float new_z_re = z_re*z_re + -z_im*z_im;
float new_z_im = z_re*z_im*2;
z_re = new_z_re;
z_im = new_z_im;
z_re += c_re;
z_im += c_im;
}

float sum = z_re*z_re + z_im*z_im;
if (sum < POW2RADIUS) {
gl_FragColor = vec4(0.0,0.0,0.0,1.0);
}
else {
gl_FragColor = vec4(0.8,0.0,0.0,1.0);
}
}


Я ещё пробовал заменить части комплексных чисел на vec2, но это оказалось медленнее, чем просто с floatами. Кстати, у меня ещё и неправильное множество Мандельброта было, теперь нормальное показывает.
Anonymous No.99172
Долбанный виндовс! Пытался сегодня выкатить обнову Industriworks, а виндовс-версия решила посегфолтить во время генерации гоблинских домиков! Потом я ещё и обнаружил, что и в обычном случае виндовс-версия работает через раз. Ещё я увидел очень большую утечку памяти. Сейчас-то я её исправил, но новую версию выкатить не могу.
Раньше такие проблемы были из-за неинициализированных переменных. Ох уж этот си с его UB. По-моему, язык программирования не должен содержать UB и исполняться с одинаковым результатом на всех платформах. Это 40 лет назад были сотни доминирующих архитектур с пятибитными байтами, а дисплеи показывали не только 1 и 0, но и Z и, даже, X, а а микросхемы с ОЗУ были одновременно дисководами. Благодаря чему UB и был полезен.
То, что в виндовсе неинициализированный стек ведёт себя не как на линуксе это хорошо, ведь это позволяет исправлять баги. Плохо то, что в виндовсе нет никакого дебаггера. Даже вайновский не показывает названия функций. А в случае с printf оказалось, что это тот самый баг, возникающий из-за оптимизаций и с printf всё работает. А утилита cppcheck не обнаружила никаких неинициализованных переменных. Вечно эти сипипишники вындоуз сипипи предлагают угадывать. То угадывать документацию, то угадывать баги. А сишники предлагают через #ifdef перебрасывать UB через бедро и завязывать в узел, которым потом крепить шестерни к цепям для своего велосипеда. Конечно, есть и исключения, но их не много.
А есть ли в линуксе какой-нибудь тулз, который вытворял бы со стеком и кучей страшные вещи, которые бы приводили к багам при UB? Было бы полезно.
Вообще, может быть, когда-нибудь, мне придётся написать свой ядро ОС, хотя не исключаю, что оно будет основано на линуксе или, по крайней мере, много кода из arch и driver ядра будет использовано и иметь совместимость с моим ядром.
Возможно, предел разработки Индустриворкс подошёл к своему концу. Дальше 2 пути — загнивание или перерождение. Чтобы он загнил, надо ничего не делать, а чтобы переродился, рефакторить. Я слишком долго подгонял алгоритмы к результатам и оставлял явный memory leak, надеясь исправить его в будущем. А код генерации мира до сих пор ужасен, так как я так и не научился генерировать миры. Майнкрафт-подобный мир слишком сложен. Чанки, блоки. Я оперирую на их уровне абстракции, хотя, стоит генерировать на более высшем уровне. Кроме того, ради ввода моддинга, мне всё-равно пришлось бы очень много менять.
Ну так что, переписывать теперь полностью?
Вообще, геймдев это не моё, это промежуток. А эксперимент с Индустриворкс довольно неудачный, особенно с Early Access. Не хочется нарушать общение. lowlevel исполнения обещания это добавить хотя бы 10 хостайл мобов, блоки логических схем кстати, я подумывал их сделать не с помощтю проводов, а мгновенной связью и можно бельты/ЖД или что-то такое. Моддинг не плохо бы, но это если комьюнити наберётся, а сейчас около 10% до добавления моддинга. Ну и мультиплеер. Пора бросать Индустриворкс. Лучше бы я делал игру про сферу, пожирающую миры.
Anonymous No.99173
>>99163
>рендеринг занимал где-то 33000 тактов, а теперь 25000.
Даже если у тебя 1 ггц, то это 33 микросекунды или 1/30000 секунды. Абсолютно нереальное значение.
У меня вот выдаёт пару десятков миллионов такстов первый вариант и в два раза меньше второй.
Anonymous No.99174
>>99173
И правда, я получается, только вызов функций OpenGL замерял, а не рендеринг. У меня на обоих около 20 миллионов тактов, но второй кажется даже немного медленнее.
Anonymous No.99453
15765861171310.png (384 KB, 1024x768)
>Ответ: Учи C или C++,
Поясните в чём разница, и как это отразится на конечном продукте
Спрашивает человек с нулевыми знаниями в программировании, просто на сайте osgameclones.com C++ имеет больше всех клонов ремейков и т.д., что это значит?
Anonymous No.99454
>>99453
Начните с изучения любого языка. В дальнейшем вы сами поймёте, что вам нужно.
Anonymous No.99460
>>99453
C - это C++ без крестов. Кресты - это ссылки, методы, более обширная стандартная библиотека и ещё тысяча и одна мелочь.
Использовать чистый си смысла особого нет. Даже если у тебя код без крестов - можно пользоваться компилятором и средой разработки под кресты, оно имеет почти полную обратную совместимость.
>как это отразится на конечном продукте
Не сможешь использовать по-нормальному половину библиотек (тому что они будут под кресты), общая скорость создания кода замедлится в 1.2-3 раза в зависимости от стиля кода и опыта.
Так или иначе, в процессе изучения с++ ты изучишь почти всё си, а изучив си, тебе будет очень просто потихоньку добавлять элементы из с++ в код - это же почти что один и тот же язык.
Anonymous No.99461
>>99453
Си даст возможность понять как компьютеры устроены, а ассемблер довбьёт эти знания в тебя. Для геймдева это не важно, так что можешь и C++ учить. Вообще, для создания игр можешь и простой с низким порогом вхождения питон учить, но он не подойдёт игр с большой нагрузкой на ЦП, если только не писать дополнительные оптимизированные модули на том же си, си++ или другом компилируемом ЯП. Хотя, если твоя игра будет использовать всякие матричные и векторные операции, то есть модуль для питона numpy. Проблема питона в геймдеве такова, что многим пользователям (виндузятникам особенно) может быть непросто запустить твою игру, также и со стимом. Хотя, CPython, дефолтный интерпретатор питона имеет свободную лицензия, так что проблем с питоном не должно возникнуть, наверное.
Anonymous No.99463
>>99461
>>99460
Спасибо за разъяснения, анон
Anonymous No.99643
Украсил игорку про сверку.

Тем временем, начались зимние скидки в стимсе и это принесло вверх. Можно будет игру на букву N<- взять добавить хейра ака зайца, но летучего, билдинг-режим и хороши бы теневых шейдеров завезти рендер орто дефтбуфера и накладывание как теней и выпустить, пока скидка действует, привлекая больше людей. Главное это ДЕБАГГИНГ и отсутсвие пригрехов в выпуске.
Ex constructione mundi non penis canina est. надеюсь угадал с переводом
соре без видева я не умею кодировать мп4 в вебм быстро, качественно и малоразмерно.
соре и без картинки, постинг ограничен
Anonymous No.99706
Почему в опенгле не работает рендеринг в текстуру?
Понаделают всякого говна и замедляют разработку...
Anonymous No.99707
15770200718800.jpg (87 KB, 1024x1008)
>>99706
Работает.
Код показывай!
Anonymous No.99711
>>99707
ок.
void draw() {
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0,0.0,0.0,1.0);


s64 start = rdtsc();




GLuint FramebufferName;
glGenFramebuffers(1,&FramebufferName);
glBindFramebuffer(GL_FRAMEBUFFER,FramebufferName);

GLuint renderedTexture;
glGenTextures(1,&renderedTexture);

glBindTexture(GL_TEXTURE_2D,renderedTexture);

glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,600,100,0,GL_RGBA,GL_UNSIGNED_BYTE,0);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

GLuint depthrenderbuffer;
glGenRenderbuffers(1, &depthrenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER,depthrenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER,GL_DEPTH_COMPONENT,600,100);
glFramebufferRenderbuffer(GL_FRAMEBUFFER,GL_DEPTH_ATTACHMENT,GL_RENDERBUFFER,depthrenderbuffer);

glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,renderedTexture,0);

GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
glDrawBuffers(1,DrawBuffers);

if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
printf("error\n");
}

glBindFramebuffer(GL_FRAMEBUFFER,FramebufferName);
glViewport(0,0,600,100);



glColor4f(0.0,1.0,1.0,1.0);
glBindTexture(GL_TEXTURE_2D,0);
GLfloat vertex[8];
glVertexPointer(2,GL_FLOAT,0,vertex);

vertex[0] = 0;
vertex[1] = 0;
vertex[2] = 600;
vertex[3] = 0;
vertex[4] = 600;
vertex[5] = 100;
vertex[6] = 0;
vertex[7] = 100;
glDrawArrays(GL_QUADS,0,4);


/*GLuint s_beg = glGetUniformLocation(progid,"beg");
GLuint s_end = glGetUniformLocation(progid,"end");
GLuint s_offset = glGetUniformLocation(progid,"offset");
GLuint s_height = glGetUniformLocation(progid,"height");
glUseProgram(progid);
glUniform4f(s_beg,vertex[0],(vertex[1] + vertex[7])/2,0,0);
glUniform4f(s_end,vertex[2],(vertex[3] + vertex[5])/2,0,0);
glUniform1f(s_offset,(float)(gtakt%20)/20.0*(2*M_PI));
glUniform1f(s_height,vertex[7] - vertex[1]);

s32 num = 0;
glGetProgramiv(progid,GL_INFO_LOG_LENGTH,&num);
char msg[64] = {0};
glGetProgramiv(progid,GL_INFO_LOG_LENGTH,&num);
glGetProgramInfoLog(progid,num,NULL,msg);*/
//printf("%i\n",num);
//printf("%s\n",msg);



glBindFramebuffer(GL_FRAMEBUFFER,0);
glViewport(0,0,WindowWidth,WindowHeight);




//glUseProgram(0);


glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0,0.0,0.0,1.0);

glRotatef(gtakt%50,0,0,1.0);




glColor4f(1.0,1.0,1.0,1.0);
glBindTexture(GL_TEXTURE_2D,renderedTexture);
glVertexPointer(2,GL_FLOAT,0,vertex);
vertex[0] = 0;
vertex[1] = 0;
vertex[2] = 600;
vertex[3] = 0;
vertex[4] = 600;
vertex[5] = 100;
vertex[6] = 0;
vertex[7] = 100;
glDrawArrays(GL_QUADS,0,4);






SDL_GL_SwapWindow(window);

s64 end = rdtsc();
//printf("%li\n",end - start);

usleep(20000);

gtakt++;
}

Тут есть мусорный код типа usleep и rdtsc, но я его не удаляю, а то вдруг какую-то функцию упущу.
Я хотел с помощью шейдера рисовать предмет и решил рендерить в текстуру. Не получилось. Затем я закоментировал код для установки шейдеров и стал рисовать просто белый квадрат. Но оно не работает, не рисует. Ещё в туториале было сказано glFramebufferTexture, но я сделал glFramebufferTexture2D, так как у меня на ПК максимум opengl 3.0 поддерживается.
Anonymous No.99717
>>99711
У меня по какой-то причине другой код для рендеринга в текстуру, но твой тоже работает.
В конце ты на экран рисуешь через glVertexPointer(2,GL_FLOAT,0,vertex)
Если у тебя рендеринг в текстуру, то в каком месте ты указал текстурные координаты для твоей текстуры? Бака ты такая.
>vertex[2] = 600;
После glLoadIdentity на экране рисуется область с координатами по x и по y от -1 до +1. 600 - это 300 твоих экранов - у тебя один пиксель твоей текстуры будет на весь экран.
И твоя текстура у тебя пустая - что оно должно было нарисовать?


Я дописал какие-то необходимые штуки, возможно тебе нужно будет стереть мои glEnableClientState и прочее.
И ещё я через аргументы функции размера окна передавал, просто сотри.
Код фреймбуфера совсем не трогал. Работает, и хрен с ним. Но я вот не использовал функцию glDrawBuffers вовсе, например.
Попробуй так
void draw(int WindowWidth,int WindowHeight) {
static GLuint FramebufferName;
static GLuint renderedTexture;
static GLuint depthrenderbuffer;
static bool bb=false;
if (!bb)
{
bb=true;






glGenFramebuffers(1,&FramebufferName);
glBindFramebuffer(GL_FRAMEBUFFER,FramebufferName);


glGenTextures(1,&renderedTexture);

glBindTexture(GL_TEXTURE_2D,renderedTexture);

glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,600,100,0,GL_RGB,GL_UNSIGNED_BYTE,0);
//Вот тут поставил в обоих местал GL_RGB на всякий случай


glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);

glGenRenderbuffers(1, &depthrenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER,depthrenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER,GL_DEPTH_COMPONENT,600,100);
glFramebufferRenderbuffer(GL_FRAMEBUFFER,GL_DEPTH_ATTACHMENT,GL_RENDERBUFFER,depthrenderbuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,renderedTexture,0);
GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
glDrawBuffers(1,DrawBuffers);

if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
printf("error\n");
}

glBindTexture(GL_TEXTURE_2D,0);
glBindFramebuffer(GL_FRAMEBUFFER,FramebufferName);
glViewport(0,0,600,100);


// ----------------------



glClearColor(0.3,0.4,0.6,1.0);//Поставлю цвет вечернего неба, чтобы можно было отличить от фона
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glColor4f(1.0,0.5,0.0,1.0);
GLfloat vertex[]={0.2,0.2,0.2,0.8,
0.2,0.8,0.8,0.8,

0.45,0.45,0.55,0.55,
0.45,0.55,0.55,0.45,
0.6,0.45,0.65,0.5,
0.6,0.55,0.7,0.45,};
//Нарисую что-то на фреймбуфере.
glLineWidth(4);
glLoadIdentity();

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2,GL_FLOAT,0,vertex);
glDrawArrays(GL_LINES,0,12);
glDisableClientState(GL_VERTEX_ARRAY);



glBindFramebuffer(GL_FRAMEBUFFER,0);


}

// ----------------------
{
glViewport(0,0,WindowWidth,WindowHeight);
glLoadIdentity();
glClearColor(0.1,0.1,0.1,1.0);//Поставлю серый, чтобы было видно, что не чёрный и хоть что-то рисуется
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glOrtho(-WindowWidth*1.0/WindowHeight,WindowWidth*1.0/WindowHeight,-1,1,-1,1);
//Отмасштабирую, чтобы не растягивалось по горизонтали

glScalef(0.3,0.3,0.3);
glRotatef(clock()*0.02,0,0,1.0);


glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
GLfloat vertex[8]={0,0,0,4,4,4,4,0};//Рисуют 4х4 раза вышеизготовленную текстуру
glColor4f(1.0,1.0,1.0,1.0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,renderedTexture);
glVertexPointer(2,GL_FLOAT,0,vertex);
glTexCoordPointer(2,GL_FLOAT,0,vertex);//Текстурные координаты совпадают с реальными координатами
glDrawArrays(GL_QUADS,0,4);

glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glBindTexture(GL_TEXTURE_2D,0);
glDisable(GL_TEXTURE_2D);


}



}


А ещё пробовал смотреть что выдаёт glGetError? Полезная функция, рекомендую.
Пост отредактировал Anonymous
Anonymous No.99720
15770288165240.webm (4112 KB, 1200x600, 00:00:14)
>>99717
Спасибо, теперь работает и я могу рисовать текстуру шейдером.
Про текстурные координаты и правда забыл, а что насчёт -1 и 1, так я делаю glOrtho к пиксельным размерам окна.
Только я так и не понял, что было не так в моём коде, но главное, что твой код работает.
Anonymous No.99737
>>99720
Я не знаю как твой код использовался, от этого могло зависеть, от состояния opengl.
>Только я так и не понял, что было не так в моём коде
Вот без любого из этих фиксов твой код у меня не работал:
1. Начальная секция с glGenFramebuffers выполнялась каждый кадр, и после кадра никаких glDeleteFramebuffers после не следовало - я же через static переменные пришил, так чтобы инициализация выполнилась только в первый кадр. К тому же создавать и удалять текстуру каждый кадр - плохо, операция создания и удаления может быть тяжёлой.
2. Не было glEnableClientState(GL_VERTEX_ARRAY/GL_TEXTURE_COORD_ARRAY), и вызовов glEnable(GL_TEXTURE_2D).
3. Не было текстурных координат, обычные координаты были неадекватные и на текстуру ничего не рисовалось - без этого код сработает, но нельзя будет понять по картинке работает ли он, потому что там чёрный квадрат на чёрном квадрате, а выборка из текстуры производится только в одном пикселе.
Anonymous No.99780
15771878346150.webm (8213 KB, 1586x906, 00:00:15)
Приблизительно так будет сделан ветер.
Я был немного разочарован, когда оказалось, что я не могу с переменным размером данные в шейдер пихать. А может можно как-то данные повертексно давать?
Мне пришлось ограничить числом, из-за чего, если будет больше 256 одинаковых цветков/травы, то те уже перестанут двигаться:
#version 130

uniform float sila;

#define VETER_SIZE 2048
uniform int veter[VETER_SIZE];

void main() {
vec4 outvertex = gl_Vertex;
if (gl_VertexID < VETER_SIZE) {
if (veter[gl_VertexID] == 1) {
outvertex.x += sila;
outvertex.z += sila;
}
}
gl_Position = gl_ModelViewProjectionMatrix*outvertex;

gl_TexCoord[0] = gl_MultiTexCoord0;
}
Anonymous No.99790
>>99780
У тебя в шейдера аж два условия, избегай же условий. Не понял смысл первого, но второе точно стоит заменить на +=sila*veter[gl_vertexID]
>А может можно как-то данные повертексно давать?
Так же, как координату, цвет, нормаль и текстурные координаты? Конечно можно, вон уже сколько разных.

Собственно, glVertexAttrib3f(3,r,g,b) полностью эквивалентно glColor3f(r,g,b), а glVertex3f(..) - glVertexAttrib3f(0, ..), а:
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2,GL_FLOAT,0,vertex);
glDrawArrays(GL_LINES,0,12);
glDisableClientState(GL_VERTEX_ARRAY);

можно заменить на куда более логичное:
glEnableVertexAttribArray(0);
glVertexAttribPointer(0,2,GL_FLOAT,GL_FALSE,0,vertex);
glDrawArrays(GL_LINES,0,12);
glDisableVertexAttribArray(0);

В новых версиях у тебя не так получается - что координата имеет 2, 3 или 4 компоненты, нормаль всегда 3, а цвет 3 или 4 - а ты можешь сам определять количество атрибутов вершины, их размер (но не более 4 компонент) и смысл. Максимальное количество можно получить через GL_MAX_VERTEX_ATTRIBS, и оно должно быть по крайне мере 16, вроде бы. Ну и там всякие glBindAttribLocation посмотри.

Можно я тоже шейдер для ветра в траве сделаю? Я посмотрел ирл видео с ветром в поле и у меня, как мне кажется, появилась неплохая идея, чтобы ветер был чуть-чуть поживее, чем это движение как на гифке с лягушкой.
Anonymous No.99797
>>99790
>Можно я тоже шейдер для ветра в траве сделаю?
Для моей игры? Можно.
Только на моей машине поддерживается версия максимум 130, так что я, скорее всего, не смогу протестить большую версию.

Вот такой функцией я генерировал данные, которые пересылались в veter:
RetVertexData_t FlowerVertex(block_t* block) {
NewVar(RetVertexData_t,out); //макрос для выделения на стеке с memset в ноль

out.num = 8;
out.vertex = malloc(sizeof(GLfloat)*out.num*3);
out.texcoord = malloc(sizeof(GLfloat)*out.num*2);
out.color = malloc(sizeof(GLfloat)*out.num*3);


out.vertex[0*3 + 0] = VoxelToMeter(0.5);
out.vertex[0*3 + 1] = 0;
out.vertex[0*3 + 2] = BLOCKMETERSIZE/2;

... //неважно

out.shelmsize = sizeof(GLint); //размер элемента
out.shdnum = out.num; //кол-во элементов. В данном случае 8, что соответствует кол-ву вертексов
out.shaderdata = calloc(out.shdnum,out.shelmsize);

((GLint*)out.shaderdata)[0] = 0; //для нижних вертексов ноль, а для верхних 1.
((GLint*)out.shaderdata)[1] = 0;
((GLint*)out.shaderdata)[2] = 1;
((GLint*)out.shaderdata)[3] = 1;
((GLint*)out.shaderdata)[4] = 0;
((GLint*)out.shaderdata)[5] = 0;
((GLint*)out.shaderdata)[6] = 1;
((GLint*)out.shaderdata)[7] = 1;

return out;
}


А эта функция вызывается перед каждой отрисовкой вертексов, к которой привязана текстура одуванчика + комплекс шейдеров ветра или текстура клевера + тот же комплекс шейдеров ветра:
void FloraShaderFunc(RenderData* rd,GLuint prog) {
GLuint sila = glGetUniformLocation(prog,"sila");
GLuint veter = glGetUniformLocation(prog,"veter");

glUseProgram(prog);

glUniform1f(sila,sin((float)((takt)%50)/50.0*(2*M_PI))/5.0);
glUniform1iv(veter,rd->shdnum,rd->shaderdata);
}

А после, glUseProgram(0);. Это ещё и почанково.

Но если можно обойтись без костылей с пересылкой int данных каждый раз, а использовать только аттрибуты, то я буду рад.
Думаю, смогу приспособить твой шейдер.
Anonymous No.99801
>>99797
>Для моей игры?
Не уверен (трава в ямах же не должна качаться), я просто какую-то простую сцену сгенерирую, хочу посмотреть как идея.
А геометрический шейдер (расширение ARB_geometry_shader4) поддерживается?
Anonymous No.99810
>>99801
Скорее всего поддерживается, он рекьюрит OpenGL v1.1

Что насчёт ветра, то я собирался сгенерировать как бы скруглённую пилообразную волну, которая сильно выходит в + и немного - (отдача) и наложить на неё рандомный шум, а в шейдере ещё сделать зависимость от расположения вертекса (чтобы были как волны ветра). Ещё добавить фактор, в общем случае зависимый от высоты, ведь пшеница у меня двублочная.
Anonymous No.99854
15772696129470.png (60 KB, 999x682)
15772696131391.webp (191 KB, 882x626)
15772696133202.webm (4301 KB, 1320x1040, 00:00:11)
15772696136793.webm (7523 KB, 1320x1040, 00:00:11)
Вроде бы норм получилось. 60 фпс не конвертируется и по размеру не умещается.
Вот для начала я медитировал на сие видео, 53 и 57 минуты: https://youtu.be/wI1on2jLi7o?t=3229
Если внимательно посмотреть, сначала в траве верхняя часть стебля быстро дёргается, и лишь с небольшим запаздыванием прогибается основной стебель.

В итоге я сделал трёхкомпонентную текстуру: резкую карту шумов для мелких колебаний (на левой картинке отмечено красным), не очень резкую для средних по амплитуде и совсем плавную. Причём, каждую из этих компонент вершинный шейдер берёт с небольшим запаздыванием, чтобы сначала начинали трепетаться верхушки, а потом прогибался весь стебель более основательно.
И ещё какую-то коррекцию высоты стебля прикрутил, чтобы он визуально не расстягивался. Вот справа это изображено на первой картинке. Правда, при слишком сильном ветре стебель проваливается под землю, но это фигня.
Вот код: https://pastebin.com/sTf8ZTGS
Шейдер говно неоптимизированное, как, впрочем, и всё остальное - но мне просто хотелось это сделать, посмотреть насколько реалистично будет выглядеть.
Функции нужно передавать размеры окна (чтобы пропорции были верные). Ещё там в коде есть mode, которая позволяет отрисовывать листья в виде сетки как на втором пике (или можно на текстуру ветра посмотреть), и можно поменять количество кустов, сегментов у листьев и всего остального где-то ещё в коде.
Anonymous No.99886
15773241774790.jpg (65 KB, 720x480)
>6. Как делать музыку?
>Ответ: Если не можешь в реале, то тебе понадобится трекер.
https://rutracker.org/ сойдёт?
Anonymous No.99896
>>99886
Можешь поспользоваться моим, но он не завершён:
Хотя нет, не кину, там слишком много личной инфы
Anonymous No.99908
Мдпа, с игрой на букву и полнейшая неразбериха.
Видимо, мне придётся его полностью переписывать, ещё и сделать более модульным.
А хотел ещё попробовать насосать на скидочках.
Я ещё и гитом не пользовался, так как однажды он испортил мои исходники, а так бы мог откатить и посмотреть, где именно сломалось.
Anonymous No.100337
>>96153 (OP)
> Ответ: Если не можешь в реале, то тебе понадобится трекер.
Трекеры суть же хуйня неудобная. Ничего лучше пианоролла и степ-секвенсора пока не придумали.
Anonymous No.100815
Потихоньку вхожу в с# (вообще для юнити дрочу его). Почитал faq треда, где движки. Как это все работает? Если не юзаешь движок? Пишешь собсвтенный?
Anonymous No.100819
>>99886
MadTracker 2 скачай, это вещь!
Anonymous No.100825
>>100815
>с#
Чем оно от C++ отличается?
Anonymous No.100826
>>100815
Если не используешь конструкторы игр типа юнити, гейммейкера, уеча и годота, то пишешь игру как обычную программу с точкой входа в main. И уже подключаешь линковкой движки типа ogre, irricht, bulltet, ODE, libccd.
Anonymous No.100827
>>100825
C# - это как джава, там тоже виртуальная машина. Довольно сложно прострелить себе ногу, но и работает тормознее крестов в 1-4 раза.
Anonymous No.100902
>>100826
С джва дэ игрушками отдельно прикручивать граф движок не надо?
Видел на ютубе туториал какого-то чувака, он создавал visual studio папку с ресурсами, и скидывал туда графику.
Anonymous No.100908
>>100902
Вообще ты можешь взять OpenGL, и через glVertexPointer и glPushMatrix+glPopMatrix отрисовывать каждый спрайт, но учти, если таких спрайтиков будет больше пары тысяч, то могут начаться лаги, и не из-за видеокарты, а потому что процессор не будет поспевать в цикле каждую ноду (сос прайтом) рисовать и тебе придётся, например, отдельно генерить вертексы для статических объектов, чтобы рисовать их за один вызов.
Anonymous No.101060
15783368841780.png (402 KB, 825x548)
В новой версии TAKTRATE будет равен 60 для абсолютной плавности движений для 60 FPS, но обработка блоков и ещё некоторые вещи скорее всего будут вызываться раз в !(takt%2), а некоторые вещи типа перебрасываний указателей на сущностей на другие чанки-владельцев вообще раз в !(takt%4) или !(takt%8) раз. Хотя, этим можно вообще заниматься при выгрузке чанков с одного места на другое, наверное.
Anonymous No.101071
Кстати, код игры адаптирован процентов на 20.
Я тут посчитал, по исходникам проект (в его старой версии) разросся до 17 тысяч строк! Из них около 3 тысяч это код "главного мода" или же функций для отдельных предметов. Надеюсь, после реинкарнации код уменьшится хотя бы до 15 тысяч строк.
При этом текстур около 350, звуков 3, шейдеров 1 (код для ветра от анона я пока ещё не внедрил, но сохранил, а мой может стать шейдером для подводных волн), 3 текстуры-паттерна для генерации мира, было около 20 моделек разных предметов и есть около 350 кусков текста (для отдельно взятого языка).
Anonymous No.101103
15784083581970.png (9 KB, 736x578)
8 часов настривал новый ГУЙ, чтобы добавить горстку кнопочек.
Anonymous No.101128
>>96153 (OP)
Как вы умудряетесь сидеть над одним проектом месяцами? Я вот когда начинают проект, не вылезаю из него неделю-две, думаю только о нем, но через некоторое время полностью теряю в нему интерес.
Anonymous No.101130
>>101128
Я и сам не знаю. Наверное, есть что-то притягательное в этом. Высший художественный+инженерный интерес.
Хотя нет... На самом деле я просто очень хочу получить деньги при этом не ходя на работу, а занимаясь неплохим таким занятием, как геймдев, например. У меня есть очень много некоммерческих проектов, которые тоже отпали, хотя я, на самом деле, не занимался ими изрядно.
В общем-то я здесь единственный, чей проект живёт хоть и тоненькой, но жизни струйкой.
Anonymous No.101159
Уж очень сложно с этим новым гуи. Надо делать без костылей, а всё-равно получаеются спорные решения.
У меня есть виджеты, они могут быть параллелипипедами, другими дравейбл или боксом — хранилищем виджетов, который сможет выстраивать их по лейауту, сможет быть скроллед внутри другого виджета (в частности квадрата-окошка), ещё только что добавил штуку как PushActivity и PopActivity. Такое было и раньше, но теперь это и тут. Оно изменяет флаги нужных виджетов так, чтобы можно было перемещаться между активностями, ну main menu, options menu.
Ещё виджеты теперь имеют айди.
Зато мне больше не придётся заново ГУИ писать для новых игр.
Anonymous No.101166
Как же сложно создавать ГУИ! Никогда не создавайте ГУИ, лучше используйте уже готовое.
Внезапно обнаружилась проблема, из-за которой пришлось немного переписать логику, так из-за этого всё побагалось-порушилось.
Anonymous No.101167
А, не, я ошибся. ГУИ это норм вещь, Си это плохо. Не программируйте на Си, если не хотите багов. Си подходит только для небольших программок, в т. ч. и микроконтроллерных прошивок.
Anonymous No.101213
15787579260610.webm (8073 KB, 1200x800, 00:00:28)
Вот так сейчас выглядит Индустриворкс.
Сегодня еле-еле довёл до 29% готовности, когда хотел до 35%.
Вечно я не измеряю собственные показатели продуктивности, чтобы потом не стопорить свою психику "оправдывающими" числами.
Кстати, на следующей неделе ожидается небольшая скидочка на Индустриворкс в стиме.
Anonymous No.101387
Беру свои слова назад. Разработка настоящего ГУИ это то ещё занятие. Если вы не хотите разбираться со всей этой чепухой, ищите подходящую библиотеку, иначе много времени отнимет.
Anonymous No.101477
15790029120220.webm (2738 KB, 1200x800, 00:00:43)
Кстати, я сосачир-кроссбордер.
Я заморозил игру про сферку и начал делать игру про шахматы, так как это легче. А на сосаче постил, так как там аудитория больше.
В общем основные механики готовы, осталось только штук 30 уровней сделать и можно выпускать.
Ещё один плохой баг исправить.
Я бы и Индустриворкс поделал, всё-таки он уже есть, но не дружу с логикой и стратегией. Кроме того, используя уже имеющуюся экспу, можно посмотреть, сколько я выжму из шахмат.
Anonymous No.101484
15790093343050.png (24 KB, 600x365)
Тучеры, дайте мне годных гайдов по новому блендеру...

>>96153 (OP)
> Как под линукс не из-под линукса скомпилить, я незнаю, не пробовал.
Кросс-компиляция называется вроде, я видел на одной очень популярной имиджборде, как человек компилировал .exe из под какого-то линукса.
Anonymous No.101485
>>101484
> Тучеры, дайте мне годных гайдов по новому блендеру...
И мне чтобы с нуля вкатиться, а не переучиваться на новый интерфейс.
Anonymous No.101486
>>101484
> Кросс-компиляция называется вроде
Перечитал, я неправильно понял.
Anonymous No.101495
15790200438220.png (33 KB, 651x443)
Незнаю как, но я почти сделал обводку вокруг предметов.
Всё-таки си не подходит для настоящей разработки. Максимум для простых утилит или для обучения школьников. Я пробовал не подгонять алгоритм под результат, но не получилось.
А ведь некоторые люди пишут линукс на си.

А у меня ещё и ГУИ багает. Как только я бросаю предмет, мои виджеты рисуются белым.
как же это сложно...
Anonymous No.101809
15792524377400.webm (13550 KB, 1200x800, 00:00:27)
Научился снимать видео в 60 фпс.
Anonymous No.102272
15799572621800.png (93 KB, 530x390)
Сделать верстак с полем 10x10. А то чё крафт такой лёгкий! 8 палок 20 слитков на одну кирку.
Anonymous No.102313
Кстати, новая версия готова где-то на 46%.
Почему после Нового Года всех прям так размазало по холсту календаря? Но если других где-то на 1-2 недели, то меня на 3.
Anonymous No.102339
15800343114040.jpg (47 KB, 800x742)
>>101477
>я сосачир
>не дружу с логикой
Anonymous No.102568
Как вы можете использовать Си? Написал немного сложную программу, а в неё вся память утекает!
Anonymous No.102572
>>102568
Флаг, хватит фигнёй страдать, код показывай, поищем твою память.
Anonymous No.102599
>>102572
Мне что, все тысячи строк открывать теперь? Не, я лучше сам. Ту утечку я решил, но нашлась ещё парочка.
Anonymous No.102686
15803078957400.png (191 KB, 1190x791)
Код новой версии готов на 49.975%
Как я считаю? Делю кол-во строк нынешнего кода на почти кол-во кода последней доступной версии. Там чуть больше 17000, но учитывая то, что я сделал с тысячами некоторых строк, можно округлить до 16000.
А вообще, мне осталось адаптировать 24 части главного мода, немного исправить ГУИ, снять утечки памяти, немножко управление подправить, переделать код генерации мира, сохранения и загрузки мира, загружать obj-модельки для мобов, процессировать их анимации, снова сделать ачивки и немного того, немного сего.
Ещё можно попробовать добавить режим Building. Уж теперь-то, у меня почти есть виджет со скроллом. Ещё надо будет попробовать шейдер ветра, который анон выше скидывал, инжектировать в игру.

Есть ли какие-нибудь подводные камни, если я буду выпускать debug-версию, которая скомпилена с флагом -g3? По идее немного кода просто утечёт, но разве это так важно? Главное, чтобы не почти весь.

А что если бы делал Industriworks не на си, а на Годоте? Я с ним пока не разобрался, но вроде бы не слишком плохо там всё, главное, что комьюнити довольно живое и перекомпилировать можно со своими собственными модулями
Если и буду что-либо делать на Годоте, то где-то через 2 игры, потому что это 2 игры уже имеют заготовки на си. А ведь у меня ещё остаётся в идеях игра про паучка, про нефтедевочку, и хоррор-комедия, который скорее всего не выйдет, так как слишком много моделить и рисовать, а смысловой нагрузки маловато
Anonymous No.102755
15804776022550.png (347 KB, 1173x780)
Код готов на 58%
Anonymous No.102848
>>96153 (OP)
>Я использую milkytracker, но он мне не нравится.
Sunvox пробовал?
Anonymous No.102849
>>102755
>58%
Как ты это определяешь? Выполнение туду листа?
Anonymous No.102882
>>102849
Нет, я делю кол-во строк кода на 16000.
Anonymous No.102884
>>102882
А если случайно получится больше? То код готов на 146%?
Anonymous No.102887
>>102882
Лучше бы заранее продумал что должно быть сделано, выписал структуры и функции, и процент считал бы по количеству заполненных структур-функций.
Anonymous No.102893
>>102884
Да. А если меньше получится, то придётся добавлять новые фичи. Например, отображение рук/предметов в руках, облака, дёрганье слота, когда из него выбрасывается что-то на Q.

>>102887
Я был бы не против, если бы какая-нибудь программа мне написала кол-во всех функций в старом коде, но я не знаю такую. Поэтому по строкам считаю.
Anonymous No.102896
15805846106140.png (825 KB, 1200x800)
15805846106711.png (1590 KB, 1200x800)
15805846107322.png (911 KB, 1200x800)
Ех, и снова терраин. Можете видеть его самого, генерацию руд (ох уж эти перевычитания координат, из-за чего в случайной функции образуются прямые линии. Какую-нибудь теорию хаоса сюда добавить, что ли? или фракталы. Можно и перлина форм просто нагенерировать). Снизу можно увидеть немного мрамора и кварцита, когда остальное — габбро и гранит.
Anonymous No.102959
15806722673480.png (1234 KB, 1200x800)
15806722674311.png (317 KB, 997x639)
Добавил теней меж блоков, чтобы мир выглядел более майнкрафтоподобным живее.
Но вот какой писи происходи смешение как на втором пике? Это особенности опенгла или я где-то напартачил? Видите, только по одной диагонали преимуществуют цвета.
Anonymous No.102960
>>102959
Вот, спустя полгода я понял, пчему всё так вырвиглазно смотрелось - теней не было. Еще бросается в глаза чрезмерное обилие разных оттенков на одной текстуре (не листьях сильно заметно)
Anonymous No.102961
>>102960
Да, так намного лучше.
Anonymous No.102962
>>102959
Ты же используешь GL_QUADS? Как ты себе представляешь растеризацию четырёхугольника? У видеокарты нет никакой гарантии, что вершины расположены в одной плоскости, и потому оно рисует их как два треугольника, и каким образом оно выбирает как провести диагональ никто не знает (nvidia 4200 в зависимости от угла обзора разбивала, что с радеонами и более новыми карточками - не знаю).
У тебя две диагональных вершины имеют тёмный цвет, и когда оно интерполирует цвет вдоль грани, то в центре тоже получает тёмный цвет.

Отрисуй что-то типа для наглядности:
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex3f(-1,-1,0);
glColor3f(1,1,0);
glVertex3f(1,-1,1);
glColor3f(0,1,0);
glVertex3f(1,1,0);
glColor3f(0.2,0.2,1);
glVertex3f(-1,1,1);
glEnd();
Anonymous No.102963
15806766739200.png (73 KB, 574x351)
>>102962
Картинка отвалилась.
Карточка посовременнее 4200 ti (или, скорее, драйвер - gl_quads удалили в более новых версиях opengl и теперь он только на уровне драйвера существует скорее всего) всегда одинаково разбивает. Вершины 0-1-2, и 0-2-3.
Пост отредактировал Anonymous
Anonymous No.102971
>>102960
>чрезмерное обилие разных оттенков на одной текстуре
Я тогда не знал, что в пиксельной графике ещё нужно и палитру выбирать. Сейчас я занялся ретекстурингом, на том скриншоте видны новые листья дуба и берёзы. Стало хуже, но это потому что там только 3-4 цвета в палитре, а надо бы где-то 8.
Когда-то давно, в других играх я вообще просто качал текстуру из интернета и сжимал её до пиксельных масштабов, думая, что это дешёвая замена пиксель-арту.
Anonymous No.103011
15807617633000.png (241 KB, 1117x800)
Новая моделька для сердечного кристалла.

Джва часа пытался понять, что имел ввиду автор библиотеки tinyobj.

А ещё я сначала пытался сделать модельку самостоятельно в блендере, но не получилось, так как он не подходит для 3D-моделирования. Поэтому я загуглил уроки как сделать друзу кристалл и сразу научился. Волшебство! Почему блендер получает получаться, только после туториалов?
Anonymous No.103027
https://www.youtube.com/watch?v=1o0Nuq71gI4
Какая-то фигня от нвидии с частицами.
https://www.youtube.com/watch?v=4QOcCGI6xOU
Про рендер облаков.
https://www.youtube.com/watch?v=RuZQpWo9Qhs
Вот это видео выглядело в 2009 как технология чужих. Может быть это только мне так казалось, и на самом деле это было более-менее нормально, просто я сам только в 2009 узнал что такое sph.
https://www.youtube.com/watch?v=fsvDbzEui3w
Ещё жидкость, очень красивые подводные вентиляторы.
Anonymous No.103047
>>103027
Как же я завидую людям, которые родились раньше и которых больше чем в моей группе (1 человек)! Они такие развитые, а я вообще кусок экскремента по сравнению с ними.
Хорошо, хоть почти все из 19-го века уже умерли. Когда люди поборят старость, это может стать фатальной победой старого поколения (нынешнего) над молодым (будущим).
Anonymous No.103048
>>103011
>А ещё я сначала пытался сделать модельку самостоятельно в блендере, но не получилось, так как он не подходит для 3D-моделирования
Всегда начинай с поиска референса. Или рисуй набросок в пайнте. После этого намного легче воять будет.
Anonymous No.103062
15808347030580.webm (9469 KB, 1674x1018, 00:00:34)
15808347045371.png (152 KB, 1707x838)
15808347045822.gif (27 KB, 400x200)
Параметры для жидкости подобрать невозможно. Там есть некоторый абстрактный коэффициент вязкости, и его значение 1e-26, подбирать в таком широком диапазоне довольно сложно. А ещё функция ядра, функция для давления и другие уравнения.
Турбуленций нет, а должно быть как на третьей картинке.
А я всего то хотел посмотреть на водовороты.

Пойду ихнюю (авторов четвёртого ютуб-видео) либу потрогаю, у них демка есть - выкраду оттуда параметры и функции.
Anonymous No.103096
15808891608720.png (301 KB, 679x567)
Ладно, я понял. Блендер это 3D-редактор сугубо для животных и некоторых других натуральных объектов, причём халтурных. Он не подходит для создания зданий или майнкрафтоподобных мобов. Блендер оперирует не телесными вещами, а наборами вертексов и связями между ними.
Я вернусь к своей кубической+велосипедной анимационной модели, хотя и оставлю загрузку .obj, потому что они всё-равно понадобятся, особенно когда будут нужны не кубы, а что-то другое.
Ну а что насчёт анимации ходьбы оленя, то тут надо будет самостоятельно накидать что-то, референсы посмотреть.
Anonymous No.103130
Интересно. Новая версия Industriworks готова на 72%, но на самом деле, я уже почти доделал её. В итоге я выпущу где-то на 84% готовности. Куда делись все строки из старой версии?
Anonymous No.103198
Опять с ГУИ проблемы! Оказалось тут, что при обработке виджета каждый фрейм с удалением и добавлением его членов (если он бокс), может случиться так, что он перестанет отображаться. Причём если я виджет строки удаляю, то всё видно, а если я его сложу в бокс и буду удалять бокс, то он перестанет отрисовываться! Вдруг это не дефайнед бехавиор и на винде или других компах он не будет отрисовываться? Как же сложно делать ГУИ-либу!
Ещё я недавно осознал, что не стоит в самих виджетах хранить данные о расположении и флаги рисовать и процессировать. Их надо хранить в отдельных структурах, которые будут иметь указатель на виджет, потому что один и тот же виджет может быть использован в разных виджетах! Например, кнопки Options и Controls у меня есть в MainMenu и EscMenu и из-за ограничений моей либы они не могут иметь разные расположения! Но это я поменяю потом!
Ещё я давно осознал, что для активностей (activity, удобная штука для push и pop виджетов) надо делать отдельную структуру, когда я зачем-то добавляю виджеты в бокс и только с ними можно взаимодействовать! Бред!

Ещё, так как я делаю либу, я не смогу обойтись халтурой glViewport+glScalef для seekable виджетов, мне придётся рендерить в текстуру! Но это не так сложно, я же уже научился при помощи анона выше.
Anonymous No.103227
>>103198
>seekable виджетов
Это что за зверь такой?
Anonymous No.103229
>>103227
Я так называю виджеты со скроллбарами на самом деле с функционалом, к которому ключами являются скроллбары зачастую.
Anonymous No.103249
>>103229
Понятно.

У меня скроллбары сделаны через смещение дочерних контролов и отсечение их по маске родителя при отрисовке. Вроде работает, но единственный подводный камень в том что установка маски разрывает батч отрисовки из-за этого на пятой вложеной панели со скролом фпс драматически уполовинивается. Долго думал как это починить, а потом просто решил что НИНУЖНА - просто не надо делать гуй где понадобится больше одного уровня скрола.
Anonymous No.103253
15811502361050.png (815 KB, 1200x800)
Теперь надо научиться качественно и быстро обновлять свет а потом ещё и сделать его мягким, а то глаз режет. У меня источник света может иметь 33 значения светимости ­— от 0 до 32. Таким образом, один источник может затронуть изменение области в 4x4x4 чанка. Кроме всех этих трудностей, возникают конфликты между источниками света, так как один перезаписывает свет прошлого, даже если он больше. То есть, мне надо либо в чанках хранить указатели на все источники света, которые влияют на него, при обновлении света проверять их наличие и высчитывать свет относительно их всех, либо чтоб каждый блок имел указатель на источник света, который его поддерживает и если кто-то будет больше, то указатель перезапишется. Первый вариант мне нравится больше, у меня со временем появится и цветное освещение, оно будет смешиваться.
Теперь я не в отдельном потоке обновляю свет чанков, а в функции процессирования чанков, а то как-то андефайнедбехавиорно.
Ещё у меня есть подозрительная функция UpdatePhotogen. Она берёт источник света и рекурсивно, вызывая саму себя, разносит свет по округе. Её рекурсия может оказаться большой проблемой для производительности.
Anonymous No.103261
15811648536610.png (57 KB, 1236x465)
Долбанный си! Мне что, теперь на каждый список писать свою функцию аппенда и дела? Я, конечно, жду Лайси, но Индустриворкс обойдёт его стороной, потому что уже написан на си. Видимо, пора переходить C++, пиша в си-стиле.
Anonymous No.103265
15811739104890.webm (19743 KB, 1200x800, 00:01:11)
Немного искусственного освещения как я буду делать солнечное?. Мягкий свет только на верхней стороне блока. Всё ещё есть кучка багов, которые видны на видео и, кажется, новая утечка памяти появилась.
Я буферизую регион с просчитанным светом для каждого светящегося блока и при обновлении света беру со всех окружающих светильничков эти данные и миксую их между собой.
Вангую, что получилось очень неоптимизированно, на более слабом компе может быть слишком мало FPS и TPS (takt per second).

Кстати, есть человек, который называется Пролапс, нет, не тот, который несколько месяцев назад постил 1 из трёх видов пролапсов, этот геймдевер со странными играми. В своём последнем видео https://www.youtube.com/watch?v=pkK_MZHOp_Q он немного растолковал про маркетинг на реддите, а ещё сказал, что выпустит методичку по маркетингу для игр за 15000 просмотров и 2000 лайков, так что смотрите.
Хотя я не уверен, что эта методичка мне поможет, потому что он уже постил текст про маркетинг на мейлаче.
Anonymous No.103280
Попробовал программу valgrind, чтобы найти утечку памяти и она, внезапно, помогла. Но помощь эта было косвенной. Я забыл удалять старый vbo дравдаты чанка, а тут он мне показал на glBindBuffer.
А так, очень много мусорных данных, ничего не понятно и почти всё бесполезно.
Anonymous No.103336
На паскале можно что-то попробовать сделать или что-то другое нужно учить? Не скажу что я его прям хорошо знаю, просто какие-то циклы\условия\массивы со школы помню.
Anonymous No.103352
>>103336
Там супер хреново с указателями работать.
Самое сложной, найти модули для работы с либами, чтобы не писать вручную враппер си <-> паскаль, в остальном более-менее. То же самое что си, но другими словами.
Anonymous No.103357
>>103336
>циклы\условия\массивы
Лучше сразу учи C++ (можешь сначала C выучить, а потом выучить основные C++ плюшки).
Если тебе нужны именно игры то можешь и Годот выбрать с его GDScript, но это уже будет не программирование программы, а ассетов.
Anonymous No.103362
>>103336
С указателями научился работать? Плавное введение в понятие указателей — единственное, для чего паскаль полезен: он создавался как язык для обучения студентов программированию, и за пределами этой цели малопригоден из-за скудного функционала самого языка и набора библиотек к нему. Если начинать изучать указатели с C или C++, можно сломать мозг.
Anonymous No.103366
>>103362
Какие указатели на паскале?
Anonymous No.103367
>>103366
Хуёвые. Через {$POINTERMATH ON}.

>>103362
>Если начинать изучать указатели с C или C++, можно сломать мозг.
Наоборот. Ты такой переходишь с паскаля на си и думаешь мол "мать моя женщина, как я терпел эти унижения раньше в паскале."
В остальном я не заметил никакой разницы при переходе от паскаля-подобных к си-подобным. Только что намного удобнее, лаконичнее и яснее работа с указателями, перегрузками функций и шаблонами. И намного запутаннее компиляторы и системы сборки. Чёрт его знает кто придумал, что паскаль лучше подходит для обучения и какие аргументы в пользу этого - он совсем не подходит и я искренне жалею, что мне пришлось с него стартовать. С си я бы развивался намного быстрее.
>Плавное введение в понятие указателей — единственное, для чего паскаль полезен
Бред какой-то, я как обладатель пятилетнего опыта написания "программ" на паскале-подобных могу с уверенностью заявить, что ты из какой-то параллельной вселенной. Не даёт никакого понимания указателей если не использовать никому неизвестную директиву компилятора, и даже с ней он даст лишь 30% понимания, потому что возможности по стрельбе в ногу очень ограничены.
Anonymous No.103373
>>103362
>Если начинать изучать указатели с C или C++, можно сломать мозг.
Поэтому я понял указатели, только когда перешёл на ассемблер!
Anonymous No.103429
>>103367
>возможности по стрельбе в ногу очень ограничены
По-моему это достинство. Разве нет?
Anonymous No.103430
>>103429
Не уверен (ограничение (возможно) закрывает часть редкоиспользуемых возможностей) и явно не для обучения. Для обучения нужно обратное, это как с велосипедом - катаясь на четырёхколёсном (с боковыми колёсиками) ты не научишься использовать двухколёсный, который в целом куда юзабельнее.
Anonymous No.103436
15814196120160.webm (10222 KB, 1200x800, 00:00:58)
У меня геймдевский понос. Вместо того, чтобы делать Индустриворкс, я сначала пили игру про сферку, которая пожирает плонетку, потом игру про шахматы, вчера я отменился от неё и сразу же начала делать платформер на Годоте, даже почти контроллер дописал.

А ведь мне не нравится геймдев, соответственно, надо создавать только высшие игры — Industriworks, игру про паучка и игру про нефтедевочку. При должных стараниях, они способны достичь тысяч положительных отзывов в стиме!

Вот что бывает из-за проблем со тратегическим смышлением. И не я один страдаю таким недугом, миллиарды людей по всей Земле такие же, из-за чего живут в каках.
Anonymous No.103442
Программист говорит "Не падай, не падай!", а если бы я был тестировщиком, то не переписывал бы сейчас Industriworks.
Кстати, новая версия готова где-то на 77-90%. Было бы хорошо, успей я к 16-му Феврался.
Anonymous No.103443
>>103436
Давай соберем godot в виде библиотеки.

Ибо программировать на C++ сейчас можно только через анальный интерфейс
https://godot.readthedocs.io/en/3.0/tutorials/plugins/gdnative/gdnative-cpp-example.html
Anonymous No.103452
>>103443
Не думаю, что Годот нужен в виде библиотеки. Ведь главная его особенность, что он конструктор игр, то есть можно ассеты мышкой таскать.
Уж лучше изучить нормальный графический движок типа огра, иххрихта или чего-то ещё, а для физики может подойти newtons, ODE, bullet или для случаев типа Industriworks просто libccd, который я недавно включил.
Вот серьёзно, столько мороки у меня было с ODE (успешно) и с bullet (неуспешно), а оказывается, что для большинства игровых задач хватает лишь проверки столкновений, ведь там не нужны всякие упругости и трения.
Anonymous No.103489
15814987473670.webm (15914 KB, 1200x800, 00:00:11)
Новая анимация ходьбы.
Anonymous No.103607
>>103489
Передние лапы сгибаются не вперёд, а назад.
Anonymous No.103622
15816164456460.webm (16345 KB, 1200x800, 00:00:29)
>>103607
Виноват, поправил.
Anonymous No.103623
15816203789470.png (53 KB, 1476x465)
Это плохой код или плоха традиция подсвечеров Си макросы в один цвет?
Anonymous No.103624
>>103623
Зачем писать такие шизонутые макросы, если можно написать нормальную функцию?
Anonymous No.103629
>>103624
Это нормальный ещё.
Нельзя, посмотри как раскрывается block в макросе. В поле макроса пишется не аргумент, а имя поля структуры - функции так не умеют. Помимо этого в функцию придётся передавать 10 дополнительных аргументов с локальными переменными и это выглядит угрёбищнее макроса.
Anonymous No.103635
>>103629
>посмотри как раскрывается block в макросе
Очень похоже на экономию на спичках ценой выноса мозга. Контрол+Ц и Контрол+В давно уже придумали, один раз три раза ничего страшного.
Anonymous No.103649
>>103635
Неее, страшно. Захочется изменить что-то и придётся 3 раза это делать и почти наверняка в каком-нибудь месте ошибусь и искать теперь баг 3 часа.
Anonymous No.103650
Кстати, из-за таких макросов у меня кланг забагал и генерировал код, исполняющийся неправильно в то время как гцц справился. А я до сих пор не зарепортил баг, до сих пор лежат древние сорсы, содержащие его, а я всё никак не разгребу, чтобы выделить главное.
Anonymous No.103670
15816870886080.webm (16253 KB, 1200x800, 00:00:47)
Еле доделал физику. Сначала была проблема в том, что проверяются пересекания не всех блоков, потом я подумал и решил не интерсекты проверять, а сразу пенетрацию и её всчитывать в свои функции для расчёта нового положения. Было много проблем, сначала я документацию не досчитал и надо было "!" поставить, решения шли за решениями и у меня всё никак не получалось, мобы телепортиволись. А потом я понял, что забыл, зачем хотел добавить пенетрацию, убрал её и всё заработало.
Anonymous No.103737
15817627899330.webm (18891 KB, 1200x800, 00:00:28)
Не успеваю, ещё столько надо довводить! Звуки, ХП, генерацию мира, запуск мира, сохранение и загрузку, ачивки, баги с рецептами исправить!
Вчера весь вечер залипал в блендер вместо того, чтобы прогать индустриворкс.
Интересно, что чем меньше D в медиа, тем сложнее она мне даётся. Даже в блендере моё 3D идёт по маслу, главное знать какие инструменты использовать, в 2D я умею немного рисовать, но это будет долго, а синтезировать музыку или голоса это уже очень сложно.
Эх, если бы я был в команде и в моей команде был звукер, который синтезирует музыку, звуки окружения и голоса (для будущего), то могла бы быть большаая синергия.
Может быть трудность медиа зависит не от D, а от его отображения на реальный мир? 3D это понятно, просто вертексы, полигоны, прямые, кривые, отрезки в привычном 3D пространестве. 2D это посложнее, по сути перспективная или ортогональная проекция, так ещё и совместить надо так, чтобы было красиво, тени в мозге прорендерить. 1 же D звук это совсем абстрактная вещь, ноты, октавы, дБ (-∞;+∞), преобразование Фурье, ещё и чтобы звучало это неплохо.
Anonymous No.103740
>>103737
А хотьба мобов у тебя через скелетную анимацию сделана?
Anonymous No.103758
>>103622
Наоборот же: в коленях лапы складываются внутрь. Теперь меняй местами передние и задние.
Anonymous No.103759
>>103758
Я же так и сделал. Колени и локти внутрь.
>>103740
Да, но через велосипедную.
Anonymous No.103801
15818402350540.png (242 KB, 676x582)
Вы могли видеть подобную текстуру в майнтесте. Выглядит ужасно.
Anonymous No.103810
15818495345360.png (161 KB, 541x395)
С мягким светом сундучок с четырьмя цветами выглядит неплохо.

А раньше я думал, что зашумлять пиксель-арт это нормальное дело
Anonymous No.103842
15818804176590.png (845 KB, 1200x800)
>программировать игру на си
>бороться не только с утечками памяти, но и с утечками FPS
Anonymous No.103864
Разработка заглохла. Виндоуз опять отказывается переваривать код.
Лучше бы пилил 3 миниигры в месяц на годоте, чем пытаться реанимировать Индустриворкс, но уже позно.
Anonymous No.103867
В общем всё, бросаю разработку Индустриворкс. Вся это возня заводит в глубочайшее болото.
Anonymous No.103868
>>103867
Что будешь далать дальше?

Может теюе следует писать подобное на хна юнити? Это в разы проще и быстрее в плане реализцации и вяских интересных механик.
Anonymous No.103869
>>103867
А ты открой исходники и разрабатывай без поддержки щиндовс. Если выйдет что-то стоящее, кто-нибудь портирует.
Anonymous No.103870
>>103759
>через велосипедную
Норм. Я в свое время не осилил экспорт скелета из блендера в свой велоформат. Как-то там все сложно и неочевидно.
Anonymous No.103871
Получается, в крупные (для одного человека) или хотя бы средние проекты никто не может.

>>103868
>на хна юнити
Тогда с утечкой фпс ему придётся бороться ещё больше.
Anonymous No.103872
Эх, ладно, я погорячился. Просто мне сделали выгодное предложение, а там, видимо, надо частного предпринимателя генерировать, счета какие-то странные, как-то подвязывать контракты к интернациональной деятельности. А там ещё и налоги даже если нет дохода, но сильно окупит это всё.
Я даже мышку починил, когда подумал, что деньги теперь будет сложно получить. Но потом я вспомнил, что мне ещё желательно купить все (или почти все) игры, которые я когда-либо спиратил. Пока я купил 2 такие из нескольких десятков достойных. А потом купить те, в которые я хочу поиграть, но пиратить уже не хочу.

>>103868
Нет, лучше на годоте. Если выпущу новую версию ивса, то попробую взять исходники-ресурсы своей игры про шахматы и портировать её на годот.
Плюсы годота перед си:
0. Можно писать игры без багов.
1. Портирование на андроид.
Минусы годота:
0. Надо таскать ассеты мышкой.

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

А вообще, мне изначально надо было делать маленькие завершённые игры, но я этого не знал.
Anonymous No.103873
>>103872
> Мне не нравится геймдев, мне гораздо больше нравится софтдев.
> А вообще, мне изначально надо было делать маленькие завершённые игры, но я этого не знал.
Надо было свободные движки для существующих игр писать. Еботня, конечно, та ещё, но зато какой опыт. И это единственный способ получить геймдеверский опыт не засирая информационное пространство говном.
Anonymous No.103951
Это не жизнь.
Anonymous No.103999
Я уходил в инфозапой и ничего не делал.
Я решил, что пора заканчивать с Industriworks. Добавлю пару хостайл-мобов, мож босса какого-нибудь. Скопирую автоматизм из факторио. Вместо проводов-кабелей будут провода на стойках для ЛЭП, а железных дорог не будет, вместо них бельты. Сами подумайте, когда в реальной жизни используются железные дороги? Когда надо перевезти много, но не так редко как самолётом, и не так часто как на бельтах. К тому же бельты не предназначены для многокилометровых путей.
Для бельтов, наверно, будет использоваться голем-шестерёнка, которая будет тратить немного MP для работы. Со временем можно будет открыть заклинание, позволяющее приручать гоблинов и обучать их, чем больше они учатся, тем больше MP с них при убийстве, но главное, чтобы сожители ничего не заподозрили. Порабощённые животные не будут приносить MP, они будут нужны для генерации товаров для гоблинов, когда игрок ещё не знает заклинания для приручения гоблинов.
Порталов не будет. Зеркал не будет. Больших пещер не будет. Двигающихся чанков не будет. Продвинутой боёвки не будет.
Если полученное с Индустриворкс меня не удовлетворит, то буду делать игру про нефтедевочку, но надо успеть до лета, пора бросать это геймдевское дерьмо.
Скоро выйдет новая версия, потому что я отключил часть функционала. Я хочу увеличить стоимость в стиме, но мои моральные нормы немного не позволяют мне этого сделать, пока не выпущу новую версию.
Anonymous No.104059
15823569404200.png (999 KB, 1200x800)
Думаю, добавлю ещё 9 фич/багофиксов и можно будет выпускать.
Эх, если бы я не на чистом опенгле это делал, а на каком-нибудь Ogre3D, то было бы гораздо легче, наверняка! Хотя, мне кажется, что всё-равно пришлось бы генерировать дравданные для чанков и атлас.
Anonymous No.104069
15823727268580.png (21 KB, 1200x800)
Был баг — решил его костылём.
Утечка памяти на ГУИ около 70 КБ/с, в пределах нормы.
Anonymous No.104080
Нет, не успею до завтра. Ждите к первому марта.
Anonymous No.104082
>>104080
Но я всё равно не буду вставлять пиписитарные анальные зонды.
Anonymous No.104084
>>104082
Хочешь, чтобы я тебе продал копию Industriworks за криптовалюту?
Или сам бинарник ивса (индустриворкс коротко) для тебя слишком пиписитарный, даже запуская в контейнере?
Anonymous No.104093
>>104084
В данном случае скорее второе: не вижу, чем оно лучше свободного minetest'а с модами. Но если бы я увидел что игра стоящая, то приобрёл бы и закрытый бинарий для запуска в изолированном от сети контейнере после тестирования взятой с торрентов версии.
Anonymous No.104104
>>104093
>закрытый бинарий
Так он же обновляться не будет! Тут надо скорее покупать стим-ключ (не придётся личную информацию в стим-аккаунт добавлять, а скачать можно и через steamcmd, а мой бинарий умеет запускаться без инициализации стимовских штук), либо лицензию на скачивание пиратских копий, чтобы у тебя она не считалась пиратской.
Anonymous No.104114
>>104104
> Так он же обновляться не будет!
Ещё не хватало чтобы он сам обновлялся. Написал же — без доступа к сети. Обновления при такой схеме удобнее всего распространять в виде бинарных патчей, как это делали во времена распространения игр на дисках.

> Тут надо скорее покупать стим-ключ
Финансовые отношения со стимом с моей стороны также исключены, т.к. они требуют идентификации.
> скачать можно и через steamcmd
Как и запуск пиписитарных утилит от него с доступом в сеть.
Anonymous No.104117
Какой же всё-таки си отвратительный язык программирования! На нём нельзя писать большие программы. Зачем некоторые люди до сих используют си? Они на нём микроконтроллером мигают? Может они просто любят боль? Тут даже списки нельзя сделать, либо для каждого типа раскрывать макрос, который создаст функцию почему я до сих пор этого не сделал?, либо каждый раз бойлерблейтить:
arr = realloc(arr,sizeof(type)*(arrsize + 1));
arr[arrsize] = data;
arrsize++;

из-за чего и возникает большая часть багов.
Я думаю о том, чтобы сделать одну игру на годоте, так как там не надо программировать, соответственно, багов не будет.
Сейчас я ввёл генерацию новых чанков и чтобы не падало на виндосе, при каждой генерации фризит.
Anonymous No.104126
>>104117
>Зачем некоторые люди до сих используют си?
Ты, наверное, первый, у кого стоило бы это спросить. Зачем ты на нём пишешь? Любишь боль?
Да, я люблю боль. Мне и на ассемблере нравится - что-то в этом есть, чтобы из мельчайших деталек собирать что-то такое, что на первый взгляд из них очень сложно собрать.

Просто используй компилятор с++ и сделать для списка шаблон структуры (класса), а в остальном оставь код си-подобный, без наследований и rtti. А точнее, просто используй список из stl, почему бы и нет?
Anonymous No.104127
И вообще, если ты тоже мазохист и хочешь немного боли, давай сделаем более-менее чёткое тз несложной игры с пунктами и будем по фану лепить его. Устраивать такие двухдневки с ограничением времени на выходных пару раз в месяц. На си, без каких-либо крестов, если тебе так хочется.
Anonymous No.104132
>>104126
Да, я как раз собирался попробовать сделать что-то такое, но, может быть, потом, сначала новую версию выпущу осторожно, чтоб не сломать.

>>104127
Нее, мне не очень нравится геймдев, я его использую только для потенциального получения денег. Вот недавно обратно взялся за игру про шахматы, буду на годоте делать. Только вот, приходится всё переписывать, как же я ненавижу переписывать. Только алгоритмы остались, а в годоте всё на нодах и экстендах и GDScript, ух, сложно.
Уже сделал ГГ и перемещение по тайлам, но по всем. Чтоб успеть, придётся по 6 уровней в день добавлять. Надеюсь, это хорошее вложение в экономию времени.
Anonymous No.104158
15825330135060.png (42 KB, 579x376)
Кокой глупый баг. Вы его видите? тестер мод он Хорошо, что проявился в вайне. тестер мод офф
Только вайн мне не даёт номера строк стека вызовов, несмотрят на то, что я с -g3 компилировал, он выдаёт адреса. Мне пришлось дезассемблировать через radare2 и он показал название функции, которая вызывается.
Anonymous No.104166
15825373229280.png (1525 KB, 1200x800)
Играется очень плохо, виндовс отказывается принимать многопоточное программирование, но зато у меня есть пещеры.
Anonymous No.104342
Эх, почему у меня не получается делать крутые игры? Захожу в топ популярных игр и там столько всего, а я Индустриворкс уже 8 месяцев!!! сделать не могу. Мне кажется, что кол-во прогнозируемо затраченного времени надо умножать не в 1.6, а в 4 раза.
Ну ничего, если я сделаю игру про нефтедевочку, то она точно станет хитом! Но если я её буду делать всего 2 месяца (Апрель и Май), то её надо делать 15 дней, а в ней самой 5 дней и должно быть около 10 квестов в день, которых я ещё не сдизайнил. Ухх, а моделировать сколько! Если начну сейчас дизайнить, то потом прогать будет легче я так игру про шахматы сдизайнил давно, а сегодня просто перенёс несколько уровней в игру. Да, прогать, я не буду использовать Годот, лучше буду использовать уже известные технологии — программирование, но выберу уже C++, чтобы использовать темплейты. Вот так, спустя чуть больше трёх лет программирования (и всё на Си, немного ассбемлер ковырял и только недавно научился питону) возьмусь за C++. И вместо опенгла попробую Ogre3D, опенгл слишком элементарен для меня. Когда-то и ассемблер стал слишком элементарен для меня а потом я узнал, что ещё и некроссплатформенен. Что насчёт физики, то не уверен, использовать знакомый libccd+велосипедную физику или обычный физический движок взять типа newtonedynamics или, ох нет, буллет.
В интернетах я нашёл бесплатную модельку аниме-девочки, которую, как я понимаю, можно превратить в много всего, и всех персонажей игры про нефтедевочку, и аниме-мальчика. Но там очень пиписитарная лицензия, а именно Creative Commons, придётся сделать кредиты и указать, что за основу моделек взята та моделька, но очень сильно изменена, но это не так уж и страшно.
Впрочем, и Индустриворкс может стать хитом при должных усилиях и логичнее было бы его развивать. Но там надо много оптимизировать.

Времени так мало осталось, если я хочу начать жить, а не задротить геймдев!
Anonymous No.104435
Долбанное программирование! Собираюсь выпускать, нарастив проект до 16525 строк, а в итоге почти ничего не сделал, 3 месяца тупо переписывал, прокидывал куски кода с одного на другое, в итоге добавил около 30 фич (когда допустимо около одной в день, эффективность 30%), при этом отключил ачивменты и ХП.
Рекомендую вам никогда не переписывать свои проекты. Это ужасно. Даже если он написан на бреинфаке, а вы хотите перевести в баш, лучше напишите простенький транслятор или обвесте двумя гигабайтами пиписитарных контейнеро-аппимейджевых библиотек для совместимости между LLVM и кристаллической решёткой стального круга, лежащего вместо процессора на банке.
Anonymous No.104438
Сука, какой же всё-таки геймдев сложный! Мало того, что виндовс не хочет запускать птреды, так ещё мне виндовс суют в арчекаляску! Да, это арчекаляска, потому что я не хочу конфигурировать гнулинузы, Я просто не хочу разбираться со всей этой гадостью, которую накидали десятки тысяч разработчиков со всего мира, я хочу нормальный, удобно компилируеиый и настраиваемый стандартными методами софт.
Я хотел записать видео про ивс для нового трейлера, но я так и не понял, какой девайс втыкать в recordmydesktop, потому что pavucontrol не пишет, что это за девайс. Он пишет только название и другие метаданные, а путь не пишет! pavucontrol это виндовс-стайл программа, для тех, кто не хочет даже видеть странные слова, а только знакомые слова. Везде этот виндовс-стайл понатыкан в стандартном дистрибутиво гну/линупс, вы только посмотрите на окна во всяких крысах и кедах, это же ужас, виндовс-мышление проникает отовсюду. Чего только стоят панели рабочего стола. А вспомните меню File Edit etc в почти всех программах. Это отвратительно, и я не намерен использовать это. Но геймдев заставляет, потому что геймдев для меня это единственное проплавленное местечко с путями к потенции.
Надо устроить революцию в софте. Для начала взять линукс и изменить его до неузнаваемости. Надо, чтобы он перестал быть коммунизмо-семейным, а стал шифропанко-индивидуалистским. Потом надо взять и найти/сделать нормальную систему звука, чтобы управлять можно было как через CLI, так и через GUI, и чтобы умело пробрасываться через контейнеризованный программы. Потом сетевую систему, чтобы прокси были не на уровне программ, а на уровне ядра и свойств процесса.
Затем надо сделать тулкит для создания оконного окружения и вообще, нормальную оконную систему.
Но кто будет всем этим заниматься? У меня нет времени на это. Вот так и у народов по всему миру нет времени, чтобы устраивать революции в своих странах. В россии, например, говорят "Работай", иначе на тебя ни одна девушка не посмотрит и мужчина работает и работает, откладывает революцию на 10 лет, а потом умирает в 65 и ему становится пофиг на революцию и судьбу своих детей (которых он создал опять же, "потому что на тебя ни одна девушка не посмтрит, если не сделаешь"). Но тоталитарные и авторитарные правители молодцы ребята, круто придумали пасти рабов, хехе. Но они мрази, если бы я был правителем, то, может быть, делал бы акцент на свободу воли творчества и личности человека, а для этого ему нужно свободное время.
Итог — гнулинуксы — некачественная подделка, если не уметь готовить.
Anonymous No.104478
>>104438
> Я хотел записать видео про ивс для нового трейлера, но я так и не понял, какой девайс втыкать в recordmydesktop
Возьми лучше obs-studio, оно захватывает видео через XComposite с преобразованием в YUV на GPU, что значительно эффективнее.
Впрочем, если ты — такой фанат CLI, то можешь всё сделать ffmpeg'ом. Правда, XComposite он не умеет.

> Для начала взять линукс и изменить его до неузнаваемости. Надо, чтобы он перестал быть коммунизмо-семейным, а стал шифропанко-индивидуалистским.
Все инструменты для этого есть. Выкидываешь DE, ставишь тайловый WM и обмазываешься преимущественно консольным софтом.

> надо взять и найти/сделать нормальную систему звука, чтобы управлять можно было как через CLI, так и через GUI, и чтобы умело пробрасываться через контейнеризованный программы.
Внезапно, pulseaudio отвечает всем пунктам. У него нет разве что разграничения доступных через сокет фич, но его можно устроить запретом загрузки модулей. Для управления через CLI есть pacmd и pactl, и они позволяют делать на порядок больше штук чем pavucontrol.

> Потом сетевую систему, чтобы прокси были не на уровне программ, а на уровне ядра и свойств процесса.
Прокси — это по определению костыль на уровне протокола прикладного уровня, для каждого протокола со своими особенностями использования. Ты хочешь реализации протоколов прикладного уровня в ядре? Оно что, ещё недостаточно распухло? На уровне ядра — VPN'ы, и в них можно втыкать процессы через network namespaces.

> надо сделать тулкит для создания оконного окружения и вообще, нормальную оконную систему.
Чем иксы не устраивают? Тем, что какие-то мудаки начали их использовать через жопу, реализовав в обход их фич рендеринг шрифтов и виджетов на уровне клиента, в результате чего встроенный функционал перестал развиваться?

> Итог — гнулинуксы — некачественная подделка, если не уметь готовить.
А ты хочешь шифропанко-индустриалистский интерфейс, который не нужно уметь готовить? Да им никто пользоваться не сможет: навыки его использования приобретаются в процессе готовки.
Anonymous No.104496
>>104478
>можешь всё сделать ffmpeg'ом
Что я и сделал уже.


Но, внезапно, у меня не получилось сделать версию под виндовс. Это похоже на проклятье. Запускаю просто бинарник через виндовс — всё работает, правда генерация мира через проихсодит, запускаю через виндовс и стим — когда нажимаю Start Game и вместо окна с мирами начинается то ли генерация, то ли загрузка с нулём чанков. То есть поведение различается, было ли запущено через стим или через стандартный загрузчик виндовса. Это бред. Это очень странно.
Как я могу делать игры под виндовс, если у меня нет над ним контроля?
Anonymous No.104511
Эх, наверное, стоит прекратить разрабатывать ивс. Я мог бы всё-таки понять в чём дело, почему так происходит, но сколько уйдёт на это времени? Надо бросить его и заняться другими проектами.
В итоге зря около двух месяцев (не трёх, в первом я разрабатывал v0.2.3) потратил на него.

Дело в том, что эта проблема, возможно не совсем программной природы. Я пытался применить на него особые деяния, но в итоге всё пошло наперекосяк. Вот такие ошибки бывают и это меньшее повреждение, чем могло быть. Тем не менее, его природа очень неясна.
Anonymous No.104512
>>104511
>Дело в том, что эта проблема, возможно не совсем программной природы
Надо было с самого начала тестить под окнами, чтобы понять в какой момент возникла проблема.
Ставлю рарку, что дело в многопоточности.
Anonymous No.104513
>>104496
> Как я могу делать игры под виндовс, если у меня нет над ним контроля?
Только методом пердолинга, т.е. проб и ошибок.
Anonymous No.104523
>>104513
Ты так говоришь, как буд-то пробовать и ошибаться это что-то плохое.
Anonymous No.104526
Новая версия v0.3 выпущена
Новость можете посмотреть тут: https://steamcommunity.com/app/1143340/allnews/

Ошибка оказалась в том, что на компе, где я тестил, уже были сейвы ивса, а я как раз добавил новый баг, когда появляется новая активность, данные эвентов не очищаются и можно прокликать на следующую кнопку на том же месте, а старые сейвы не поддерживаются!

>>104513
Это сработает, только если проблема неразумна. Но виндовс, да, неразумен.

>>104512
Кстати, и насчёт многопоточности, я всё-таки установил гдб на винду, надо будет потом посмотреть, почему не получается чанки генерировать на лету в других потоках.
Anonymous No.104584
Нашёл я багованную функцию при помощи gdb на виндовсе, которая не давала в поточном режиме генерить чанки. Это DrawMetadata, она рисует хеигхт мапы, надо теперь искать ошибку в ней.
Думаю, добавлю штук 20 фич и можно будет версию v0.4 выпускать с новым контентом — бельтами и големами новыми.
Anonymous No.104754
Когда рисуешь без текстуры, надо ли делать glDisableClientState(GL_TEXTURE_COORD_ARRAY) или достаточно просто glBindTexture(GL_TEXTURE_2D,0)?
Сделал дисейб клиент стейта дополнительно к выбору нулевой текстуры и glTexCoordPointer на NULL и 4 раза смог мир сделать и отрисовывать метадату на виндовсе.
Anonymous No.104760
Мда, посмотрите на туториал Ogre3D: https://ogrecave.github.io/ogre/api/latest/setup.html
Я конечно понимаю, что C++ позволяет писать всякие классы и методы, но зачем предлагать писать их в туториале? Мне что, теперь все доки перебирать и пытаться превратить C++ вызовы в вызовы в си-стиле?
Понаделают всяких сиплюсплюсей и годотов, а нормальные движки не могут сделать, ну, как обычно.
Anonymous No.104762
15829803213760.png (12 KB, 463x275)
>>104760
Что не так? Как это должно было бы работать по твоему? Они написали своё поделие в стиле ооп. И чтобы работать с их объектами, тебе придётся их создавать и вызывать для них методы. Не нравится, можешь поискать другой, не ооп движок.

Нахожу такой подход довольно логичным и удобным, по сути я то же самое у себя сделал и весь код вызывается внутри базовых методов. И даже если бы я писан на си, там было бы 8 точно таких же каллбеков вместо методов без каких-либо сильных отличий.
Anonymous No.104768
>>104762
Как-то это слишком сложно и непонятно. Думаю, лучше мне посмотреть все мои opengl-функции и привести их к нужной версии опенгла, чтобы знать, какая его версия нужна. Жаль, что придётся и алгоритм сортировки прозрачностей теперь делать и шейдер освещения пихать.

Что в C++ нашёл удобное, так это темплейты. Теперь могу делать списки:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

template<class T,class E>
void list_append(T* list,E elm) {
list->elms = (typeof(*list->elms)*)realloc(list->elms,sizeof(typeof(*list->elms))*(list->num + 1));
list->elms[list->num] = elm;
list->num++;
}

template<class T>
void list_del(T* list,int index) {
if (index < 0) {
index = list->num + index;
if (index < 0) {
return;
}
}
if (index >= list->num) {
return;
}

if (index != list->num - 1) {
memmove(&list->elms[index],&list->elms[index + 1],sizeof(typeof(*list->elms))*(list->num - index - 1));
}

list->elms = (typeof(*list->elms)*)realloc(list->elms,sizeof(typeof(*list->elms))*(list->num - 1));
list->num--;
}


#define LIST(type)\
struct {\
type* elms;\
int num;\
}

/*typedef struct {
int* elms;
int num;
} intlist;

typedef struct {
float* elms;
int num;
} floatlist;*/

int main() {
LIST(int) list = {0};

list_append(&list,8);
list_del(&list,0);

LIST(float) flst = {0};

list_append(&flst,8.6);
list_append(&flst,8.7);
list_append(&flst,8.2);

printf("%i %i\n",list.num,flst.num);
}
Anonymous No.104771
>>104768
А чем тебе не угодил лист из стандартной библиотеки? Который #include <list>.

Заголовок спойлера
#define LIST(type)\
struct {\
type* elms;\
int num;\
}
LIST(int) list = {0};

...
template<typename type>
struct list{
type *elms=nullptr;
int num=0;
};
list<float> asd;

???
Пост отредактировал Anonymous
Anonymous No.104774
>>104771
Я не собираюсь переходить на C++, а просто использовать темплейты. Поэтому не собираюсь использовать её стандартные вещи.
Но за реализацию без дефайна спасибо.
Anonymous No.104777
15829890233920.webm (18161 KB, 1200x800, 00:00:18)
Большой путь, но не великий.
(。╯︵╰。)
Anonymous No.104779
>>104774
Твой код не компилируется (первая строчка list_append с "expected expression" рядом с typeof) даже без инстанцирования, кстати. Что за компилятор и какой стандарт?
Мне приходится писать: list->elms = (decltype(list->elms))realloc(list->elms,sizeof(list->elms[-7])*(list->num + 1))

Надеюсь, твой лист просто экспериментальный, и в действительности ты не вызываешь realloc для добавления одного элемента. Просто представь как оно вешается при добавлении к листу на 1кк элементов.

>не собираюсь переходить на C++
Уверен ли ты, что запись list_append(&list,x) удобнее, чем list.append(x)?
Код метода тоже короче получается:
void append(type f){
elms = (decltype(elms))realloc(elms,sizeof(type)*(num + 1));
elms[num] = f;
++num;
}

А перегрузив оператор [], можно писать list[23] вместо list.elms[23] и ещё проверять внутри выход за границы индексов. Не всегда проверять, а просто добавить проверку через #ifdef, чтобы в случае нахождения непонятных багов (или просто на время разработки) можно было включить подобные проверки во всех местах, чтобы сразу видеть, если какая-то вновь добавленная функция обращается к чему-то не тому.
Пост отредактировал Anonymous
Anonymous No.104794
>>104779
Через gcc и clang последней версии компилируется, не помню как посмотреть дефолтный стандарат.
Теперь я чувствую себя так, будто пишу на GLSL.

Лист экспериментальный, но в Индустриворкс я обычно и использую добавление одного элемента. С оператором [] не стал разбираться, так как не понял как использовать его на запись.

>list.append
Конечно это удобнее, но я же на си с темплейтами пишу! Безо всяких методов и классов.

Я лучше подожду выхода компилятора Лайси, к Маю должны подвезти, а там лист будет из-коробки в стандартной библиотеке и там будет реаллоцироваться не по одному элементу, а блоки объединённые в связной список или что-то подобное. И встроенные коллбеки, где вместо аргумента self автоматически будет пересылаться владелец, не надо будет никакие методы создавать.
Anonymous No.104801
>>104794
Хм, странно. Ну и хрен с ним, decltype более чем устраивает меня.

>а блоки объединённые в связной список
То есть sdt::deque из с++.
Посмотри код (http://cpp.sh/5nuua), там в конце в один и тот же тип сохраняется метод и функция с аргументом-указателем на экземпляр. Код с [] на запись там же.
Кажется, ты не слишком много писал на с++. Абсолютно в любом случае обрати внимание на концепцию ссылок, умных указателей и constexpr - скорее всего это бы решило 90% проблем с текущей памятью.

>а просто использовать темплейты
Просто, их не очень то можно использовать просто. В стандартной библиотеке уже есть очень много шаблонов, которые работают стабильнее и для большего количества разных ситуаций (в том числе иногда могут работать в многопоточных программах), к тому же по ним можно спросить совета у кого. И всякие потоки из стандартной библиотеки кроссплатформенные и имеют синтаксис более приятный.
Тот же std::function написать вручную можно, но для чего этим заниматься? Если нужен результат, то нет необходимости ремейкать стандартную библиотеку или boost, лучше для начала прикрутить их, а потом, когда обнаружишь что std::unordered_map работает в полтора раза медленнее, чем мог бы - вот тогда уже можно будет его переписать, если очень хочется.
Anonymous No.104805
>>104801
Ну ок, может и попробуют буст или стандартную библиотеку сипипи. Особенно, треды, хотя не думаю, что они как-то сильно отличаются от птредов. Главная проблема — бойлерблейт, который каждый раз разный, потому что мой мозг ошибается. Бывает сделаю = ralloc(sizeof(T)(num + 1)),когда мне нужно sizeof(T).

Ладно, ты мне предлагал ты? скомпилить годот как библиотеку или зававать игры на 2 дня, а что насчёт того, чтобы сделать движок, позволяющий https://dtf.ru/gamedev/99958-tehnologii-i-geymdizayn-v-noita-igre-s-simulyaciey-fiziki-kazhdogo-pikselya Noita? Можно было бы объеденить алгоду и зе павдер той, жидкости обрабатывать уравнением Навье — Стокса (точнее, версией для 2D), а потом отдельно подвязать нейросети и генетические алгоритмы, чтобы смотреть, как боты борются.
Мне такая идейка кажется интересной, но не уверен, что найду много времени для её полной реализации в ближайшее время. Мой максимум — песочек побросать, потому что там простейший клеточный автомат.
Anonymous No.104809
>>104805
А если использовать контейнеры из стандартной библиотеки (или свои контейнеры), то realloc не очень то и понадобится, напишешь его три раза в разных местах, не более.

Я бы под дулом пистолета не предложил бы использовать годот; даже на анонимной борде, и даже скомпилированный.
>Noita
Выглядит, как код из cortex command с примесью powder toy. Ёлочки симпатично падают. За два дня не напишешь.
Там нет навье-стокса для жидкости, там такой же клеточно-сеточный алгоритм, как и для песка. Его для несжимаемой непрерывной жидкости то хоть бы где прикрутили, а тут череда жидкости и газа - представляешь вид уравнений навье-стокса для многокомпонентной жидкости? Я вот где-то видел уравнение для двух компонент, но ни одной симуляции этого не видел, а из уравнений никаким очевидным (мне) способом не следует как получить движение этим уравнением удовлетворяющие.
Anonymous No.104830
15830465525860.webm (1036 KB, 192x178, 00:02:15)
Хочу написать игру про Котла!
Anonymous No.104836
Новая версия v0.3.1 выпущена: https://steamcommunity.com/app/1143340/allnews/, но я просто добавил то, что уже было до переписывания + ачивки стимовские сделал.
В следующей версии планирую добавить режим Building, надо ещё каменные кирпичи из ранних скриншотов, двери, а то сколько можно! Лонгтитуду блоков.
Anonymous No.104847
>>104836
Добавь котла!
Anonymous No.104848
>>104847
Мож если как какой-нибудь предмет декорации. Но я не знаю, как он выглядит.
А вообще, можешь купить Ивс с 350 акков и это как раз будет тхрешолдом, чтобы я добавил поддержку юсер-моддинга и сможешь сам добавить.
Anonymous No.104849
15830612689120.webm (3923 KB, 455x256, 00:02:51)
>>104848
Слыш, сам ты предмет декорации!

Котёл это персонаж!
Anonymous No.104928
вот так будет выглядель билдинг-режим, но красивее.
может быть платформу делать не из мрамора, а из другого материала?

Извините, борда уже второй день отказывается брать картинки. Ну ладно.
Anonymous No.105012
>трекеры
То, что мне нужно было это DAW, взял lmms, на первый взгляд — крутая вещь, скоро в Индустриворкс может появиться нормальная музыка с большим кол-вом наложенных каналов не из синусоидальных звуков..
Anonymous No.105075
15833356671980.webm (847 KB, 1200x800, 00:00:24)
Песочек!
Что теперь?
Anonymous No.105089
15833417421120.webm (1577 KB, 1200x800, 00:00:39)
Водичка.
За 2 дня не напишешь, но за месяц можно. Щас какие-нибудь предикшоны для блоков сделать, чтобы клетки перемещались position-independentlu, подвязать box2d, сделать пару функции для генерации тел и будет готово.
Когда я увидел Noita в трейлере, то был поражён его механиками, но когда я увидел видео с геймплеем, то сразу фу. Может быть они ситуацию и исправили сейчас, но мне кажется, что геймплей ведьмы не подходит ей, не уверен. Думаю, тут подошла бы какая-нибудь штука, чтобы добывать материалы и перерабатывать их, крафта как в Magica — чтоб было просто, но сложными комбинациями можно было всякие разные штуки получить.
Anonymous No.105275
15834068083160.webm (838 KB, 1280x720, 00:00:48)
рейт нью музык для индустриворкс
Anonymous No.105319
15834218262270.png (225 KB, 657x752)
15834218263171.png (705 KB, 886x783)
Подготовка к созданию игры про нефтедевочку. Научился качать creative commons модель и риггить дефолтным блендеровским набором, а потом волосами всё это обсыпать.
Anonymous No.105488
15835065383540.png (49 KB, 783x585)
Офигеть, в the powder toy даже преломление света есть! Надо взять идеи из algodoo, the powder toy, приправить идеями из noita и получится движок для нескольких ПК-игр и парочки десятков мобильных.
А TPD даже опенсорсный, но какой смысл от исходников, если они не библиотека?
Anonymous No.105489
>>105488
>и парочки десятков мобильных
Игры будут в новом жанре "пошаговая песочница"?
Anonymous No.105492
>>105489
Нет, во всех жанрах, просто пиксели будут прикольно разлетаться.
Ещё можно, чтоб нейросеть или просто бот генерировал ассеты и геймплей. И вообще уже 20-е пошли, пора начинать игры нейросетями генерить. Ценность игр как общения между разработчиками и потребителем упадёт, но зато бабла можно срубить с людей.
Anonymous No.105696
15836703649590.png (25 KB, 687x528)
Лол, в зе повдер той даже мыльные пузыри есть!
Anonymous No.106640
15841154601350.webm (3615 KB, 1200x800, 00:00:35)
15841154605351.webm (4036 KB, 1200x800, 00:00:07)
15841154605582.png (94 KB, 1200x800)
Лол, физика из коробки 2D.
Anonymous No.106710
Вы знали, что если открыть в виндовсе файл через fopen(name,"r+"), то он не зафлушит данные, если не было записи в конец? Я не знал, но экспериментальным путём увидел это. Поэтому, если вы разрабатываете что-то в виндовсе, лучше максимально абстрагироваться от файлов и каждый раз полностью считывать весь файл в память, а потом полностью записывать. Может это займёт несколько ГБ ОЗУ, зато будет стабильно и если продукт коммерческий, то его с большей вероятностью полюбят.
Anonymous No.106719
реально ли запилить что-то по графике/физике уровня средних игр на пс2 начала 00-х в одиночку?
Anonymous No.106799
>>106719
Да. Незнаю, что там у тебя, но если это пиксельная графика, то тебе надо учить пиксельную графику.
Anonymous No.106855
>>106799
Не, не. Я не про пиксель арт. Я про раннее адекватное 3д на той платформе вроде гта3 или мгс2. Вот чисто модельки, анимация, физика - подобный стиль. Ясен хуй, что в душу не смогу, а вот чисто в песочницу с нечто подобным не слишком же сложно?
Anonymous No.106857
>>106855
Что может быть сложного в создании моделек из двух полигонов с шакальными текстурами? Дохуя кто инди-игры с такой графикой делает.
Anonymous No.106867
>>106855
Можно скачать моделек с лицензиями CC0 (можешь юзать как хочешь) или CC1 (придётся указать автора) или купить моделек с лицензией Royalty Free или заказать моделек.
Вот, например: https://sketchfab.com/3d-models/anime-girl-model-base-free-5a1ef64055c748fd94447adbfa5a88a2 моделька анимедевочки с CC1.
А вообще, тебе придётся пару лет учиться в блендере, чтобы смочь создавать сносные модели с анатомией, риггингом и анимацией.
Anonymous No.106868
>>106857
Хз, мммаксимум что я видел из инди это nightmare house, blameless, или там такое https://www.moddb.com/mods/resident-evil-2-source Если же взять инди аутласт, то там охуеть титры на половину индии.
Но это всё шутаны или от 1 лица бродилки, а чтобы тпс как-то не припомню. Но спасибо, ты придал мне уверенности и в ближайшее время скачаю юнити
>>106867
блендер, блендер. Как-то по учебе нам надо было рисовать там коммуникации в комнате и саму комнату. До персов не дошел. И тебе спасибо
Anonymous No.106908
15841971455280.png (5 KB, 546x448)
А ещё в opengl нет гарантии, что один и тот же код будет выдавать 1 в 1 до бита такой же результат на другой системе. Там это прямо написано в каком-то месте, кстати. Потому что обычно производительность важнее абсолютной воспроизводимости.
Если тебе это не подходит, то стоило бы выбрать что-то другое.

Даже если ты рисуешь простой GL_LINES с толщиной, одна карточка рисует как синим, а другая как рыжим. А если посмотреть на реализацию расширений, особенно не arb расширений, то там вообще труба.
Ещё для примера можно привести, что на нвидиях отсутствовали шумовый функции в шейдерах, хотя они должны были бы быть и вроде как определены в стандарте glsl. Ошибки не было, они просто всюду нули выдавали. Не уверен, что они и сейчас появились.
Anonymous No.108187
Я анон, который делал игру про шахматы.

Сделал бесплатную демо-версию, проверьте пожалуйста и напишите, она хотя бы запускается?
Ссылка: https://drive.google.com/file/d/1hw58xJE7lH0WKETlP4Vu6Dy60d_IDw-S/view?usp=sharing
SHA256: 8709876911ff1c0bb57cf27c9a045bab36d1fd5372d818f88a56be611cf9e473

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

В архиве есть бинарники и для винды и для линя.
Anonymous No.108192
>>108187
Позволяет, посиди часа 2 и отпишись в несколько тредов.
Anonymous No.108193
>>108192
Я был бы готов к этому, если бы торбраузер поддерживал несколько инстансов. Но, к сожалению, много современных сложных юзерспейс софтваров очень демонизированы и не позволяют запускать более одного на компьютер. А я использую веб-интернет очень часто и так же часто очищаю куки.
Anonymous No.108200
15846971764060.png (3 KB, 396x68)
>>108187
>она хотя бы запускается?
Неа. Вылетает сразу же (как на win10, так и на win7). Появляется прямоугольник окна, и после этого ошибка, что прекращена работа программы. Это значит что ошибка возникает после WM_NCCREATE и WM_CREATE, возможно во время первого WM_PAINT или WM_ERASEBKGND.
Добавил бы логи какие. Хотя бы просто в функции инициализации кучу fprintf(..,"init 1"),.., fprintf(..,"init 13") после каждого блока/строчки. И во время отрисовки кадра то же самое "paint 1", "paint 2", .. . Хотя бы понял в каком моменте вылетает.

У меня вот такая пикрелейтед функция (первый аргумент - цвет), если включить логгирование - она через stdarg.h пробрасывает всё своё в fprintf, печетает на экран и печатает в консоль идущую вторым окном.
Anonymous No.108201
Здравствуйте, уважаемые разработчики. Посоветуйте, какой язык программирования выбрать для создания крупной 2D-игры.
Anonymous No.108203
>>108201
HTML + CSS
Я других языков программирования не знаю.
Anonymous No.108219
>>108201
Годот+gdscript.
Или C++ и миллионы библиотек-движков.
Anonymous No.108224
>>108200
Окей, и как же сделать так, чтобы и на моих виндовс-машинах срабатывала ошибка?

Ладно, сделал новую версию на https://drive.google.com/file/d/1JdqVdtUKxWQs0LjOTwjdoTxajmT9eMJT/view?usp=sharing
SHA256: 5ef444d2ea73606370a3554628088dcd6bbb88e53193624a94afcdf47d1731f4

Добавил несколько fprintf(stdout,X), а ещё скомпилировал с дебаггинг-символами, так что, запустив через дебаггер можно понять, где упало.
Anonymous No.108231
15847058708370.png (4 KB, 644x135)
15847058708541.png (9 KB, 489x220)
15847058708692.png (6 KB, 271x454)
15847058708853.png (57 KB, 843x834)
>>108224
>stdout
Пусто.
>с дебаггинг-символами, так что, запустив через дебаггер можно понять, где упало.
Не могу похвастаться опытом запуска сторонних программ через дебаггер и не знаю как это работает, как сочетаются разные дебаггеры и так далее. Оно выдаёт три сегфоулта и выходит. После первого появляется окно, но мёртвое, после третьего оно исчезает.
Там можно ещё потоки полистать, на тринадцати потоках оно пишет, что не удалось дизасемблировать (потому что нельзя прочитать память по адресу 0x11d или без такого уведомления), на двух там несколько страниц add %al,(%eax) без какой-либо полезной информации.
Предыдущая версия выдаёт пять сегфоултов и в остальном не отличается, как использовать твои дебаггинг-символы я не понял, в моих программах всё нормально работает.

Предлагаю перестать фигнёй маяться. Выпили вообще весь код шахмат или что там у тебя, и оставь просто инициализацию окна, вывод одной текстуры, какую-нибудь базовую обработку клаво-мышки, (другие использующиеся элементы - чтение файла, создание потока) и скинь мне (код и бинарник). Если код у меня заработает, а бинарник нет (а я ставлю рарку, что проблема в нём), то тебе нужно компилятор лечить.
Anonymous No.108241
>>108231
>Пусто.
Вот и у меня такая же картинка на виндовсе, я и сам не понимаю, почему ничего не выводится, когда должно выводиться.
Если бы написал bt (backtrace) до continue, чтобы посмотреть стек вызванных функций, то мне было бы легче определить проблему, сделай так, пожалуйста. Я не помню, там будут названия функций из дебаггинг-символов, но мне и адресов достатчно, а тот адрес, что на картинке это из другой библиотеки, видимо.

Код создания окна я, скорее всего, не кину, так как он делается через отдельную библиотеку и там много кода и в общем это не будет полезно.

Думаю, если так и не найду проблему, то стоит попробовать взять годот и на него переписать игру.
Anonymous No.108243
>>108241
https://pastebin.com/wDFqDvve
Anonymous No.108246
>>108241
> когда должно выводиться.
А если ты создаёшь консольную программу, которая вызывает один printf - это работает?

>через отдельную библиотеку
Что-то она не очень, видимо. По идее всё что нужно игре от оконной системы - функции для обработки клаво-мышки, событий сворачивания/разворачивания/перерисовки окна. И всё.
Anonymous No.108249
>>108243
О, ну всё понятно. Это из-за того, что я не читаю стандарты OpenGL.
Я опять забыл DisableClientState перед отрисовкой безтекстурных полигонов.
А я думал, что что-то с файлами не так.

>>108246
>всё что нужно игре от оконной системы - функции для обработки клаво-мышки, событий сворачивания/разворачивания/перерисовки окна. И всё.
Но ей-то ещё нужно GUI. А я как раз сделал временно приватную библиотеку wlgui (Widget Library GUI) с расширением wlut (WLGUI utility kit), которая создаёт виджет, связанный с окном, а потом он передаётся в отдельную функцию для вызова отрисовки и обработки FPS раз в секунду.

Ну-ка, попробуй, пожалуйста, это: https://drive.google.com/file/d/1CJVU9MobmRb25hm3OH2oS04zEsdoP_JI/view?usp=sharing
SHA256: 3d41c33ec4441ae268c359bf58db14b8e80f0d472c96ea517fbc72444bdaf047
Anonymous No.108257
>>108249
Не работает визуально таким же образом.
https://pastebin.com/EMkBMUug

>Я опять забыл DisableClientState перед отрисовкой безтекстурных полигонов.
А мог бы зашить это в код структуры. Ты просто вызываешь для структуры метод (вызываешь функцию с указателем) нарисовать, и оно само внутри переключается - ты даже не видишь этого. Один раз в коде делаешь структуру с методами для безтекстурных штук, и всюду её используешь - ошибку допустить можно только в одном месте, очень просто находить и отлаживать.

Прикрути printf("Error: %s\n", glewGetErrorString(err)) или хотя бы простой glGetError, чтобы номера ошибок смотреть. Оно показывает такие штуки, как DisableClientState. А ещё если ты забываешь DisableClientState - программа от этого не начинает вылетать - просто показывает чёрный экран ничего не рисуя. Ты можешь вызывать какие угодно функции opengl с любыми аргументами в любой комбинации - оно будет сыпать ошибками в glGetError, в некоторых случаях зависать - но вылетать не будет. Если не передашь какой-нибудь glTexSubImage с некорректным адресом, конечно.
Пост отредактировал Anonymous
Anonymous No.108264
>>108257
Теперь в той самой гуи-библиотеке происходит такая ошибка. Я исправил её.

Пожалуйста, проверь это. Уверен, что это всё и теперь, по крайней мере, главное меню запустится.
https://drive.google.com/file/d/1Qv5O0X0e3J6pRcnHBbb8S2FORyewdzDR/view?usp=sharing
SHA256: 84f9b261a48b640b177b459005a822aefa8b5ee154ecfddb43995be8e1227be4

>А мог бы зашить это в код структуры
Да, чего-то я всё время рисовал прямо в коде. Видимо, мне стоит сделать отдельный графический движок, абстрагированный от растеризаторов, будь то OpenGL, Vulkan или какой-нибудь софтрендер. И уже поверх него делать и игры, и ГУИ-библиотеку. Но именно эту игру мне уже не хочетсят переписывать под новый графический движок.
Я, теперь уже, посмотрел на glGetError, но он во всех случаях выдавал ноль.
>программа от этого не начинает вылетать
У меня на виндовс-машине вылетала, думаю, это зависит от драйвера.
Anonymous No.108271
15847187657880.jpg (40 KB, 600x600)
>>108203
>HTML
>язык программирования
Anonymous No.108272
15847188443100.png (7 KB, 587x231)
15847188443931.png (3 KB, 322x208)
>>108264
Запускается, музыка играет, кнопки нажимаются.
Снова шрифт утонул, и ползунок при запуске в неправильном положении, дублируется надпись на 1 лвл, пешки иногда стакаются на одной клетке, вылетела когда хп закончилось (вылетела с steam_SetAchievement, хотела выдать firstblood).
Anonymous No.108287
>>108272
Ура, наконец-то я смогу отправить в стим в четвёртый раз на ревью. Мне стыдно за то, что я их считал врюшами, которые не хотют пропускать игру из-за её простоты и пишут всякое про запуски.

>шрифт утонул
Это выглядит так, будто текстурные координаты сдвинуты на полпикселя, но я незнаю, где это в моём коде вообще может быть.
>ползунок при запуске в неправильном положении
К сожалению, я пока не реализовал это, потому что придётся отдельный коллбек SetValue для ползунков доделывать.
>пешки иногда стакаются на одной клетке
Да, у меня такие проблемы во всех фигурах. Когда выпущу стим-страницу, может быть, буду добавлять уровни и шлифовать саму игру.
>вылетела когда хп закончилось
И тут я забыл сделать проверки, инициализировался ли подключение к стиму.
Anonymous No.111117
Выпустил обновление Industriworks v0.3.2:
https://steamcommunity.com/app/1143340/allnews/
https://www.youtube.com/watch?v=MWLr6q06NAI



Я не мог рассказывать о прогрессе, который был недавно, потому что админ убил борду и, соответственно, я не мог писать.
Непонятно только, зачем он оставил возможность постить в клирнете. Так бы вайперы разбежались по домам, а аноны вернулись через пару дней. Неадекватное поведение.
C++ засранность Anonymous No.111281
Смотрел разные проекты на C++ разных людей (с гитхаба всякое скачивал). Везде сходная картина - свалка из файлов .cpp и .h вперемешку. Это вообще нормально, разводить такой срач в проекте? Может, мне просто не повезло и на мойм пути попадались одни неряхи или это сам язык C++ способствует разведению бардака?

Это основная причина, что отпугивает от C++. Зачем они создают СТОЛЬКО .h-файлов? Нельзя ли без этого? Как с этим справляться? В самом деле, невозможно же разобраться, где что находится. В проектах на других языках (разных) ничего подобного этому не замечал.
Anonymous No.111287
>>111281
>Зачем они создают СТОЛЬКО .h-файлов?
Чтобы снизить время компиляции до разумного, мне кажется.
Anonymous No.111299
>>111281
>Нельзя ли без этого?
Можно, но зачем?
Anonymous No.111373
>>99062
>когда на питоне я ждал несколько минут, пока отрендерится.
Попробуй нумбу (модуль numba). Я и не знал, сейчас случайно в питонотреде увидел упоминание и как бы мне не нравился питон - получается что это довольно эффективно - ты пишешь весь код на питоне, при это весь высокоуровневый код (где много строк кода и мало реальных действий) на обычном питоне, а ресурсоёмкая часть где очень много действий приходится на малый кусок кода без существенных изменений работает почти со скоростью си.
Сам модуль весит порядка 10 мб (он включает какой-то минималистичный llvm), и теперь хочу сделать себе скриптованый си-подобный язык с jit-компиляцией - если там всего 10 мб без зависимостей хватает для компилятора.

Скопирую часть поста из питонотреда с замерами:
На другом говне с крупными numpy-массивами (больше математики, меньше вложенных списков в аргументах функций и другого говна).
Ванилька: 9.046 секунды
Нумба: 0.831 секунды
Нумба с указанием типов в функциях: 0.374 секунды
Нумба с указанием типов в функциях и приведением кода к си-стилю: 0.064 секунды
Это в 150 раз прирост. У меня есть этот же код на си строчка в строчку, и он работает в 300 раз быстрее питонного. Получается всего в два раза отставание от честно скомпилированного кода, это при том, что часть кода не компилируется. У луа похожий результат был, тоже отставание в два раза при jit-компиляции.
Anonymous No.111636
>>111281
>Зачем они создают СТОЛЬКО .h-файлов
Код чище выглядит.
Anonymous No.112459
Удачно админ воскресил борду.
Я выпустил версию v0.3.3 Индустриворкс в стим: https://steamcommunity.com/app/1143340/allnews/

Надо перекатываться на v0.4, такой список фич подобрал:
0. Бой.
1. Выгрузка чанков.
2. Поворот alListener.
3. Физику исправить.
4. Дроп с мобов.
5. Поселения гоблинов.
6. Факел на стенах.
7. Прозрачности сортировка.
8. Больше предложений торговли у гоблинов.
9. MP потребление големами.
10. Больше звуков с freesound.org.
11. Мануалы. (чтобы появился гемплей).
12. Глубина в слотах.
13. Бельт.
14. Майнинг големом.
15. Генерация жил (чтоб голем майнил).
16. Фея старта.
17. Генерация стартовых ресурсов как упавшего космического корабля с игроком.
18. Двери.

Если я буду добавлять по 2 фичи в день (что более реалистично, чем раньше), то смогу даже за 5 дней до конца месяца выпустить первую версию с геймплеем.
Потом пора начать прокачивать боёвку и добавлять враждебных мобов. Помните про порченных? Думаю, что после смерти им надо рисовать огненно зелёный католико-подобный крест как в Евангелионе.

Не забывайте посматривать за облаками во время карантина. (картинка запрещена)
Anonymous No.112467
>>112459
Во-первых, как мне это установить на Федору?
Во-вторых, откуда спиратить, чтобы не платить 2,39 евро?
Anonymous No.112471
>>112459
Хочу одну игру бесплатно в стиме раздавать - и ещё использовать стим для соединения (это p2p сессионка на 2/4 человек - сервера не нужны, просто айпишники пробросить и список друзей со статусами показать), этот пункт не обязателен.

Что для этого нужно стиму от меня? Им нужно заплатить сколько-то денег, составить какое-то описание с картинками, что-то ещё? Нужно ли показывать код или просто бинарники с файлами ресурсов подходят? Или для бесплатных игр (то есть таких, с которых сам стим гарантированно ничего не получит) там более жёсткие требования?
Anonymous No.112484
>>112467
>как мне это установить на Федору?
Самый лёгкий способ — установить steam твоим пакетными менеджером или скачав с их сайта, получить ключ (я могу продать тебе за спасибо или за хороший отзыв, кидай почту). Если твоя федора может запускать ELF, умеет в опенгл, то скорее всего билд для линукса запустится. Если нет, то можно скачать версию для виндовс и запустить через стимовский протон. Ещё можно использовать steamcmd из стимовского SDK и используя свой аккаунт скачать файлы игры, а дальше запустить через вайн виндовс версию или обычными методами линукс-версию.
Я не делал жёсткого DRM, у меня даже подключение к стиму опционально, то есть если игра не найдёт запущенную сессию, то не закроется.

>>112471
Тебе придётся внести 100 долларов fee. Потом да, страницу и ещё некоторые ресурсы нарисоватьподрихтовать и выпустить. Твоя страница должна пройти ревью за 1-3 дня, а потом пробыть минимум 2 недели видимой, чтобы игру можно было выпустить. Тем временем ты с помощью стимовских cli-инструментов (на самом деле там через сайт можно и zip кинуть, но может быть не такая гибкая настройка, я ею не пользовался) создаёшь билд (бинарники и ресурсы) и отправляешь на ревью на 1-5 дней. Они запускают с чистых (но не всегда) систем, для которых ты включил поддержку (SteamOS + Ubuntu, Windows, MacOS) твою игру и если всё нормально, то ревью проходишь, иначе тебе кидают сообщение что не так, что надо исправить и ты можешь поновой ревью отправить.
Требования от платных или бесплатных игр, вроде бы, одинаковые. Кстати, тебе, скорее всего, всё-равно придётся ввести свои финансовые и паспортные данные.
За вопросами обращайся к стимовской документации: https://partner.steamgames.com/doc/home
Anonymous No.112984
Я, кстати, чессмейтов выпустил.
https://store.steampowered.com/app/1265110/Chessmates/
Можете взять ключ для внутреннего микроинфлюицинга: GBCGH-ZKJ3N-CQVRM
Anonymous No.113036
15875399603480.jpg (5 KB, 100x100)
>>112984
В чём прикол этих шахмат?
Anonymous No.113042
>>113036
Можно попробовать денег заработать.

А вообще, если бы я взялся всерьёз за нею, то было бы 50 уровней с катсценами, улучшенной графикой и сюжетом. Но я этого не сделал.
Anonymous No.113044
>>113042
>Можно попробовать денег заработать.
Сейчас столько мегатонн игрокала и индикала в стиме, что вряд ли ты заработаешь сотни тысяч на своей игре.
Anonymous No.113045
>>108271
Слы, а че фронтенд-разработка не програмирование че ли?
Anonymous No.113046
>>113045
А че программирование че ли?
Anonymous No.113049
>>113044
Да, поэтому надо бросать и Индустриворкс (добавить немного того, немного сего) и делать новую игру. Про нефтедевочку
Anonymous No.113057
15875706796190.jpg (40 KB, 600x600)
>>113045
Фронтент разработка на html? Что?
Anonymous No.113058
Есть мысли по созданию текстового квеста.
Чисто технически думаю сделать через консоль на Си. Опыта написания нормальных приложений на Си вообще нет, так что это может стать препоной.
Самая большая часть работы уйдёт на выдумку истории. Она должна иметь хоть какую-то изюминку, а то перед юзером будут только листы текста.
Anonymous No.113059
>>113058
>Чисто технически думаю сделать через консоль на Си.
Говно. Даже упоротая жаба заменила символьный вывод в дворфах на псевдосисвольный через гл.

>перед юзером будут только листы текста
Лучше иллюстрации юзай, а описательного текста наоборот немного подавай. ВН так и делают получается довольно атмосферно иногда.
Anonymous No.113060
>>113049
>Про нефтедевочку
Кто это?
Anonymous No.113066
>>113060
Персонаж рождённый моим мозгом в полудрёмном состоянии после интересного сна.
Anonymous No.113067
>>113059
>на Си
Сипипи получше будет.
>через консоль
Тогда 97% ПК игроков не смогут запустить.
Можешь попробовать renpy, но там на питоне.
Anonymous No.113178
>>113067
А в чём проблема с консолью у 97%?
Anonymous No.113190
>>113178
Они не смогут её запустить.
Anonymous No.113412
Хочу сделать рейтрейсер на GLSL. Как это лучше организовать? Планировал при каждом изменении сцены, пересобирать новый код шейдера, а через юниформы передавать положения объектов и камеры.
Anonymous No.113429
>>113412
Лучше никак не организовывать, это технологию в ближайшие 10 лет не стоит откапывать для рендеринга в реальном времени.
Какая версия opengl? Какая сложность сцены и разрешение экрана?
Anonymous No.113441
>>113429
Мне что, теперь тени учиться маппить? Как же деды на досе делали рейтрейсинг и всем было норм?
На моём процессоре удаётся 2 шара рисовать в 1200x800 в 15 ФПС. Вот я и подумал в GLSL всё перенести, чтобы лучше распараллелить.
Версию желательно 330-430 (а это важно?) Сложность сцены — несколько десятков мешей с парой тысяч треугольников. Разрешение 1920x1080
Пост отредактировал Anonymous
Anonymous No.113444
В моём софтрендерном рейтрейсере все лучи для картинки 1200x800 просто не успевают перебраться в один поток за 60 ФПС. До 30 ФПС доходит, для 60 надо 3 потока. А чтобы что-то ещё и отрендерить...
Anonymous No.113493
15880089534830.png (14 KB, 391x344)
15880089535751.png (86 KB, 1190x832)
15880089536112.webp (137 KB, 1146x969)
15880089537623.webp (107 KB, 1187x915)
Чёт я офигел с этого подсвеченного fload.
Я конечно понимаю что это случайно попало, но просто получилось что он подсветило опечатку в строке - которая мало того что не должна подсвечиваться, так это ещё другой язык, подсвечивать который эта ide не должна уметь.
--
Тыкаю рейтрейсинг и показываю какие картинки получаются, которые мне показались интересными.

>>113441
>330-430 (а это важно?)
Да. Можно хоть на версии 150 сделать, но там придётся совсем по другому танцевать, чем на 430. К тому же на 430 структуры более подходящие для подобного есть, так что скорее всего при той же вычислительной мощности оно будет работать резвее раза в два, чем если сделать через подход 150 версии.
>с парой тысяч треугольников
Сможет работать на средней карточке, скорее всего - если просто картинку получить. Вообще под сложностью я имел ввиду какой там ретрейсинг - если там размытые стёкла, или множественные отражения лучей ещё по каким-то причинам.
Вот четвёртая картинка - там тени рейтрейсяться и оно сработает хоть для тысячи треугольников в 60 фпс. Отражения тоже должно быть просто сделать.

>А чтобы что-то ещё и отрендерить
А чтобы просто отрендерить без освещения по идее должно и процессора со скрипом хватать.
Anonymous No.113494
15880091718220.webp (129 KB, 1583x1047)
И ещё вот. У меня дико неоптимизированно всё (во всем местах грубый прямой перебор, лол) и там есть где улучшить раз в десять, если не больше, но в полноэкранном вот это чудище выдаёт 1-4 фпс. И это мне ещё длину вторичных лучей пришлось ограничить (потому что длинные тормозят и выглядят уродски из-за недостаточного количества лучей)
Как я и сказал - забыть и закопать на ближайшие 10 лет.
Anonymous No.113514
15880479204800.webm (18253 KB, 1750x1040, 00:00:20)
А вообще пожалуй возможно за разумное время просчитывать карты освещения. Памяти сейчас в карточках нереальное количество - просто к каждому полигону приложить карту освещения, чтобы они плавно в течении многих кадров пересчитывалась. Если геометрия измениться - освещение пересчитается, но в течении нескольких секунд.

То есть выпуск вторичных лучей заменить на одну выборку из текстуры - что сильно увеличит производительность (заменяет n2 на 2n по сути). А саму текстуру плавно модифицировать (только те, которые видимы - и только тот мипмап, которые сейчас используется). Из-за этого освещение вызванное вторичными лучами будет в два раза дольше обновляться - но при этом оно будет намного слабее связано со сложностью сцены, и с количеством отображаемых в данный момент на экране объектов.
Вроде бы я продумал каждый фрагмент кода. При отрисовке кадра в дополнительных буферах помечается где и какие пиксели какой текстуры - и эти самые пиксели этих текстур обновляются.
Возможно можно даже ещё усложнить подход - по мере приближения к объектам для них создаются текстуры (всё большего разрешения по мере приближения) и удаляются по мере удаления, тогда если камера двигается не слишком быстро, то вдали обновить небольшую текстуру будет очень быстро, а к моменту когда подойдёшь к ней близко там уже всё обсчитается с достаточным разрешением.
Кажется, я уже шизу какую-то несу в плане связанности слов.
Anonymous No.113593
15881326311640.webp (103 KB, 1756x979)
Немного улучшил алгоритм в плане качества. Возможно, теперь оно даже "оптически реалистично", а не просто правдоподобно.
Это только вторичные лучи.
Тащусь от того, как это выглядит, по правде говоря.
Anonymous No.113846
libassimp говно
Anonymous No.113867
tinygltf говно и рак
Anonymous No.113871
Какой же tinygltf тупой. Зачем делать такой софт? Это же неудобно как минимум. У него ещё свыше 600 звёзд на гитхабе.
Я просто не понимаю. Зачем?
Anonymous No.113872
>>113846
Почему? Криво экспортит проприентарные форматы на которые даже спеков нит?
Anonymous No.113951
>>113872
Не импортирует вообще. Говорит, что импортировал, но когда пробую обратиться к фейсам, сегфолт выходит.
Anonymous No.113952
>>113951
Может, ты упустил какой-нибудь шаг вроде выделения памяти под буфер?
Anonymous No.113960
>>113952
Скорее всего да, но разве я признаюсь в этом?
Anonymous No.114582
ОП этого треда теперь на дваче обитает.

Для тех кто не посещает борделей обесняю почему: на местном /гд/ новая политика администрации - каждый тред разработки игоря получает ПР через канал двача в телеге/твитор/контактик. Из-за это там произошел бум игростроя - все киррилы создали себе по треду и начали наконец делать игры. А еще там ацкая мочерастия - удаляют все неприятные посты по первому репорту, из-за чего нормальные срачи дискуссии на темы около-гд вымерли как класс.
Anonymous No.114583
>>114582
То есть его тут больше не будет?
Anonymous No.114584
>>114583
Ну почему нет, может зайдет еще позже.
Anonymous No.114592
>>114583
Хахахаха, ну вы и слоупочите)

Я заходил гибридно и на мейлач и на тучку, контенты полуразные-полуодинаковые пилил, если одинаковые, то текст слегка ориджиналил. Но потом админ убил тучку (клирнет-юзеры не поймут). И я не мог постить. Теперь даёт постить, но без картинок, из-за чего я очень долго не постил и не пощу.

Но самое главное, что я поработал и это оказалось эффективнее, чем делать игры. Забросил Ивс (мож когда-нибудь выпущу последнее обновление) и ещё одна игра про нефтедевочку под вопросом.
Если работать, вместо очень сложной и скучной разработки игр на C/C++, то доходы будут выше (по крайней мере, в ближней перспективе) и я смогу молнии кидать внутри банки (что уже и сделал).
Anonymous No.114593
>>114592
>слоупочите
Да не я тебя сразу пропалил, лалка.

>Теперь даёт постить, но без картинок
Говорят это проходит со временем.

>доходы будут выше
Самое главное кстати.
Пост отредактировал Anonymous
Anonymous No.115055
15896268348310.png (34 KB, 1200x800)
Я разработал новую технологию управления собственным сознанием и волей, благодаря чему смог продолжить делать свою новую игру.
Anonymous No.115059
>>115055
>новую технологию управления собственным сознанием и волей
Почему это так сложно? Из-за отсутствия обратной связи? Из-за синдрома художника - которому абсолютно не нравятся свои собственные рисунки?
Anonymous No.115072
>>115059
Не, из-за того что мне не очень нравится игры делать. Мне нравится другое делать, например, молнии в баночке. А сейчас и год 2020, это не 2011, где можно было валяться без дела, не беспокоясь ни о чём. И не средневековье, где можно было умирать по 3 раза в век. Времена поменялись.
Anonymous No.115098
15896736322290.png (38 KB, 594x396)
У меня мозг сломался.

Есть мир - в нём есть "слои" - каждый со своим набором объектов. Объекты должны взаимодействовать друг с другом для чего им нужно иметь адрес "слоя". Как это по нормальному сделать?
Предположим, у меня 20кк простейших объектов. Если слой один - то можно задать одну глобальную ссылку и это займёт 8 байт, при этом у всех объектов будет доступ к нему без каких-либо проблем. А если слоя два или больше? Хранить в каждом ссылку на слой, то это абсурд какой-то весом в 160 мб - у меня же уже есть слой, в котором записано, какие юниты в него включены - я не хочу дублировать информацию в двух местах, как и перебором (вычислением хеша) для каждого объекта определять есть ли он на данном слое.

Как это сделать по нормальному (без копии структуры объекта со всеми методами, но с другим значением статического поля), чтобы у меня было две глобальных ссылки и объекты знали какую именно им нужно брать? Ну, то есть мне и нужна копия объекта со всеми методами - но как это записать чтобы выглядело не угрёбищно, обрабатывалось единообразно и позволяло добавлять слои во время выполнения программы?
Перед обработкой слоя задавать значение глобальной переменной? Но так придётся объекты по слоям обрабатывать, и ещё со всякими thread_local переменными возиться.
Передавать во все методы объекта ещё и слой? Но тогда если там вложенная структура по типу мир->слой->чанк->строение->этаж->комната - то весь этот ворох тоже в метод передавать? Лучше уж иногда (при изменении слоя или чанка - то есть намного реже, чем сменяются объекты, которых сотни даже в одной комнате) менять значения шести глобальных переменных, чем рекурсивно передавать цепочку ссылок на каждом объекте.

Короче скажите что-нибудь, проблема супер-простая, но я уже два часа ничего не могу - голова сегодня просто отказывается работать.
Anonymous No.115102
>>115098
Совсем не понял, что ты имеешь.
Тебе никак недостаточно чанков? Чанки могут быть и многомерными, и соеденены как графы.
>абсурд какой-то весом в 160 мб
Ну а что ты хотел за 20 миллионов объектов?
Anonymous No.115103
15897028877590.webm (646 KB, 1200x800, 00:00:15)
Начал добавлять диалоги.
Хотел взять stb_truetype для рендеринга, но когда увидел, что это header-only рак, сразу расхотелось. freetype может лицензироваться под BSD-like лицензией. Лучше его возьму, чем недоделанную библиотеку.

Я потерял код, где когда-то рендерил строки. Пришлось писать заново. Очень долго бился с багом, которого не существует. Баг оказался у меня в голове.
А потом в пытался сгенерировать опенгловскую текстуру из-под другого потока. Ох уж этот опенглогулаг.
Anonymous No.115117
>>115102
Я не хочу в структуре объекта хранить указатель на материнскую структуру (слоя или чанка). И передавать во все методы его тоже не хочу - хочу использовать что-то вроде глобальной переменной - которая одна и видима для объектов.
Заголовок спойлера
struct lay;
static lay* current_lay;

struct obj{
//lay* pare_lay;
//obj(lay* p):pare_lay(p){} //<- Не хочу вот так, очень сильно не хочу

void _(){
current_lay; //<- Хочу вот так, но для двух слоёв.
}
};
static std::vector<lay*> current_lays;

template <int n>
struct obj_n{
void _(){
current_lays[n]; //<- Или хочу вот так, но чтобы это работало не только с constexpr числами,
// впрочем, это решаемо и constexpr будет достаточно
}
};

struct lay{
std::vector<obj> a;
};

struct wor{
lay l1,l2;
};

int main() {
wor test;
current_lay=&test.l1; //<- Хочу вот так, но для двух слоёв.
return 0;
}
Anonymous No.115119
>>115117
Сделать массив слоёв в глобальных переменных?
Кеширование, может ещё?
Anonymous No.115120
15897117320890.png (101 KB, 410x466)
15897117321121.png (414 KB, 994x762)
Еле сделал трусы для главной героини (и некоторых второ-, третьестепенных персонажей).
А ведь надо ещё нефтеюбочку, нефтешорты, верхнюю одежду, просто юбку, просто шорты.
А потом ещё и муржскую одежду делать.
А в конце, когда буду анимировать, окажется, что такая одежда им не подходит и надо всё переделывать.
Anonymous No.115123
>>115119
У меня есть глобальная переменная супер-объекта (я его как неймспейс использую) в котором содержаться все слои - то есть они и так в глобальных переменных - это по заданному объекту не позволяет узнать в каком он слое без какого-либо перебора объектов в каждом из слоёв.
Да забей, фиговый вопрос - голова вчера в самом деле не работала, а сейчас мне очевидно, что в том виде в котором это я вижу - в языке нет возможности для такого.
Anonymous No.115124
>>115103
>когда увидел, что это header-only рак, сразу расхотелось
Почему, кстати? В плюсах же отвратительная система модульности и организации файлов, а header-only в этом смысле намного логичнее и удобнее - выполнение код зависит только от кода, а не от того, какие файлы ты указал в своей системе сборки (где-то вне исходного кода). Мне кажется код должен полностью описывать работу программы, и все флаги оптимизации и прочего тоже должны быть в коде - а не где-то снаружи без какого либо единого стандарта.
Пост отредактировал Anonymous
Anonymous No.115130
15897144006300.png (171 KB, 581x602)
Всё это время в моём воображении нефтеюбочки выглядели гораздо более лаконично. Это не ядро игры, но главная фишка.
Надо что-то исправить.
Надеюсь, мне в стиме не выдадут adult only (когда даже незарегестрированные пользователи не могут посетить страницу), из-за того что трусы будут немного видны.

>>115124
Мой код состоит из большого кол-ва файлов. А хедер-онли библиотеки, получается, можно подключить только к одному файлу. И нельзя использовать его функции из других. Потому он и недоделка, мне .h надо переименовать в .cpp, а хедер самостоятельно создать.
Ещё и их компиляция может быть долгой, несколько секунд, Лучше раз скомпилировать .o и линковать уже его.
Я не знаю какая система модулей в C++, его использую как C с расширениями.
Anonymous No.115138
>>115130
>А хедер-онли библиотеки, получается, можно подключить только к одному файлу
Ко всем же.
А вот #define STB_TRUETYPE_IMPLEMENTATION нужно прописать только в одном из файлов. Там на самом деле есть как хедеры, так и код который нужно скомпилировать (один раз) - потому в одном из cpp файлов должен быть такой дефайн. И скорее всего можно за одну минуту разделить его на два файла - если тебе так хочется использовать угрёбищную систему из .h+.cpp и прописывать этот мусор в твоей системе сборки.
>Ещё и их компиляция может быть долгой
Ну это вряд ли (пропиши дефайн в каком-нибудь файле - который уже не изменяется), но после того как я подключил eigen - я понял что об этих 0.2 секунды компиляции stb можно вообще не волноваться...
Anonymous No.115183
15897420763640.png (209 KB, 628x657)
Зделол новую нефтеюбочку. Теперь она красивая, а не то недоразумение, что было.
И одежду лучше выдавить из кожи, а то слишком толстыми получаются. Я не очень разобрался с модификатором симуляцией cloth в блендере. Смог улучшить визуально новую нефтеюбку, но вся остальная одежда получается ненатуральной. Отходит от меша.

>>115138
Об этом я немного не подумал. Получается, я теперь смогу и GLTF загружать через tinygltf? Тогда уж лучше сразу с libassimp разобраться.
Но я всё-равно уже решил для нынешней игры просто запечь все анимации в 60 FPS (для большинства покупателей достаточно) и превратить их в obj+mtl.
Anonymous No.115531
>>111117
Звучит оно пиздец как отвратительно, конечно. Но выглядит на тройку с плюсом уже.
Anonymous No.115898
Я не делал игру, потому что снова устроился на работу.
Я понял, почему работать мне так не нравится. Всё из-за квантово-плавностного дуализма социума. Если работать, то надо постоянно поддерживать связь с работодателем, а там и пинг может быть высокий, и с оплатой могут возникнуть проблемы. Хорошо, что в современном мире возник биток, им мне и оплатили за работу, так как из-за политических ситуаций в странах, где мы находимся, это оказалось лучшим вариантом.
А вот если торговать, хоть на интернет-площадках материальными товарами, хоть в стиме нематериальными как Ивсом и Чессмейтами, люди просто проходят, они одиночные и их покупки квантовые, но если в общем, социум, дозу которого мне даёт стим рекламой и общий маркетинг, действует плавно и доходы плавные. Можно даже предсказывать.
Насчёт моих игр в стиме, я уже почти окупил одну из стоимостей стим-директа. Надо только на следующей скидке для Индустриворкса насосать несколько долларов и будет хорошо.
Эх, вот бы сделать какой-нибудь продукт, чтобы он давал пассивный доход — желание человека малых уровней.
Эх, вот бы сделать какой-нибудь продукт, чтобы он давал большой пассивный доход — моё желание. И я собираюсь его сделать, создав другие продукты на продажу в стим. В частности, игру про нефтедевочку. Надоело работать, но мне придётся ещё несколько месяцев это делать, чтобы не деградировать
Anonymous No.116058
>>115898
Но ведь твои игры - синоним выражения КГ/АМ. Я видел отзывы и обзоры, это просто пиздец. Я бы в такое и бесплатно-то играть не стал.
Anonymous No.116060
Хочу в будущем сделать новеллу в котором выбор действий будут влиять на игру, какой движок посоветуете?
Anonymous No.116063
>>116058
Но я делаю не старые игры, а новые.
И, может, ты, бордогосподин, и бесплатно не поиграешь, зато много людей в стиме платно неиграют!
Anonymous No.116064
>>116060
Такой движок пишется за 1 наносек.
Если не умеешь, то можешь попробовать Renpy или Годот.
Anonymous No.116074
>>116060
Напротив, скажу что нет ни одного движка где есть удобный функционал для разных последствий в будущем сложнее, чем "если ты сделал а и б, то добавить событие д". Только заранее выбранные почти линейные варианты.
И в ближайщее будущее такого не появиться, потому что как кто-то сказал - это ии-полная задача, а сейчас нужно вручную все варианты (и сочетания вариантов, которое растёт экспоненциально) прописывать - или же делать квесты не связанными, что выбор в прошлом влияет только на этот квест/событие, а во всех остальных прошедшее никак не отражено.
Anonymous No.116076
>>116064
>Годот
Хватит тролить этой парашей. Уже не смешно.
Anonymous No.116093
>>116076
А что ты ещё предложишь? На сипипи писать?
Anonymous No.116105
>>116093
Юнити!
Anonymous No.116108
>>116093
Чем плохо сисипи и что такого может предложить годот, чего нет в сисипи?
Anonymous No.116110
>>116108
У годота есть редактор и немного инструментов. В сисипи надо пердолить код в любой непонятной ситуации. Так-то вообще несравнимые вещи.
Anonymous No.116113
15905166116030.png (13 KB, 1098x214)
>>116110
Не я сравнивать начал же, ты первый зачем-то их рядом упомянул.

Годот это юнити в квадрате просто, ну его. Мне кажется движок для разработки их должен не заставлять писать весь код в себе через себя на своём языке - а должен представлять что-то вроде сторонней библиотеки, где ты пишешь свой код как ты захочешь, а движок просто помогает теме, позволяя в одну-три строчки создавать управляемую камеру или физический объект, который сможет взаимодействовать с другим по вызову одной строчки. То есть не код в окружении движка, а движок в окружении кода.
Anonymous No.116118
>>116113
>должен представлять что-то вроде сторонней библиотеки, где ты пишешь свой код как ты захочешь
Это ты фреймворк описываешь. Т.е такую библиотеку облегчающую работу, но не навязывающую себя как что цельное и замкнутое. Из фреймворков годнота это например SDL для крестоебов и XNA/MonoGame для уютного шарпа.

Движок еще включает в себя каркас приложения, полную систему менеджмента ресурсов, как в процессе разработки, так и рантайме и кучу специализированых инструментов - например пресеты для шейдоров или рабочую среду для систем частиц. У фреймворков нет прокачанных инструментов из коробки, и с ресурсами тоже надо думать самому.
Anonymous No.116132
>>116105
>2020
>использовать проприетарный софт не для роботы

>>116113
Тучую, по-хорошему, движок это библиотека с нормальной документацией, а не конструктор игр типа Годота, Юнити, Уечпа и ГеймМейкера. Зачем их называют движками, я не понимаю. Они же как раз используют движки — буллет, самописные графические, велосипедные ГУИ (впрочем это простительно, так как ещё может не существовать нормальной ГУИ-либы)

>>116118
>SDL
По-поему это на уровне мастхев для игр, написанных на языке программирования. Если только она не используют более высокоуровневую библиотеку, которая уже включает в себя SDL2.
Anonymous No.116212
>Игрово́й движо́к (англ. game engine) — базовое программное обеспечение компьютерной игры[1]. Разделение игры и игрового движка часто расплывчато, и не всегда студии проводят чёткую границу между ними. Но в общем случае термин «игровой движок» применяется для того программного обеспечения, которое пригодно для повторного использования и расширения, и тем самым может быть рассмотрено как основание для разработки множества различных игр без существенных изменений[2].
Anonymous No.116237
15906066288980.webm (1335 KB, 1200x800, 00:00:13)
Освободился от работы, теперь пора и игру делать!
Anonymous No.116240
>>116212
Вот так всю жизнь некоторым петуханам словари и инструкции заменяют голову. Давил сраных буквоедов как говно за то что они блуждают в трех соснах на творческойтм работе требуя ТЗ.
Anonymous No.116260
15906303559520.webp (230 KB, 1809x1015)
15906303562051.webp (133 KB, 1394x1040)
15906303562612.webp (203 KB, 1339x1020)
15906303563163.webp (140 KB, 1782x1066)
Пошаговые игры с квестами не для меня явно...
Anonymous No.116262
>>116260
Надо прост графику улучшить.
Но если проблемы в геймплее, то только бросать.
Anonymous No.116267
>>116240

>У вас неправильное понятие о том что такое движок, сейчас поясню как правильно
>...
>Суки падлы буквоеды!

Пошёл нахуй.
Anonymous No.116270
>>116267
Я не говорил какое понятие правильное, сажедаун. И тем-более никому его не навязывал.
Просто я для себя определился, что можно считать движком а что нет, даже если на заборе будет написано "ДВИЖЕК".
Anonymous No.116273
>>116270
Осади свои маневры, быдло. То блядь мне словари голову заменили, а ты Д'Артаньян, то блядь ты не говорил, какое понятие правильное и вообще ты не ты.
Anonymous No.116275
>>116273
Просто ты зачем-то влез, хуй знает зачем. Ничего толком не сказал и теперь тут пылаешь. Можно тебе было конечно не отвечать, но тут скучно и никого нет, поэтому продолжай постить говдноту.
Anonymous No.116338
Опять этот опенгл не работает! В одной программе рендерит в текстуру, а в другой нет.
Мне теперь придётся часть механик из диздока удалять, не будет порталов в двери и камер на диалогах!
Зачем эти ужасные люди создают опенгл? Нет, чтобы научиться в нормальный хардвар для рейтрейсинга, они опенглы растеризуют. Поганое быдло не хочет приостановить потреблядство растеризованного контента! Ну и хорошо, значит не буду им давать красивые игры, пусть покупают и играют в говно.
Anonymous No.116348
>>116338
Ты просто не умеешь его готовить. Всё там работает.

Ничего, скоро видеокарты окончательно превратятся в математический сопроцессор общего назначения (там не останется специализирован графических блоков традиционного растеризатора - будут только куда-подобные вычислительные блоки) и ты сможешь написать вам всё что захочешь - растеризатор, ретрейсер или ещё что-нибудь гибридное без потери части производительности.
Anonymous No.116358
15907141327930.webp (31 KB, 622x624)
Ищу напарника для повышения скилла.

Я говнокодер, кодить не умею и мне скучно.
Предлагаю придумать что-то очень глупое и простое, сделать на отъебись на си++ или питоне в течении нескольких дней за 5-20 часов и сжечь на перекрёстке, после чего разбежаться. Хоть змейку текстовую - начнём новое, если быстро закончим и захочется ещё. При этом составлять какой-то план, стараться следовать ему (мне понравилось отмечать галочки) и всё в таком роде на серьёзных щщах.
Подойдёт кто угодно (кроме криптошизиков с люниксом и тором), напарник по сути нужен только для мотивации, чувства вовлечённости и отчётности - можно просто убедительно говорить что "хочу вот это" или ругать меня; можно попробовать что-то нарисовать, спроектировать уровень для игры или запрогать какую-то часть (если научите кодить вместе).

Общаться предлагаю здесь или на дискорд-сервере wngd4n7 - я создам несколько каналов, там есть подстветка кода, можно прикреплять картинки и архивы с файлами.
Ещё раз повторю: цели получить какой-то результат - нету. Просто практика. С таким подходом можно не стараться что-то сделать хорошо "с заделом на будущее", не отвлекаться на перфекционизм и другие глупости - а просто закладывать всё костылями и пробовать.
Пост отредактировал Anonymous
Anonymous No.116361
>>116348
>куда-подобные
Лишь бы эпи к ним было свободное.
Я бы и сам сделал железо, которое может в рейтрейсинг, но для этого мне нужно много денег, тысячи долларов или даже больше. Я пытался заработать их при помощи геймдева, но как-то не получается. Из-за чего мой нынешний уровень — генерация плазмы в неглубоком вакууме и немного могу управлять ей магнитом. Собираюсь скоро ставить эксперименты по напылению. Как думаешь, может мне стоит открыть патреон, где я буду выкладывать технологию, а мне взамен денюжки на изучение технологии? Вот, например, мне нужен магний, чтобы научиться синтезировать чистый кремний, а денег на это не хватает! Может быть, если попросить с анонов и неанонов всего мира по доллару в месяц, то они пожертвуют мне?
Раньше я скрывал эту информацию, так как это как бы тайные знания. Но если я смогу получить их в обмен на передачу технологии в открытый доступ, то это неплохая сделка.
Anonymous No.116363
>>116361
Идея отличная, причем твои фанаты могут подарить всякие ништяки как например негоде ну тот который рекативные двигатели собирает на ютабе, не хочу его рекламировать но ты откровенно говоря должен быть ученным шизиком которому ничего не надо кроме исследовании, иначе как знать донатить тебе или нет, ведь ты можешь получить деньги и сидеть без дела
Anonymous No.116396
>>116363
>как знать донатить тебе или нет, ведь ты можешь получить деньги и сидеть без дела
Представлял это так: Сделать несколько постов про нынешний прогресс, показать плазму, печку, в которой можно плавить вещества и на каждые поступления с донатов указывать, на что было потрачено, также писать на что деньги нужны сейчас. А если донатов не будет хватать, но посты надо будет сделать, то можно скинуть, например, схемку какого-нибудь цифрового модуля.
Недавно я рисовал метамодуль, который умножает вектор на матрицу. Он очень простой, но слишком много транзисторов, получается, не будут задействованы. Поэтому, его можно превратить в полноценный АЛУ для одного типа, который в итоге будет поддерживать умножение и матриц, и матрицы на вектор, и операция SIMD над векторами, скалярами. Такой модуль можно и показать, а лучше и на верилоге написать.
>подарить всякие ништяки как например негоде
Это означает полную деанонимизацию. Впрочем, ничего страшного, всё-равно рано или поздно это должно было случиться.
Пост отредактировал Anonymous
Anonymous No.116422
>>116396
> Недавно я рисовал метамодуль, который умножает вектор на матрицу.
Зачем?
Пост отредактировал Anonymous
Anonymous No.116423
>>116422
Чтобы понять, как оптимизированно рейтрейсить. Там часто умножаю вектор на матрицу.
Пост отредактировал Anonymous
Anonymous No.116425
>>116361
> Я бы и сам сделал железо, которое может в рейтрейсинг, но для этого мне нужно много денег, тысячи долларов или даже больше. Я пытался заработать их при помощи геймдева, но как-то не получается.
Обрати внимание на вот єтого чувака https://www.youtube.com/watch?v=l7rce6IQDWs
Он научился делать простенькую видеокарту на макетной плате. Ну, суть не в видеокарте (у него много и других проектов) и не в не той плате, которая совершенно не подходит для подобньіх задач. Суть в том, как он монетизирует свое хобби. Он запилил сайт с магазином нужньіх для копирования его проекта запчастей, страничку на патреоне, канал на ютубе и, наверное, что-то еще.
Так вот, в видео и в статьях он рассказьівает и пишет всю теорию в подробностях, показьівает как собрать свою хрень, а онлайн-магазинчик ему нужен для того, чтобьі (пере-)продавать барахло с наценкой. Вот где монетизация. Желающие могут обойтись без єтого, искать детали и покупать сами, если не хотят поддерживать автора.
Пост отредактировал Anonymous
Anonymous No.116433
Ура, Ивс и Чессмейты в сумме набрали сотку баксов для вывода через месяц. Ещё и на летней распродаже насосу несколько десятков. Возможно, даже к концу года окупятся, будут же ещё зимние распродажи.
Я в любой момент могу доделать Индустриворкс до хотя бы немного удобного уровня, но для этого надо поменять интерфейсы, я свою библиотеку переделал. И выпустить в релиз, получив ещё немного.
Anonymous No.116448
>>116358
Погнали змейку на cpp+sfml.
Anonymous No.116594
Увидел https://www.youtube.com/watch?v=jDIuWv7ROi8 всё-равно палюсь красивое видео про мод майнкрафта.
Эх, вот подобная механика была бы норм в Индустриворкс, но я его уже убил.
Может быть, когда-нибудь и сделаю подобную игру. Можно сделать оно типа в клеточках или октодереве там реалистичные механизмы располагаются и крутятся. А частицы влияют на воксельный состав блока. И без всяких гоблинов и заклинаний.
Но сначала надо сделать игру про нефтедевочку. Потом в моём fifo идёт клон Noita, но про космические бои с орбитальными тактиками стрельбы. Начиная с этой игры, они уже должны быть написана на Laisi.
Вряд ли я примусь за ещё новые игры. Наверняка я к тому времени сильно разовьюсь и мои цели совершенно поменяются, игры отойдут на далёкий план.
Anonymous No.116598
>>116358
>кроме криптошизиков с люниксом и тором
что с ними не так?
Anonymous No.116716
>>116594
Да, хорошо иметь большие планы.
Anonymous No.116810
>>116598
Ничего не работает у них; приходится какую-то неюзабельную хрень использовать вместо месседжера с подсветкой кода и отправкой картинок по нажатию горячих клавиш.

Вообще, наверное я немного изменил мнение - потому что в целом я бы хотел писать более кроссплатформенный код, а мне бы в голову не пришло, что некоторые штуки платформозависимые. Полезная практика.
Anonymous No.117089
15913379118430.png (42 KB, 1200x800)
Пора стелить полы. Но как? У меня же выйдет некрасиво.
Не понимаю как можно моделировать в этом блендере.
Anonymous No.117149
>>117089
А как ты это делаешь?
Anonymous No.117187
>>117149
Сделал отдельный графический движок, в него загружаю меш и текстуру.
Пол пытаюсь делать в блендере, текстурки не знаю как для него нарисовать. Брусчатку, траву, плиточки.
Anonymous No.118030
15915526011690.png (57 KB, 962x703)
15915526011921.webm (762 KB, 1190x792, 00:00:39)
15915526012082.webp (62 KB, 789x728)
>>116448
Отчёт по змейке. Просто, чтобы потенциально чью-то мотивацию и интерес подогреть, мол что-то где-то делается.
Заголовок спойлера
При помощи sfml была разработана игра "змейка", были реализованы ... Тьфу.
В общем, к геймдеву это слабое отношение имело (сама змейка заняла минут 20 со всеми фиксами - остальное время ушло на меню и знакомство со всяким разным), но вот:
- Потыкали гит (я не умел (да и не умею) им пользоваться - какая-то очень не очень система контроля версий, можно было бы тот же функционал меньшим количеством кнопок сделать - к тому же по моей неграмотности она один раз затёрла все изменения за сеанс при смене ветки что никак нельзя было откатить (в отличие от удалённых файлов или чего-то в ide, что можно отменить через ctrl+z), было довольно странно такое со стороны система контроля версий, которая как раз вроде как всё должна сохранять).
- Потыкал sfml. Прикольно, что там сокеты кроссплатформенные. В голом с++ вроде таких нет вроде как.
- Пришла идея сделать онлайн-таблицу. Потыкал облако от гугла (всякие firestore/firebase и другие вещи) - какая-то чудовищная платформа, которую изучать дольше чем с++ с stl. Не осилил, просто не смог даже местный hello world запустить. Даже на питоне. Впрочем, она больше на всякие js/php ориентированна, насколько я понял. На этот моменте стало скучно, и потому всё остальное заняло почти неделю. Потом я вспомнил, что слышал что есть сервера, где можно питонокод запускать - и накидал какой-то простейший udp-сервер с двумя командами без защиты с которым может общаться крестовая змейка. Заработало с локалхоста, но где захостить в сети так и не нашёл.
- Под люникс компилируется - было много странных неожиданных вещей, которые на люниксе не компилировались, но в целом никаких серьёзных проблем.

Механика подсчёта очков такая, что очки считаются как перемножение двух функций от времени игры и длины. Теоретически максимум очков должен приходиться где-то на 90..120 секунду (в реальности больше из-за того, что игрок не робот). Игра заканчивается когда не остаётся свободных клеток или если врезаешься в стену. Можно откусывать хвост, при этом проседает модификатор очков от длины, но хвост превращается в клетки корма, что ускоряет завершение игры - то есть можно варьировать тактику - выбирая форсировать ли завершение игры или со старта набирать размер. Фрагменты геймплея представлены на файлах #2 и #3.
Автоматически ставится на паузу при потере фокуса, вроде как корректно отзывается на масштабирование, сворачивание и всё такое прочее - это sfml постарался.

В целом понравилось, что меня затащили во всякий git и firebase, для самостоятельного изучения которых я вряд ли бы нашёл мотивацию, и потыкали код на предмет кроссплатформенности. А ещё обвинили что я оформляю код и называю переменные не лучшим образом - поэтому по поводу кода обращайтесь ко второму, лол - я и не собирался его постить в общем-то, но могу запостить бинарник под виндоус.
Anonymous No.118035
У меня глупый вопрос: это личный тред ОП-а или сюда может постить кто угодно?
Anonymous No.118036
>>118035
Тут же есть тред глупых вопросов.
Второе - пусть попробует выгонит, лол. Оп редко пишет же, и вообще он не фанат геймдева и он на грани дропа постоянно, едва-едва находит силы хоть изредка что-то сделать, как мне кажется.
Anonymous No.118037
>>118030
>Потыкали гит (я не умел (да и не умею) им пользоваться - какая-то очень не очень система контроля версий
Пользуюсь локально Hg и он как по мне логичнее и удобнее. Еще ни разу не потер все мои файлы в отличии от гита. Недоумеваю почему так расхайпали гит. Даже мизантропом от этого стал, мол из всех альтернатив плебс выбирает самую неказистую.