Вот уже становится на что-то похоже. Можно подключить несколько клиентов и каждый управляет своим медведем. Медведи бегают... и пока это все.
План на ближайшие пару вечеров выглядит теперь так:
+ сделать лес + сделать мультиплеер + медведи бегают - сделать ближнюю атаку - сделать выпадание лута из убитых - сделать респавн игроков - сделать ботов - сделать респавн ботов - тестировать игру
три дня уже прошло?
Вий
Давай бро, старайся, тут уже пол форума затаили дыхание и ждут! Ты умеешь подогревать интерес!
Mirrel
Да. Я что-то немного не рассчитал свои силы на этот раз. Забыл инициализировать переменную с началом времен и целый день героически боролся с рассинхронизацией движения персонажей, аж целую лаг-компенсацию приделал.
Столкнулся сейчас с забавным багом: медведь начинает атаковать, посреди атаки решает что стоит далековато и собирается подойти поближе, тут же решает, что уже достаточно близко и снова начинает атаковать, делает замах и снова решает что уже далеко... во всем оказалось виновато смешение int и float координат. Координаты медведя при смене состояний - целые, а при принятии решения перестать подходить поближе и лупить - float. Пороговое расстояние было 150, на расстоянии 150.2 от цели медведь понимает, что он далековато и собирается подходить, переводит координаты цели в целое и волшебным образом оказывается уже на расстоянии 149.9 и решает что лучше бить, замахивается, смотрит на цель - а она там же где и была - на расстоянии 150.2
Вий
На будущее: пользуйтесь бэндикамом хоть(
В общем вот такое вот технодемо.
Тут честный массив-мультиплеер, есть смысл заходить в игру одновременно с другими людьми.
https://drive.google.com/file/d/1xcx8LIy_Zl5oHrRRjKBp7Rv7rrdpnDEd… w?usp=sharing
Посмотрите, бегают медведи или нет. Сервер иногда буду перезапускать чтобы старых медведей удалить...
Вий
Нужно дать возможность самому вводить имя, а то мне назначилось javaec, я побегал убил sun2sun и еще кого-то
Вий
> во всем оказалось виновато смешение int и float координат.
разве координата бывает дробная?типа две целых и две трети пикселов как два землекопа и две трети?
Самуил Яковлевич Маршак
Про одного ученика и шесть единиц
https://www.kostyor.ru/poetry/marshak/?n=102
Rikk
Конечно бывает. Допустим, в игре нужно чтобы монстр полз со скоростью 60 пикселов в секунду. Игра обновляет состояние 60 раз в секунду, так что если нужно чтобы монстр полз строго направо, можно каждый кадр увеличивать координату монстра на 1 и дробные координаты не нужны. Но как быть если монстр должен ползти под углом 45 градусов? Ведь это означает что каждый кадр нужно увеличивать координату монстра на 0.7. Если координата целочисленная и округление вниз, то монстр не будет двигаться. А если округление вверх, то монстр будет двигаться со скоростью 84 пикселя в секунду а не 60. Вот и приходится использовать дробную координату.
Rikk
> разве координата бывает дробная?
здравствуйте, приплыли...
Mirrel
> здравствуйте, приплыли...
экран меряется пикселами типа 768х1024. пиксел=целое число.объект ставится на точную позицию ху.
ну или немного непонятно как координата дробь.
Это называется субпиксельной точностью. Если надо сдвинуть картинку в сторону на полпикселя, то с одного края ряд пикселей фона окрашивается картинкой с прозрачностью 50%, а с другого края ряд пикселей картинки на 50% окрашивается фоном. А если сдвиг на четверть пикселя, то и закраска на 25%. Цветов в мониторе много и они используются для имитации большего количества пикселей.
Как вариант можно было б вывести формулу зависимости скорости от угла поворота и убрать дробные координаты. Или этот вариант стандарт в геймдеве? Такое уже наверное сотню раз делали.
Обновленный план такой:
+ сделать лес + сделать мультиплеер + медведи бегают + сделать ближнюю атаку - сделать выпадание лута из убитых + сделать респавн игроков - сделать ботов + сделать респавн ботов + тестировать windows-клиент с linux-сервером - убрать gui и звуки с сервера - нагрузочный тест с кучей ботов - нагрузочный тест с игроками - сделать дальнюю/магическую атаку