Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2013, 17:35   #1
scottie_
 
Регистрация: 04.07.2013
Сообщений: 5
По умолчанию Разработка 2D-игры

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

О самой игре. Идея довольно простая, но, на мой взгляд, не лишена интересных задумок, в принципе должна заинтересовывать игрока и побуждать к ее исследованию.
Основная ставка идет на соревновательный процесс. Геймплей будет выглядеть приблизительно так: игра разбивается на определенные временные отрезки, назовем их "раундами", примерно по получасу раунд. Существует несколько карт. Игроки разбиваются на несколько небольших команд (2-3 человека), цель - добыть некий кристалл, либо убив всех вражеских игроков, либо, собственно, первыми добыть этот кристалл, который будет либо хорошо прятаться, либо же его добыча будет происходить по принципу захвата и удержания "флага". В конце раунда игрокам начисляется опыт: основное кол-во делится между игроками победившей команды, а так же лично каждому игроку начисляется некоторое кол-во очков за его успешные действия: убитые противники, время удержания флага и проч. Опыт тратится на улучшение персонажа: покупка новой экипировки и исследование рун(об этом подробнее ниже). Весь инновационный процесс будет строится на двух основах: 1) боевая система 2) политика. Подробнее о каждой из них.

Боевая система. По задумке, каждый персонаж игры обладает некоей "энергией", высвобождать которую он может посредством магии. Энергия ограничена для каждого человека, ее размер и текущее состояние не указывается на экране, а игрок должен сам чувствовать, сколько энергии потребуется на заклинание, сколько он уже израсходовал, как ее тратить. Пререрасход энергии влечет за собой смерть персонажа. В сеттинге игры будет действовать особая система магии, основанная на рунах. Как таковых, уже готовых скиллов в игре не существует, есть лишь "руны" - некие кирпичики заклинания, и система правил соединения этих рун между собой. Использование каждой руны отнимает некоторое кол-во энергии. Игрок собирает заклинание из прокачанных им рун как пазл, а игра генерирует результат. Соответственно, при количестве рун, стремящимся к бесконечности, кол-во возможных комбинацих их применения и различных вариантов заклинаний так же растет в геометрической прогрессии. В качестве примера: игрок выбирает руну огня, закрепляет ее какой-то сферической руной, добавляет руну ветра и направляет ее в определенную сторону. Получается скастованный файрболл, летящий в одном направлении. И еще одна вещь, которая усложнит и так довольно сложную систему: каст заклинания будет занимать определенное время, и противник может подготовить "анти-заклинание". К примеру, пока вы кастуете файрболл, ваш противник может составить что-то вроде водяной стены, в результате чего заклинания взаимноуничтожаются. Таким образом, получается сложная система магических поединков, которую действительно нужно изучать, а сами поединки получатся зрелищными и интересными.

Политика. Отличие игры от других игр с соревновательной направленностью заключается в том, что в раунде одновременно участвуют более двух команд. Т.е., привычный нам киберспортивный формат 5х5 превращается в 2х2х2х2х2. Особенность игры заключается в следующем: побеждает только одна команда, однако в процессе игры вы можете объединятся в союзы, усиливая мощь одной стороны. Таким образом, появляются новые горизонты в тактике: вы можете, например, попробовать объединить слабые команды и вместе уничтожить самого сильного, или же наоборот: сильные команды могут объединиться, по одиночке разобраться со слабыми, ну а потом выяснять отношения между собой. Если добавить сюда возможность "предавать", играть за один альянс, в тайне помогая другому и т.п. - откроются новые возможности именно тактической игры. В техническом плане это реализуется неким "тактическим экраном" : капитан команды может открывать окно тактики, где помимо возможности предлагать и принимать союзы, общаться с другими капитанами, есть мини-карта, где вы можете планировать следующие действия вместе с союзниками, а рисунки на карте отобразятся в игре в виде маркеров и т.п.

Как я вижу саму игру в техническом плане. В данный момент я четко осознаю, что серьезный проект, с хорошей 3D графикой, огромным кол-вом возможностей и т.д. невыполним. Игра будет выполнятся в чистом 2D формате с видом сверху. Основной упор будет делаться именно на геймплей, а не на графическую составляющую. Думаю, что использовать какой-либо движок для подобного проекта не самый логичный вариант, легче написать его с нуля. Писать будем на C++.
scottie_ вне форума Ответить с цитированием
Старый 04.07.2013, 17:35   #2
scottie_
 
Регистрация: 04.07.2013
Сообщений: 5
По умолчанию

Теперь, главная часть - как будет строиться процесс создания игры, кем буду в нем я и кто нужен в команду. Основным ресурсом будет открытый для команды гугл-диск. Я напишу основной документ с базовыми сроками, распределю роли и раздам задачи. Программирование разделится на такие части: сам движок, который будет отрисовывать происходящее; система генерации заклятий; сетевой код; сценарии раундов и т.д. Соответственно, позже каждая часть будет разделена на этапы, которые и распределятся между программистами. Выполнение каждого этапа требует отчетности, в плане что требовалось/чем занимался/каких результатов достиг. Сам я, помимо организации всего процесса, буду по ходу писать некоторые из этапов, делая упор на движок и систему генерации. Так же понадобятся художники. Основную часть картинок возьмем из бесплатных интернетовских, однако помощь людей, разбирающихся в фотошопе и умеющих неплохо рисовать рано или поздно появится. Первое время по большей части будем проектировать, планировать, и думать сообща. Разработку я рассчитываю на длительный срок, играбельный результат вряд ли появится раньше, чем через год-два.

Пару слов о себе. Я - студент теперь уже второго курса технического ВУЗа, по меркам моей области лучшего в плане образования в компьютерной индустрии. Профиль - программная инженерия. Учусь неплохо, по профильным предметам (программирование, сама программная инженерия и т.п.) ниже пятерок не было ни разу. Однако, в плане геймдева знаний особых не имеется, максимум того, что писал лично сам и с нуля - судоку на Borland C++ с тамошней graphics.h. Имею громадное желание учиться, развиваться как в плане программирования, так и в плане разработчика игр. Умею быстро осваивать новый материал и усердно работать над собой.

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

С уважением, Денис.

p.s. Извините за столь длинные посты, не нашел, как убирать текст под спойлер на этом форуме.
scottie_ вне форума Ответить с цитированием
Старый 04.07.2013, 17:41   #3
ruN00b
Почетный нуб
Форумчанин
 
Аватар для ruN00b
 
Регистрация: 07.05.2013
Сообщений: 155
По умолчанию

Какую графику хочешь использовать? TCanvas, OpenGL, DirectDraw?
ruN00b вне форума Ответить с цитированием
Старый 04.07.2013, 17:50   #4
scottie_
 
Регистрация: 04.07.2013
Сообщений: 5
По умолчанию

Я не продумывал, как технически реализовывать рисование. Мне кажется, это не совсем существенный вопрос для простой 2D-игры, с такой отрисовкой, чисто теоретически, справится и graphics.h. Я думал, что решить этот вопрос можно непосредственно перед началом кодирования. А что бы Вы посоветовали?
scottie_ вне форума Ответить с цитированием
Старый 04.07.2013, 17:50   #5
ruN00b
Почетный нуб
Форумчанин
 
Аватар для ruN00b
 
Регистрация: 07.05.2013
Сообщений: 155
По умолчанию

Если Canvas, могу помочь.
ruN00b вне форума Ответить с цитированием
Старый 04.07.2013, 20:21   #6
intmain
Играюсь с Python
Форумчанин
 
Аватар для intmain
 
Регистрация: 12.12.2012
Сообщений: 340
По умолчанию

У меня одного ощущение дежавю?
Мне навящево кажется что где то кто то недавно уже писал о схожем геймплее, правда несколько в другом сеттинге. Там тоже куча команд была.

Цитата:
.s. Извините за столь длинные посты, не нашел, как убирать текст под спойлер на этом форуме.
А что вам сказали на том форуме где спойлеры поддерживаются?)
Там хоть и засилие тролей, но и адекватные люди есть.
Что ел то - в долг, что жил то - зря.
Для избранных. ))
Секретные разработки
intmain вне форума Ответить с цитированием
Старый 04.07.2013, 20:33   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Я бы на самом деле посоветовал для начала сделать что-нибудь попроще, чем вышеописанное. Скорее даже прототип, который реализует только самую-самую базу геймплея, на котором вы сможете освоить основные технологии. Например, однопользовательскую (мультиплеер - штука для вас пока слишком сложная, да и не главное это) игру с парой заклинаний (с этими рунами вы намучаетесь - попробуйте-ка хотя бы на бумаге ПОЛНОСТЬЮ описать их систему! Скорее всего, в результате либо сильно упростите ее, либо так никогда до конца и не реализуете) и некоторым количеством рандомно бегающих монстров.

Попробуйте для начала хорошо реализовать это, составив хорошую структуру классов по всем заветам ООП (в пределах разумного, конечно), разберитесь с управлением и отрисовкой (особенно обратите внимание на двойную буферизацию), добейтесь хорошей производительности (на современных компьютерах простые 2D-игры не должны отъедать целое ядро, а лучше вообще получить загрузку в пределах 5% или меньше в зависимости от разрешения и количества и размеров изображений). После того, как закончите это (по собственному опыту - в первый раз это займет много времени) - можете подумать, что добавить и улучшить, чтобы уложиться в разумные сроки.

Что касается графики, то это в принципе тоже не самая важная вещь пока. В принципе можно вообще построить графический движок так, что рендерить можно будет через что угодно - только допиши нужный класс-потомок (или несколько) и используй его потом как параметр. А для начала лучше возьмите что-нибудь попроще. Например, стандартные средства библиотеки Qt или C++ Builder-а (библиотека VCL, штука под названием Canvas). На первое время вам вполне хватит. А пользоваться древним Borland C++ не стоит, ему уже больше двадцати лет, с тех пор уже два стандарта приняли, так что он уже абсолютно морально устарел.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 04.07.2013, 21:15   #8
scottie_
 
Регистрация: 04.07.2013
Сообщений: 5
По умолчанию

intmain может быть, все новое - давно забытое старое. Про другой форум не понял, это сообщение я оставил только здесь, а говоря "на этом", я имел ввиду, что вроде как спойлер вещь сама по себе разумеющееся на большинстве форумов, а здесь я её не нашел.
Гром последую Вашим советам, спасибо.
scottie_ вне форума Ответить с цитированием
Старый 04.07.2013, 21:31   #9
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Идеи очень интересные, и более того ещё и изложены очень грамотно с максимальным уважением к читающему, поэтому всячески одобряю тему вообще и проект в частности.
Немного повторю Грома , что графика, мультик и прочая ерундистика на первых порах не нужна, а нужен скорее прототип (заготовка), более того, собрав прототип из базового гейм-флоу (переход раундов, за-stub-леные боёвки, заклинания и т.п.) можно будет непосредственно претендовать на сбор команды в кратчайшие сроки.
От себя скажу, что самый смак идеи я вижу в генерации спеллов. Собственно потому и пишу, что подобная тема меня волнует самого и было бы интересно узнать разработки. Скажу, что настоящая генерация (не предифайненые параметризуемые наборы) будет жутко сложной задачей, и стоит ей уделить большую долю разработки.

Подумайте только, что значит собрать файрбол из 3 компонентов, да даже из 2: некий объект спелла надо будет наделить признаком огненной сущности, скорее всего это будет происходить в виде добавления в массивы коллбеков на разные этапы действия заклинания (формирование, жизнь, активация) нужных колбеков с запоминанием параметров (просто где-то ещё или же формируя closures), ввиду того что колбек эффекта "воздействия огня" по сути то один, но должен быть параметризован некими данными при расчёте (например маг силой кастера). Так вот для огня закидываем колбеки огня в массив колбеков формирования (смысл - создать что-то вроде источника света допустим), колбеков жизни (смена кадра при полёте, излучение частиц из своей текущей позиции, пересчёт воздействия источника света на окружающие объекты и т.п.) и колбеков активации (по идее они будут вызываться при каждой итерации "жизни" - и будут проверять точку соприкосновения, если подходит под правила "удара" - персонаж или некий объект, то взорваться с пачкой всяких эффектов - те же частицы, лента кадров взрыва, нанесение урона, с просчётом защит цели от эффектов такого типа и т.д. и т.п., ну и уничтожение экземпляров всех задействованных сущностей).
В общем-то, грусть, да, это ведь только огонь, а ещё надо ветер - при формировании - задать вектор направления, вектор скорости, опять же из данных персонажа - вектора взгляда, силы магии и мб артефактов влияющих именно на эту стихию, при жизни - в целом тривиально - вектор позиции увеличить на вектор скорости, при активации тоже скорее всего тривиально, но можно и понтануться - добавить к результирующему урону влияние скорости, корреляцию стихий и прочие красоты.
Итак, для каждой сущности наделяем наш итоговый объект колбеками для всех стадий и параметризуем, как надо, а в игровом процессе система уже сама будет эти колбеки вызывать в нужные моменты.
Фух... не устали (и разобрались)? а это только один спел из планируемого арсенала (хотя и 2 сущности) НО помимо этого, типов самих объектов собираемых тоже будет несколько и нужно будет делать правила какие объекты спеллов из каких сущностей собираются, например бафф будет не из того же собираться, что просто спелл урона.
Беда ещё в том, что всякие хитрые штуки (при варианте полной динамической генерации конечно же), типа как одна стихия влияет на другую - или защитные (от магии) механизмы - вообще из разряда магии (самой натуральной программерской магии) - такой код только колбеками и ифами не напишешь, надо мутить некие хитрые полиморфные компараторы с делегированием логики (я как-то писал для очень простой системы такую штуку, получилось, система стала работать, но код там отчасти вуду, хотя сами принципы системы просты).

Ладно, загрузил наверное сильно. Поэтому дам ещё на мой взгляд простой годный совет.
Помимо гуглдрайва заведите репозиторий проекта - на гитхабе, битбакете, сурсфордже, гуглкоде - и разберитесь с системами контроля версий (гит, свн), и от команды тоже требуйте этого всего - гораздо больше упростится коллаборейшн в плане любого кода или даже просто файлов (для доков конечно драйв).
Ну и прочие средства - скайп-конференции, возможно гугл-группа ( или просто некий форум), системы баг и ишью трекинга - отслеживание задач, багов, внедрения фич, реквестов и т.п. (на гуглкоде встроенная, на сурсфордже тоже, про остальные пока не скажу)

Чисто от себя - я не плюсовик (базовые знания только, и повышать пока не планирую), поэтому с кодом помочь - вряд ли, а вот идеи, обсуждение, некие схемы/шаблоны в разработке и в самом проекте могу излагать, делиться опытом (хоть не такой большой, но пару проектов веду уже какое-то время).
Посему пока желаю удачи , успеха и хорошо стартануть с проектом.

Последний раз редактировалось phomm; 04.07.2013 в 21:40.
phomm вне форума Ответить с цитированием
Старый 05.07.2013, 08:30   #10
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от scottie_ Посмотреть сообщение
Я не продумывал, как технически реализовывать рисование. Мне кажется, это не совсем существенный вопрос для простой 2D-игры, с такой отрисовкой, чисто теоретически, справится и graphics.h. Я думал, что решить этот вопрос можно непосредственно перед началом кодирования. А что бы Вы посоветовали?
Ну это ты конечно зря.

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

Бизнес-логика самой игры, гемплей там, графические ресурсы - это лишь второстипенная, подчиненная движку часть.

Поэтому, критическим моментом разработки является выбор движка(либо техническое решение по созданию собственного движка).

2. С точки зрения разработки вообще: для игрушки черезвычайно важны различные видео-аудио эффекты. Они являются неотьемлимой частью геймплея.

Есть очень много интересных (по описанию авторов) идей. Которые на практики оказались скучны, унылы и не играбельны.
Разработчики-энткзиасты не смогли сделать красочную графику, зрелищную анимацию, приятную музыку.

Игрушки получились перенасыщенными сухими текстами, скучными статичными картинками, и нудными циферками.

Вот так неисчислимое количество интересных идей ушли в никуда. Так и не найдя своего игрока.

Подумай заранее о том, сможешь ли ты с помощью graphics.h обеспечить достойную графику?

Потом уже поздно будет.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка казуальной игры doctorBrain Свободное общение 13 07.01.2011 21:44
Разработка онлайн игры Nirovinger Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 25.08.2010 15:06
Разработка Браузерной MMORPG игры advantixx Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 12.06.2010 16:55
разработка игры "Реверси". Имеется код этой игры на С++ CD-RW Помощь студентам 0 28.03.2010 00:13