krkd
> А ещё игра это не только код, но ещё и контент. Как тут будете мериться?
Игровой мир моей игры прямоугольный, чтобы пересечь его по диагонали из угла в угол по кратчайшему пути (почти по прямой) с максимальной скоростью нужно как минимум 3 минуты. Если задаться целью посмотреть на весь мир пробегая по нему с максимальной скоростью, потребуется 1 час.
Так можно получить представление о количестве контента в игре.
Вий
Хохохо
Была такая серия игр Just Cause, в первой части игровой мир был больше тысячи квадратных километров. И он вовсе не был пустой. И есть Скайрим, где вся карта это несколько десятков квадратных километров. Как думаешь, где больше контента и где больше затрачено человеко-часов?
krkd
За сколько времени в Just Cause можно было пересечь мир из угла в угол самым быстрым способом? Пешком где-то за 2 часа, но при этом в игре пешком - вовсе не самый быстрый способ передвижения.
Вий
> Это оценка стоимости разработки ufy10 по модели COCOMO, с учетом зарплаты разработчика $56,286 в год (это 400,000 рублей в месяц)
мне кажется что она бессмысленна и неверна. У нас как бы есть две стороны написания кода:
- линуксоиды на виме - у которых надо считать количество нажатий клавиш (горячих клавиш они нажимают больше чем напишут кода)
- вайбкодеры, за которых код пишет ии(индус)
ну и между ними пользователи современных IDE, в которых есть автокомплиты и множество других вещей и код пишется по первым его буквам
(кстати забавно что в шарпе предсказатель кода, который автоматом дописывал возможные будущие куски кода, был еще до появления ии)
war_zes
> мне кажется что она бессмысленна и неверна.
Это именно оценка, а не реальная стоимость. Гораздо лучше можно было бы посчитать, если бы я засекал, сколько времени я работал над проектом. Тогда достаточно было бы умножить длительность работы на стоимость часа, но я не засекал и не собираюсь, потому что это напрягает. И вот получается, что точную оценку получить невозможно, а примерную - легко, для этого достаточно всего лишь написать
scc --include-ext=cpp,hpp,h,cxx,hxx,c --sloccount-format --overhead=1
Я на асме много строк написал.
И что дальше ?
krkd
> Ноль. У него блюпринты.
Кто тебе сказал что в UE всё пишется на блупринтах?
Вий
> Blueprint
> А у тебя в проекте сколько строк кода?
Немного. UE - это игровой движок. Там нет смысла заново писать графику и физику.
В моём проекте используются различные плагины движка от Epic Games, вроде Mass AI для искусственного интеллекта.
Можешь посмотреть примерно как это пишется для использования такого плагина.
https://github.com/Megafunk/MassSample
Логика пишется в задачах и процессорах, которые оперируют над группой игровых сущностей с определенными признаками. Отбор для определенной задачи ведется по признакам и тегам, настройки для всей группы (архетип) хранятся в общих фрагментах, состояние хранится в обычных фрагментах.
для создания геймплейной логики можно использовать State Tree - дерево состояний. В состояниях выполняются задачи параллельно. Задачи могут выполняться каждый кадр или по событию. Задачи пишутся на C++. Фоновые процессоры (обработчики архетипов сущностей) пишутся тоже на C++.
Код процессора на примере движения по NavMesh
А вот задача
Cоздавать и редактировать состояния вставлять задачи State Tree нужно в редакторе.

На этом скриншоте показана простейшая логика. Полицейская машина по умолчанию двигается по полосам дороги как обычный трафик, в фоне работает процессор, который ищет цель. При обнаружении он сигнализирует сущность (машину) и та пинает задачу вызывая у нее реакцию на обнаружение - задача проверяет теги, заполняет фрагменты информацией о цели и вызывает делегат, который вызывает срабатывание условия перехода в состояние Chase - погоня. Далее управление берет другой фоновый процессор который оперирует сущностями с тегами "цель для преследования" и начинает управлять автомобилем с помощью PID контроллера по проложенному пути на Nav Mesh. Внутри состояния Chase также работает проверка видимости цели, которая контролирует видимость цели и вызывает реакцию условия перехода в состояние Search.
Игровой персонаж, который должен выполнять логику State Tree, должен иметь либо компонент State Tree в котором указан ассет State Tree с нужной логикой, либо, в случае Mass AI, компонент Mass Agent, в котором архетип имеет фрагмент со ссылкой на указанный ассет State Tree содержащий логику поведения.
Blueprint
> од процессора на примере движения по NavMesh
А как ты такую вставку с кодом сделал ? в окне и что б прокручивать можно.
Blueprint
> Кто тебе сказал что в UE всё пишется на блупринтах?
Человек с ником Blueprint обязан писать на блупринтах. Л - логика.
Человек с ником Blueprint
Может он печатает голубое :)
711
> А как ты такую вставку с кодом сделал ? в окне и что б прокручивать можно.
https://pastebin.com
После создания там можно скопировать embed код и вставить сюда.

Blueprint
А у тебя в проекте сколько строк кода?
А у тебя в проекте сколько строк кода?
Щото это начинает напоминать купи слона :)
Игра Мечты
Написано 17140 строк из предполагаемых 40000
43%
:)
Почти так-же.