Huldra

+249
с 2022

Arctic Engine и программирование игр на C++

36 подписчиков
28 подписок

Больше всего меня удивляет когда сначала авторы книг прилагают усилия чтобы объяснить как работают циклы, а только потом рассказывают про goto, только для того, чтобы отметить, что это зло.

Ответить

А зачем это все при обучении программированию? Это ведь вообще в стороне от языка

Ответить

Конечно, это очевидно.

Ответить

А какая именно математика 10 класса тебе встретилась? Функции математической библиотеки?

Ответить

Там очень токсичная тусовка, мои нервы не выдерживают общения с ними, но я с интересом слежу за темами знатных личностей типа ГрейФ24

Ответить
Huldra
в посте

О ужас! Он хранит магнитные дискеты на динамике!

1
Ответить

Тем, кто знает, что такое square волна можно посмотреть на исходный код функции Beep и, например, сделать аналогичную функцию для другой формы волны.

Ответить

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

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

Ответить

Подожди, у меня как раз все упаковано так, что все текстурки и модельки уровня, уникальные персонажи и прочее - в одном большом файле, который читается на полной скорости хоть на HDD, хоть на SSD, хоть на Bule-Ray (в крутых играх так начали делать лет 30 назад, когда появились CD диски вместо картриджей у приставок).

Общие для разных уровней персонажи, типа персонажа игрока - во втором большом файле.

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

Сохраненная игра - еще один (в зависимости от того что за игра - или маленький или большой файл)

Кстати, современные SATA SSD читать могут даже быстрее, 500MB/s и даже 600MB/s.

Ответить

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

Быстро работающие данные уровня и персонажей - аналогично.

Так как видеопамяти у среднего игрока редко даже 4 гигабайта, загрузка с ссд (400 мб/с на чтение) не может длиться дольше 10 секунд

Ответить

Случайный мелкоблочный доступ к данным на ssd в разы медленнее чем крупноблочный последовательный.

Ответить

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

Ответить

Будешь грузить через fscanf - узким местом будет парсинг

Ответить

Если ты будешь делать все правильно, то при загрузке данных с ссд диска самым медленным будет именно чтение с ссд диска

Ответить

Вопросы? В сообщении на которое ты ответил вопросов не содержится

Ответить

А потом люди удивляются что сейвы грузятся по 10 минут…

Ответить

Непонятно, в чем состоит критика goto

Ответить

Сейвы считывать через scanf?

Ответить

Так в этом вся разница: из майнкрафта дум не делается никак. А из простой 2д игры - выйдет, можно сначала сделать игру в 2д, изучить 3д графику и поменять тип графики в игре, при этом 2д изображение даже останется в игре в качестве карты. Разница именно в том что начав делать игру на C++ ее возможно доделать, независимо от того что это за игра. Нет таких игр которые в принципе возможно сделать и при этом нельзя сделать на С++

1
Ответить

Когда возникает проблема с циклической зависимостью. Так сразу очевидно зачем это нужно

Ответить

Запускаю калькулятор под windows, там нет ввода через cin или scanf, вообще ничего похожего. Запускаю doom 2016, там вводить вообще ничего не нужно, только бегать и стрелять, запускаю doki doki literature club, там вообще управление только мышкой.

Ответить

Ого! 2 года! Хорошо, что мы не спрашивали тебя, а просто брали и писали код и у нас ушло 2 вечера вместо 2 лет.

Ответить

Так а чем это будет отличаться от цикла while? Скомпилируется в идентичный набор инструкций

Ответить

Зачем нормальному человеку при создании игры получение числа?

Ответить

Вот смотри, после майнкрафта программировать не умеют люди и игру сделать не могут. После написания первых 3-4 программ на C++(музыка/рисование, синтезатор, игра) люди могут программировать и уже сделали одну игру. После 100 часов майнкрафта они умеют играть в майнкрафт, но не умеют делать игры и им это сложно. После 100 часов программирования на С++ они умеют делать разные игры и им это легко.

Ответить