Помогите пожалуйста вашим профессиональным советом. Дали в универе задачу, думал что попадет другое, не повезло вообщем. Нужно расписать приблизительную архитектуру онлайн-игры типа Second Life и им подобных. При этом требование чтобы все ориентировалось преимущественно на Windows технологию. Задание свободное, т.е. можно предлагать любые технологии и методы реализации. В принципе если UNIX расширение не потянет изменений в Windows версии (если не нужен .NET), то пойдет и оно. Дело в том что я больше по другому типу игр, вообщем , так что не могли бы вы просто поделиться вашим видением проблемы. Из чего должна глобально состоять эта система? И на чем каждая из этих частей может быть реализована? Остальное если я буду знать что там в общем, я сам додумаю. Буду век благодарен!.
А как конкретно звучит условие задания?
Если от тебя требуется расписать примерную архитектуру онлайн-игры при полной свободе реализации,
то можно пойти самым лёгким путём - расписать приблизительную реализацию браузерной онлайн-игры.
Там совсем ничего сложного не будет.
Для отображения пользовательского интерфейса пойдёт всё что угодно от простого HTML до JAVA или Flash.
Серверная часть может быть реализована на PHP|ASP и прочем. Для хранения данных полюбому придётся
использовать SQL, а приём данных от клиента осуществляется простым GET и POST. В подробностях можно
нафантазировать разного бреда и может прокатить. Да и вобще применять можно абсолютно любые
технологии, лишь бы фантазии хватило. Главное не допустить ошибку выбора в плане быстродействия.
Если же от тебя требуется нечто похожее на Lineage или WoW, то я даже и не знаю что посоветовать.
В плане приблизительной архитектуры и актуальности могу лиш дать направление, в котором нужно думать.
Ниже приведу общеизвестные спорные и неспорные факты ,
а тебе нужно лиш выбрать то что тебе по-душе и разузнать где-нибудь
или спросить здесь о подробностях.
Клиент:
- Графика:
1) В плане графики сейчас используется в основном DirectX. OpenGL умер окончательно, а чистый GDI в играх
уже сто лет никто не использует (даже в онлайн-шахматах и покере разработчики поменяли курс от быстродействия к красоте).
2) Как нам в последнее время советует Microsoft - даже для работы с 2D графикой рекомендуется использовать D3D.
DirectDraw уходит в историю в след за OpenGL.
3) Если игра будет кушать много ресурсов, то обязательным моментом является распределение ресурсов в памяти.
Т.е. нужно заранее определиться, какие ресурсы будут храниться в оперативной памяти, какие отправятся
в видеопамять и какие будут попутно подгружаться с ЖД.
4) Оптимизация в плане требований. Если уж говорить о требовательности игры, то не нужно забывать что в мире есть
много людей , которые не могут себе позволить периодические апгрейды компьютера до надлежащего уровня или
просто забывают(или не знают) об этом. Поэтому ориентироваться нужно на конфигурацию компьютера
ниже среднего для минимальных требований игры.
5) Если делать что-то действительно серьёзное и по-настоящему трёхмерное (ты же сам сказал что ориентироваться нужно
на Lineage), то всегда упираешся в проблему физики игрового мира. Благо сейчас имеются такие передовые разработки
как PhysX от Ageia и всемирно известный HAVOK. Но не нужно спешить. В онлайн-играх обычно не требуется сильно-детализированная физика и есть возможность возникновения проблем с синхронизацией игрового мира у разных
пользователей. Иногда при "недоделках" или "переделках" у разных пользователей могут происходить разные вещи в игровом мире после одного и того-же действия. Это может в первую очередь привести к сбою игрового сервера или
ещё к чему-то нехорошему.
6) Онлайн-игры завоёвывают популярность не своей красотой, а захватывающим геймплеем,
поэтому в первую очередь внмиание нужно сконцентрировать не на графике, а на психологии и интересах
современного пользователя.
- Геймплей: 1) Нужно чётко определиться с жанром игры и детально продумать реализацию абсолютно всего ещё до написания кода и изготовления игровых
ресурсов.
Если это будет ролевая игра , то нужно заранее определить систему параметров персонажей , предметы инвентаря с обязательной разбивкой по классам и требованиям, ввести распределение игроков по классам и значению
в игре (я имею в виду будут ли все игроки равными или же будут существовать различные "касты", например воины, торговцы, стражи порядка
и местное самоуправление в лице суда и прочего в случае классической ролевой игры). Количество параметров персонажа должно быть не сильно
большим, т.к. запутается не только пользователь, но и программер при
отладке игрового баланса. Если параметров будет слишком мало - то
игра перестанет быть ролевой. За основу можно взять систему параметров
персонажа из Диабло и затем корректировать её под свой проект.
Она уже много лет является эталоном.
- Сеть
Для разных жанров онлайн игр есть разные способы построения сети
и способов обмена информацией.
Если за основу брать ролевые игры, то там используется Клиент-Серверная
архитектура сети и обмен данными идёт по TCP протоколу.
UDP крайне не рекомендуется использовать, а если уж появилась такая необходимость, то обязательно нужна проверка сохранности доставленого
пакета.
В случае с FPS можно использовать сеть типа Клиент-клиент. Обмен данными
также осуществляется по ТСР протоколу. Также следует уделить особое внимание синхронизации данных у всех игроков.
Сервер
Тут особо ничем помочь не могу. Всё всегда зависит от ситуации и от цели
проекта. Обмен данными я уже расписал выше. Хранить полученные данные
тоже можно по разному. Если это ролевая игра , то можно всё хранить в базе данных. Наиболее часто используемые данные можно держать в оперативной
памяти сервера. Этим можно избавить пользователей от длительного ожидания, а сервер от перегрузок.
В общих чертах думаю расписал понятно. Ничего более конкретного сказать не могу, т.к. не знаю что именно от тебя требуют.
Подробнее можно почитать на различных программерских ресурсах или потрепать яндекс с гуглем.
Советую также заглянуть на GameDev.ру
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения