Хотите узнать, как устроена изнутри видеоигра? (Сегодня, 10 июля, в 20:00)


С точки зрения программирования, так как я программист.

Есть у меня передача «Объясняю каждую строчку». Я там делаю видеоигру. И объясняю, как именно. Но в какой-то момент стало ясно, что объяснять то, что делаешь теперь, недостаточно. Поэтому на юбилейном, 50-ом стриме, я сделаю шаг назад, остановлюсь, окину программу целиком и полностью, и расскажу вам о том, как работает то, что уже имеется. А имеется один уровень, который можно пройти от начала до конца.
Если вы достаточно безумны, то тут можно даже это дело пощупать:
Ссылка на билд.
Системные требования..NET FrameWork 4.7.2, или Mono сопоставимой версии (если оно уже догнало .NET FrameWork 4.7.2)
OpenGL 3.0
OpenAL 1.1
Отжалеть для этой игрушки 150-200 мегабайт оперативной памяти (отладчик VS показывает, что оно жрёт 145 мегабайт).
Желательно иметь геймпад, работающий с XInput (читай, геймпад от XBox, потому что модели иных фирм, поддерживающие это API можно по пальцам одной руки посчитать).
Если геймпада нет, то можете в config.dat поменять Gamepad на Keyboard в настройке «ControlDevice». Да, ПК-гейминг для самых отбитых, very early access для самых суровых. К сожалению, комбинацию мыши и клавиатуры я миллиард лет не тестил =( Но работать должно, потому что когда я случайно включил клавомышь, оно как минимум не вылетало.
Разрешение и фуллскрин тоже в config.dat можно подкрутить, если у вас по этой части какие проблемы вдруг будут.

Буду рад видеть всех сегодня в 20:00

8 комментариев

Так, кому тут лекцию по программированию?
chelovekbeznika
0
а можно тлдр для ленивых смотреть ранние эпизоды? из того что успел увидеть — топдаун шутемап буллетхелл с продвижением по уровню
какой скоуп под капотом, коллизию сам писал? классы описаны минимально, заточенные ровно под то что делают, в стиле «есть метод Draw()» и «ентити игрока перемещается непосредственно считывая нажатые кнопки», или есть архитектура с заделом на будущее и вносом новшест без рефактора?
//тоже делал видео по своему геймдеву, но скорее для себя — очень слабо демонстрирующее как делаются игры, приятно видеть что гдето есть в-логи действительно познавательного характера, хоть и, мне кажется, слишком длинные для таковой роли
Spectre
0
50-ый стрим как раз и будет таким tl;dr =)
Но да, топ-даун шутер. Да, коллизию сам писал и чуть-чуть об этом жалею.
Классы ВСЕГДА должны описыватся минимально и затачиваться под то, что делают. Если класс делает две вещи, то это на самом деле два класса. Архитектура — это уже о том, как они организованы и взаимодействуют между собой. Задел на будущее имеет смысл только, если ты умеешь предсказывать будущее. Без волшебного стеклянного шара любому профессионалу приходится смиряться с тем, что рефакторинг и разработка неразделимы, как поход в туалет по большому и использование туалетной бумаги. Современные процессы разработки принято адаптировать под «всё течёт, всё изменяется».
В моём случае, я специально начал разрабатывать без железобетонного плана, потихоньку наращивая функционал, и постоянно меняя программу изнутри, пусть там и есть некоторые разумные предположения, на которые я опираюсь, чтобы облегчить себе жизнь.
chelovekbeznika
+1
Изменён автором
да я также начинал, но когда у меня движок несколько раз наруках загнулся изза переизбытка быдлокода и необходимости кчертям всё сносить и делать всё снуля чтобы добавить новое, таки пришёл к какой-никакой иерархии

под заточкой имел ввиду что есть класс «плеер» и внём прям непосредственно в Update() берутся нажатия клавиатуры и интерпретируются в перемещение, я сначала так получил поносу от неожиданности того что игрок у меня оказывается может умереть и пропасть из мира, что кодом не учитывалось, а позже — что я захотел ввести дебаговую летающую камеру управляемую как способ исследования мира, и так далее, в какойто момент архитектура уже стала готовой к таким непредвиденным сюрпризам, поэтому я щитаю сколапсировать пару абстракций на этапе оптимизации всяко проще чем по ходу введения новой фичи понять что нужно разлепить монолитный класс на разные уровни
Spectre
+1
У меня была обратная болезнь. Я с порога тонул в коде «на вырост», и в какой-то момент пришёл к тому, что разработка — это процесс создания и решения проблем, а значит, лучше их решать по мере их поступления, НО НЕ ПОЗЖЕ. Поэтому дзен вечного рефакторинга наше всё. Ну, и всякие разные SOLID'ы отлично помогают.
chelovekbeznika
0
А, ну и если есть какой-то роадмап на ближайшее будущее, я пилю всё с его учётом, конечно же.
chelovekbeznika
0
Если не забуду, то загляну. Может это мотивирует меня продолжить работу, а не валять дурака.
KaskeT
+1
Ну было реально интересно, особенно для такого невежды как я, смотреть вроде что то понятно, а с нуля это капец трудно
RAIN
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Скрыто Показать