Воскресенье, 24 Ноября 2024, 16:38

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
Storm54Дата: Четверг, 24 Апреля 2014, 03:05 | Сообщение # 321 | Тема: Реализация коллизии
постоянный участник
Сейчас нет на сайте
Вполне себе приемлемый вариант - представить тело объекта в виде точек, которые будут соединяться в отрезки. Коллизии проверять посредством пересечения отрезков. Я реализовывал такой механизм - работает довольно шустро при большом количестве объектов(в несколько сотен, а то и тысяч), расставленных по всей карте. Однако, здесь нужно грамотно подойти к оптимизации. Перебирать все отрезки - очень медленно и убьет FPS мгновенно. Поэтому первое, что нужно сделать: рассчитывать Bounding Box тела и проверять пересечения тела сначала с ним, а потом уже при необходимости(если пересекается с боксом) проверять пересечение с отрезками. В больших мирах такой оптимизации так же будет недостаточно, т.к. перебирать все-равно придется все боксы. Единственный вариант - поделить мир на огромные мета-боксы, в которые занести все объекты попадающие в этот Bounding Box и сначала проверять пересечение объекта со всеми соседними мета-боксами, включая и тот, в котором находится сам объект, а потом уже проверять пересечения уже с bounding box'ами каждого объекта, включенного в мета-бокс.

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


Сообщение отредактировал Storm54 - Четверг, 24 Апреля 2014, 03:24
Storm54Дата: Четверг, 24 Апреля 2014, 02:45 | Сообщение # 322 | Тема: Вопрос-[ответ] по Unity
постоянный участник
Сейчас нет на сайте
Цитата
А можно сделать обновления игры как в WOT ? Т.Е что-бы обновлялось каждый раз когда выходит новая версия причем нужно будет учитывать какая версия сейчас установлена. Как это можно сделать ?

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

Для начала разбиваешь всю игру на ассет бандлы, в которых будет храниться вся информация. Как именно будет игра разбита - тебе решать. Лично у меня отдельные бандлы под следующие категории: Модели, текстуры, скрипты, локации. Бандлы эти так же собираешь вручную, благо документации в интернете полно, да и в юнити уже есть классы, облегчающие этот процесс.
При запуске лаунчер должен запросить список всех необходимых файлов с сервера и их MD5, после чего пробежаться по всем файлам, указанным в списке и в случае отсутствия файла или несоответствия его контрольной суммы, скачать новый файл с сервера, заменив существующий.

На самом деле можно игру и не разбивать на ассет бандлы, но тогда в большинстве случаев придется обновлять практически весь клиент даже при самом незначительном обновлении.
Storm54Дата: Среда, 23 Апреля 2014, 00:23 | Сообщение # 323 | Тема: Защита от читеров - почему это так сложно?
постоянный участник
Сейчас нет на сайте
Класс Vector3 по большому счету содержит в себе 3 float переменных. Каждую переменную можно найти по отдельности, достаточно найти первую переменную - остальные по сути лежат в смещении +4 и +8 байт соответственно.

Цитата
Я под directx делаю. Значит wallhack сделать сложнее?

Меньше чем за 1 день сделают. Их клепают десятками. Как написали выше:
Цитата
Чаще всего работают, с рендером игры (D3D или OpenGL)

Так что технологии остаются такими же, соответственно и способы реализации те же.
Storm54Дата: Среда, 23 Апреля 2014, 00:14 | Сообщение # 324 | Тема: Набор в команду DarkLight
постоянный участник
Сейчас нет на сайте
Посмотрел информацию в группе.
Все, что удалось узнать:

Игра в стиле приключений, экшена и хоррора.
Игра будет страшной.

Она будет бесплатная.

Создатели:
DarkLight Team
Nightlight Games

Скриншоты представляют из себя простые сцены со стандартными объектами.
Странное сотрудничество у вас с Nightlight Games - для инди-разработчиков у них слишком много администрации - аж целых 4 директора во главе с ген. директором. Для сравнения: в газпроме и то совет директоров состоит всего из 11 человек, а ведь это огромная корпорация.
Storm54Дата: Вторник, 22 Апреля 2014, 23:50 | Сообщение # 325 | Тема: Защита от читеров - почему это так сложно?
постоянный участник
Сейчас нет на сайте
Конечно может. Либо посредством изменения функции, которая проверяет этот процесс, либо чит может запустить левый процесс с этим именем. В общем любую проверку на клиенте можно свести на нет. Сервер должен анализировать работу клиента и в случае некорректных данных принимать меры - других вариантов нет. На клиенте же реализовывать какой-либо античит - только усложнить работу создателям читов, тем самым снизить потенциальное количество читеров.

Сообщение отредактировал Storm54 - Вторник, 22 Апреля 2014, 23:52
Storm54Дата: Вторник, 22 Апреля 2014, 23:29 | Сообщение # 326 | Тема: Защита от читеров - почему это так сложно?
постоянный участник
Сейчас нет на сайте
Либо писать свой аналог возможностей Unity3D, то бишь систему загрузки геометрии, расчет коллизии и т.п. Либо создать специальный системный клиент, каждый экземпляр которого будет закинут в соответствующую комнату с игроками и будет контролировать весь игровой процесс. Собственно идентификацию такого клиента на сервере можно производить по очень длинному ключу.
Однако, тут нужно смотреть, насколько это будет затратный процесс. По сути можно ограничиться и одним экземпляром такого системного клиента - это позволит значительно сократить расход оперативной памяти, но реализовать такое приложение будет значительно труднее.


Сообщение отредактировал Storm54 - Вторник, 22 Апреля 2014, 23:29
Storm54Дата: Вторник, 22 Апреля 2014, 14:56 | Сообщение # 327 | Тема: Защита от читеров - почему это так сложно?
постоянный участник
Сейчас нет на сайте
Цитата
Вообще в Unity есть стандартная анти-чит функция, вызывается одной строкой. Только вот какой, я не помню.

Нету такого, т.к. универсального античита не существует. Разве что запрет какой-нить на инжект длл
Storm54Дата: Вторник, 22 Апреля 2014, 05:52 | Сообщение # 328 | Тема: Динамический прицел
постоянный участник
Сейчас нет на сайте
Не думаю, что кому-то очень охота переписывать текст с видео. Хотя бы оригинал сюда скинь для начала.
Storm54Дата: Вторник, 22 Апреля 2014, 01:15 | Сообщение # 329 | Тема: Не работает компилятор Unity [Решено]
постоянный участник
Сейчас нет на сайте
Странно, у меня либ в папке Assets нет. Кстати, чтобы долго не ждать реимпорта, можно попробовать заново импортировать только папку со скриптами
Storm54Дата: Вторник, 22 Апреля 2014, 01:07 | Сообщение # 330 | Тема: Защита от читеров - почему это так сложно?
постоянный участник
Сейчас нет на сайте
Первым делом нужно написать античит, который будет защищать от спидхака, включаемого посредством Cheat Engine, т.к. его попробуют первым делом. Так же желательно ввести защиту переменных, если, конечно, всякие параметры полета пули, урона и т.п. не считаются на сервере. Про анти аим можешь забыть - его просто невозможно написать, т.к. на сервере проверить, действительно ли игрок, а не программа, прицелилась точно в голову, невозможно. На клиенте же писать анти аим так же невозможно - любой античит на клиенте можно отключить. Это касается базовых античитов, которые должны быть в любой онлайн игре.
Хоть и читы на подобии спидхака и аима, бессмертия, скорострельности могут доставить неприятности другим игрокам, все же они не такие уж и критичные - достаточно сделать возможность кикнуть игрока с комнаты посредством голосования. "Обезопасить" нужно так же и сервер, чтобы он все поступающие данные проверял не только на валидность, но еще и игнорировал те команды, которые в принципе не мог прислать клиент.
Например:
Игрока убили и он ждет респауна. А что, если в этот момент чит отправит команду на стрельбу из оружия или метания гранаты?! В лучшем случае получится, что мертвый игрок стреляет и выглядеть это будет очень странно, а может и просто получиться краш сервера(тут все зависит от кода на сервере). Или, например, мертвый игрок садится в машину и начинает разъезжать по карте. На сервере такие моменты нужно учесть в первую очередь. Лично я написал несколько разных классов, каждый из которых обрабатывает только те команды, которые в нем описаны. Эдакий менеджер состояний получается.


Сообщение отредактировал Storm54 - Вторник, 22 Апреля 2014, 01:08
Storm54Дата: Пятница, 18 Апреля 2014, 10:55 | Сообщение # 331 | Тема: Не работает компилятор Unity [Решено]
постоянный участник
Сейчас нет на сайте
На последней версии Unity3D я столкнулся с похожей проблемой. Иногда проект не компилируется. Решения я так и не нашел - возможно в новой версии это исправят. Чтобы не пере-создавать проект, достаточно что-нибудь добавить/удалить в скрипте(например поставить пробел), чтобы контрольная сумма поменялась, тогда Юнити пере-соберет скрипты.
Так же там есть баг с удалением деревьев: если удалить последнее дерево с ландшафта, то редактор вылетает.


Сообщение отредактировал Storm54 - Пятница, 18 Апреля 2014, 11:07
Storm54Дата: Пятница, 18 Апреля 2014, 01:55 | Сообщение # 332 | Тема: Отдам исходники для unity3d
постоянный участник
Сейчас нет на сайте
Жужа, смотря что ты подразумеваешь под хорошим софтом. Конечно, я не могу создать в одиночку конкурента таким проектам, как Adobe Photoshop или Blender - у меня попросту не хватит сил и времени.
Однако, приложения, которые довольно хорошо справляются со своей задачей и при этом стабильно работают, я все же могу продемонстрировать.
Пару лет назад я делал 2D танки с мультиплеером. Я не хотел использовать готовые движки, дабы сильно не подстраиваться под них, поэтому взял лишь минимум: Qt библиотеки и HGE (хотя, по сути можно было использовать и DirectDraw c DirectSound) Демка
Помимо клиента и сервера в комплект входит несколько редакторов, в частности ModelEditor, VehicleEditor и MapEditor.

Управление в редакторе и самой игре:



Присоединение к серверу:



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


Сообщение отредактировал Storm54 - Пятница, 18 Апреля 2014, 11:07
Storm54Дата: Четверг, 17 Апреля 2014, 20:49 | Сообщение # 333 | Тема: Вопрос-[ответ] по Unity
постоянный участник
Сейчас нет на сайте
Чтобы не париться, можно создать паблик переменную LayerMask и в инспекторе выбрать нужные слои.
Storm54Дата: Четверг, 17 Апреля 2014, 20:46 | Сообщение # 334 | Тема: Отдам исходники для unity3d
постоянный участник
Сейчас нет на сайте
Да, с 10. Сразу начал изучать C++

Сообщение отредактировал Storm54 - Четверг, 17 Апреля 2014, 20:46
Storm54Дата: Среда, 16 Апреля 2014, 16:42 | Сообщение # 335 | Тема: Отдам исходники для unity3d
постоянный участник
Сейчас нет на сайте
Баги, конечно, жесткие smile
Например, можно сделать бесконечное здоровье, патроны. Можно врезаться в другого игрока и подлететь очень высоко.
Storm54Дата: Среда, 16 Апреля 2014, 14:56 | Сообщение # 336 | Тема: Отдам исходники для unity3d
постоянный участник
Сейчас нет на сайте
Цитата
То есть я могу обратиться к тебе за помощью ?

Можешь.
Storm54Дата: Среда, 16 Апреля 2014, 14:50 | Сообщение # 337 | Тема: Отдам исходники для unity3d
постоянный участник
Сейчас нет на сайте
Никто не купит
Storm54Дата: Вторник, 15 Апреля 2014, 23:34 | Сообщение # 338 | Тема: Какое самое большое число можно достичь в Unity3d
постоянный участник
Сейчас нет на сайте
ulong однозначно хватит
Storm54Дата: Понедельник, 14 Апреля 2014, 22:38 | Сообщение # 339 | Тема: Uni Game
постоянный участник
Сейчас нет на сайте
Цитата
добавьте дениса или меня в друзья
http://vk.com/id162252511 или http://vk.com/mixan2012

Это моя подпись. К командам не присоединяюсь.


Сообщение отредактировал Storm54 - Понедельник, 14 Апреля 2014, 22:38
Storm54Дата: Воскресенье, 13 Апреля 2014, 00:51 | Сообщение # 340 | Тема: Вопрос-[ответ] по Unity
постоянный участник
Сейчас нет на сайте
Либо у тебя все в очень большом масштабе, либо луч попадает в коллайдер игрока. Попробуй проверять пересечение только с определенными слоями.
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг