В третьем уроке мы рассмотрим оператор switch - выбор
Оператор switch предназначен для организации выбора из множества различных вариантов. Формат оператора следующий:
switch ( выражение ) { [объявление] : [ case константное-выражение1]: [
список-операторов1] [ case константное-выражение2]: [
список-операторов2] : : [ default: [ список операторов ]] }
Выражение,
следующее за ключевым словом switch в круглых скобках, может быть любым
выражением, допустимыми в языке программирования С, значение которого
должно быть целым. Отметим, что можно использовать явное приведение к
целому типу, однако необходимо помнить о тех ограничениях и
рекомендациях, о которых говорилось выше.
Циклы предназначены для многократного выполнения какого-либо блока.
В С++ существуют три вида циклов: for, while, do...while.
Все они имеют сходную структуру и характерные особенности:
инициализация счётчика цикла, проверка условия цикла, увеличение
счётчика цикла.
Как создать новый квест, как сделать новые диалоги данная статья предназначена прежде всего для тех кто решился на глобальное изменение Сталкера ТЧ (принцип ее справедлив и для ЧН и ЗП)
Ниже представлен перевод статьи Дэви Моргана «So, you're designing
an MMORPG? Have you thought it through?». Перед тем, как объявить всему
миру, что вы собираетесь сделать MMO, следует хорошо кое-что обдумать.
В этой статье перечислены ряд вопросов, с очень сильным уклоном в
сторону виртуальных миров и MMORPG, как та, которую делает автор данной
статьи.
Вопросы собраны из книг Bartle «Designing Virtual Worlds», а также
Raph Koster «Theory of Fun», David Michael «Indie Game Development
Guide», вместе с архивами MUD-DEV-L (Bartle), и из других источников.
Bartle, Koster, и MUD-DEV-L являются очень рекомендуемым чтивом при
подготовке к созданию проекта. Без этих книг ваши ответы на эти вопросы
могут вполне погубить ваш проект.
Итак, вы решили сделать MMORPG? А хорошо ли вы всё продумали?
Сначала очень важные темы: Сообщество и Экономика. Если вы ещё даже
не рассматривали эти вопросы, то вам действительно следует вернуться
обратно к вашей маркерной доске, и оставаться там, пока вы не сможете
ответить на них в утомительно подробной форме.
Сообщество
Как вы продвигаете развитие сообществ? Лояльность к
проекту возникает из дружбы и лояльности к ДРУГИМ ЛЮДЯМ, не к игре:
хорошие средства связи, фильтрация чатов, взаимные зависимости в разных
масштабах, телепортацию к другу, общественная активность (рассказы
историй, например), общие вещи (веб сайт, собственность в игре),
жаргонный словарь, игра на музыкальных инструментах (в одинаковом
темпе), способы расслабиться, покупки в складчину (например, домов, чем
больше вклад, чем больше прав управления у этого участника), поощрение
дружбы, препятствование угнетению другими игроками/страданиям.
Насколько большими могут становиться сообщества?
(максимальный размер перед разделением на группы примерно 150, но
меньшие сообщества гораздо более дружные. Гильдии (огромные), группы
(максимум 12?), кланы, секретные общества, городские советы (средний
размер для битв между фракциями). Имеются выгоды как больших, так и
маленьких сообществ, следует поощрять и те и другие насколько это
возможно, чтобы закрепить игроков в игре. Избегайте приближения к
критическим размерам сообществ.
Касательно вышесказанного, насколько большими могут быть
города, созданные игроками, если таковые будут в игре? Будут ли там
городские советы, повелители, и т.д. Имеют ли NPC право голоса?
Как неформальные сообщества могут превращаться в постоянные,
формальные (оформленные средствами игры) сообщества? Эта операция
должна быть очень простой. Но в первую очередь простым должно быть и
формирование неформального сообщества.
Как игроки получают продвижение по иерархии (карьерной
лестнице)? Конечно, всегда есть причины руководить, но какова должна
быть мотивация, чтобы принять присягу верности лидеру? Служба в
интересах народа? Разделять с другими славу? Разделять угрозы?
Как вы поощрите членов сообществ расширять свои сообщества?
(Например сообщества, которые требуют особую комбинацию персонажей, или
критическое число персонажей одного типа, для рейдов, например).
Будут ли у вас инструменты для членов сообществ, чтобы
сохранять знания, и работать над какими-то проектами на благо
сообщества (групповые веб-сайты, списки рассылок с архивами рассылок,
журнал чата игры и просмотр журналов, групповое владение
собственностью, возможность управлять собственной структурой...)
Продумывали ли вы «службу знакомств» — способы помочь людям с
одинаковыми интересами найти друг друга, например, возможность отметить
себя, как желающего найти группу (или партнёра), или как уже нашедшего,
возможность отметить свою группу, как желающую найти дополнительного
игрока.
Знаете ли вы и будете ли поощрять использование других сообществ (Teamspeak, Skype, ICQ, Facebook, LJ)?
Экономика
Насколько стабильна игра? Отсутствие экономики происходит только когда нет стабильности.
Будет ли в игре рынок со спросом и предложением? Если вы
покупаете у булочника все его булки, поднимется ли его цена? Можете ли
вы потом продать купленные булки обратно булочнику и заработать деньги,
а также понизить таким образом цену? А потом купить ещё раз? И так
далее.
Нужна ли вам экономика? Если нужна, то закрытая или открытая?
Закрытая экономика не имеет инфляции, имеет рыночные силы. Однако такую
экономику сложно балансировать, большой шанс наделать багов, вероятно
не будет принята игроками и очень легко разбалансируется. Игроки ВСЕГДА
ломают закрытые экономики. Открытые экономики ВСЕГДА выходят из под
контроля через инфляцию. Привязка к экономике реального мира чтобы
зафиксировать цены, означает что ваша экономика будет подвержена
колебаниям цен на валюты реального мира, и ваш мир будет расценен, как
«нечестный» бедными игроками, если вы продаёте что-либо другое, кроме
косметики и нематериальных товаров.
Фиксированная или свободная экономика (полная негодность или гиперинфляция)?
Нужна ли экономика вашим NPC? Например, откуда берётся железо
для мечей, которые продают NPC? Гномы-шахтёры? Они тоже NPC? А как
насчёт муки для хлеба? NPC фермеры и мельники? Кто собирает всю эту
капусту? Что происходит с ней после сбора? Кто её покупает?
Различается ли стабильность экономики в разных регионах?
Имеется ли контроль качества и отбраковка на самодельных предметах, или они всегда 100% качества?
Сбрасываете ли вы когда-либо состояние мира?
Как вы справляетесь с мусором? Объекты должны разлагаться. В
то время, как вещи могут просто очищаться при выходе из поля зрения
всех игроков, оживлённые места всегда в поле зрения кого-нибудь,
поэтому сбрасываться не будут. Моб должен пойти и закрыть двери.
Сборщики мусора ускоряют разложение объектов, и собирают неразлагаемые
предметы, такие как квестовые объекты, в одном удобном месте для
дальнейшей очистки.
Теперь несколько менее головоломных вопросов. Однако, если вы не
справитесь с ответом на большую часть этих вопросов о вашей ММО, тогда
почему вы думаете, что вы готовы начать её делать? Вернитесь к дизайну,
о Великий Геймдизайнер!
Так как охватить все аспекты в своих уроках мне будет довольно сложно, да и займет это очень много времени, я решил выложить ссылки на литературу по С++ для самостоятельных занятий, в своих же уроках я остановлюсь только на основах С++ и примерах для Visual Studio 2008.
http://valera.asf.ru/cpp/book/index.html - довольно хорошая книга, где довольно подробно и простым языком описываются возможности и методы программирования на С++.
torrent.ru - крупнейший российский битторрент трекер, где можно скачать как литературу так и видео уроки для С++. Некоторые из этих видео уроков будут подробно нами рассмотрены.
Когда я разговариваю с людьми,
желающими заниматься разработкой игр, первое, что я слышу от них, часто
сводится к фразам "Как научиться делать игры?" или "Я хочу сделать игру,
такую как Quake/Everquest/Starcraft и т.д." Ответ на первый вопрос лежит
за гранью реального, так он должен охватить слишком много разных аспектов,
каждый из которых может быть бесконечно сложен.
Второе утверждение также нереально - в излагаемых в нем намерениях.
Starcraft, Everquest и Quake делались командами профессионалов, которые
распоряжаются бюджетами обычно превышающими миллион долларов. И что более
важно, все эти игры были сделаны людьми, имеющими большой опыт в создании
игр. Они не просто взяли и решили делать игры, после чего стали выпускать
хиты - они начинали с малого и достигли успеха своим трудом. Это то, что
нужно понять каждому, кто заинтересован в том, как научиться создавать
игры, - понять и повторять, повторять до тех пор, пока это не станет
частью ваших мыслей, такой, что вы бы не смогли представить себе жизнь без
этой очевидной, универсальной истины.
До тех пор, пока вы не поймете, что все навыки для разработки игр
изучаются накоплением опыта (что означает начинать с очень малого и
работать, чтобы продвигаться вперед), вы будете обречены на то, что вы
никогда не закончите ваши проекты. Даже те немногочисленные команды,
которым удалось закончить нетривиальный проект без того, чтобы сделать до
этого несколько небольших, должны были обучаться постепенно, просто они
затратили гораздо больше времени, чем могли бы сэкономить, если бы начали
с меньших проектов.
Ну что ж, приступим. Это первый урок по программированию на языке С++ в Microsoft Visual Studio 2008 SP1.
Создадим проект. Для этого в меню Файл выбираем Создать выбираем Проект (можно нажать комбинацию клавиш Ctrl+Shift+N) откроется окно как на рисунке 1. Далее выбираем консольные приложения Win32 (cм. рис.1) в поле Имя введем имя нашего проекта например urok1 в поле Расположение место где будут хранится наши проекты например e:\проекты vs\уроки в поле имя решения задается имя для решения оставим пока urok1 нажимаем ok откроется мастер (рис.2) нажимаем параметры приложения, выбираем тип - "консольные приложения" и дополнительные параметры - "пустой проект" нажимаем готово (рис.3)