Проект "Създаване на компютърна игра с помощта на Game Maker". Как се правят компютърните игри? Програми за игри на компютъра

Разработката на игрите върви, тя е обещаваща и набира популярност. Подготвили сме подробна инфографика за пътя на разработване на игри.

Има много области, свързани с разработването на игри, и всеки етап от обучението се основава на предишния етап. Например, не трябва веднага да прескачате към двигателите на играта. Започнете с разработка на софтуер, изучавайте математика с изостряне за програмиране на игри и едва след това преминете към разработка на игри. Всяка от представените стъпки е ръководство стъпка по стъпка, което включва книги и други материали.

0. Разработване на игри за деца

Много книги се фокусират върху легендарната и интуитивна среда за разработка на Scratch за деца, включително ScratchJr. След основата идва информация за Python Pygame. Има книга за пет годишни, но по-голямата част от материала е подходяща за деца на 8 и повече години.

1. Компютърни науки

Теоретичното коване е задължителен компонент, без който по-нататъшното изследване е безсмислено. Тази селекция от учебна литература включва основите, информация за алгоритмите и математиката в контекста на изучаването на компютърни науки.

2. Езици за програмиране

Говоренето на компютърен език не е лесно, но е възможно. И има много такива начини. Например езикът C е повлиял значително върху софтуерната индустрия, като споделя своя синтаксис с популярните C#, C++ и Java. C++ от своя страна е мощен език за създаване на ефективни програми и софтуерни пакети. Мнозина също пишат игри на C#: езикът е интелигентен, удобен и ви позволява да започнете разработката по-бързо.

Но Lua прие нещо от C ++. Скриптовият език е добър за логиката на играта. Това ще улесни инициализирането на ниво, свързването на задачи с обекти, промяната на поведението на NPC интерактивно, без да се налага повторно компилиране на проекта и много повече.

3. Създавайте приложения

И ако компютърните науки са теоретична основа, то тук има повече практика. Разработването на игри е неравен път, а приложенията са най-доброто място за начало. Книги с практически задачи, както и информация за шаблони и UML ще ви помогнат да разберете какво е какво.

4. Математика за разработка на игри

Не, няма да има училищен курс по алгебра и геометрия. Изборът е разделен на основите на математиката в областта на разработката на игри и по-напреднало ниво.

5. Програмиране на игри

Хардуерни платформи, операционни системи, набори от API, алгоритми, кросплатформени и други важни аспекти, които ще формират основата на играта, която се разработва. Книгите са допълнени от редица статии за gamedev, които съдържат полезна информация за програмирането.

6. Разработка на двигател на играта

Двигателят е сърцето на играта, което "качва" функционалността и необходимите инструменти. Първите книги ще ви запознаят с архитектурата и дизайна. Освен това "игровите двигатели" са разделени на инструменти, оптимизация, скриптове и допълнителни материали под формата на статии. По време на запознаването се засягат модели, алгоритмични трикове, оптимизация в Unity и други нюанси.

7. Компютърна графика

Да, съдържанието е важно, но компютърната графика е аналогична на интерфейса на приложението, който потребителите ще видят. Ето защо трябва да му се обърне специално внимание.

Нищо чудно, че този раздел е най-големият. Това включва основите на програмирането с 3D в реално време, DirectX и OpenGL. Всичко е допълнено с информация за рендирането и технологиите. Direct3D и OpenGL получиха специално внимание при селекцията.



8. Игра аудио

Разработването на игри също е свързано с аудио: това са звуци, издавани от NPC, главния герой, явления или обекти, както и музика. Аудио програмирането струва само две книги, но те предоставят необходимата информация по достъпен начин.

9. Физика на играта и анимация

Един от най-трудните етапи. Освен софтуерната база и снимките трябва да има закони, по които всичко това взаимодейства. Физиката на игрите и програмирането на анимацията са обхванати в 17 книги. Отделно се влияе от имитацията на течността.

10. Игра изкуствен интелект

Има много компютърно контролирани герои: те могат да бъдат мафиоти, questgivers и дори обикновен шах. Изобилието от книги ще ви позволи да разберете принципите на AI. По-долу е даден списък с тематични полезни статии.

11. Програмиране на мултиплейър игри

Разработването на игри за един играч е много различно от опциите за мултиплейър. Тук трябва да вземете предвид връзката, работата на нишките и други нюанси. Селекцията беше разделена на статии и книги за сървърно програмиране, мрежово програмиране и мрежов протокол.

Подобно на много други начини за реализиране на глобални идеи, разработването на компютърни игри е добре планирано и добре смазано събитие. Създаването на игри се извършва стриктно на етапи, освен това не се препоръчва да се пропускат никакви етапи от разработването на играта. Това се обяснява с факта, че разработването на проекта отнема много време и през периода между рисуването на 3D модели и финализирането на физиката на играта идеите могат да се променят повече от веднъж.

Разработчиците на игри често не успяват да завършат игра за разумен период от време. Това се дължи на факта, че след разработването на компютърна игра и преди да бъде пусната, се извършва бета тестване, където се идентифицират грешки, след което разработчиците правят корекции в играта. Ако процесът на създаване на игра не се приема сериозно, цикълът (бета версия -> бета тестване -> корекция -> бета версия) ще премине през много пъти и разработчиците няма да спазят определените им срокове.
Ясно изразена идея ще попречи на разработчиците да се откажат от създаването на играта, когато половината работа вече е свършена. В крайна сметка, ако се придържате към плана, успехът е гарантиран, разбира се, ако планът е добър и сроковете са реалистични.

Етапи на разработка на компютърна игра.


Подготвителен етап (предварителна продукция)- Това е първият и много важен етап от работата по играта. На този етап се разработват и документират концепцията на играта, дизайнът на героите и се определя изборът на средства за изпълнение на проекта. Струва си да се отбележи, че на този етап екип от художници, дизайнери на игри, технически директор, началници или дори целият екип формира план за създаване на игра, наричана по-долу .
Екипите за начинаещи често пренебрегват тази стъпка, защото те Отнема много време, за да се напише документ за дизайн, но това е тяхната огромна грешка. В крайна сметка те създават играта си без добре обмислен ясен план; в най-добрия случай липсата на проектен документ значително забавя крайния срок. Разработчиците не знаят какво трябва да правят и измислят задачи в движение, отначало се оказва добре, а след това този подарък изчезва заедно с ентусиазъм и вдъхновение. Екип, който има документ за проектиране, може бързо да се придвижи към крайните срокове, без да губи време за измисляне на работата си, те имат обмислена задача. Сцената, един вид релси, разработчиците виждат целта пред себе си, знаят какво да правят в момента и какво да използват, за да изпълнят задачата си. Това изплаща времето, прекарано в мислене и проектиране на документа.
Когато всички административни проблеми са разрешени, играта навлиза в производствената фаза.

Производство- Това е ключовият и най-дълъг етап от създаването на играта. Вероятно се досещате по името, че се осъществява изпълнението на плана, създаден преди това от разработчика.
С напредването на развитието на играта не е необичайно да се правят промени в предварително написан план, което кара екипа да преразгледа текущите резултати от разработката. На определено ниво на развитие на играта, независимо дали е демо, ниво първо, второ или предпоследно ниво, играта се преглежда за непланирани промени. Може би на дизайнерите е хрумнала брилянтна идея и времето им позволява да направят корекции. Между другото, относно времето - разработчиците трябва да изчислят крайните срокове с марж за време за корекции.

Освободете– и накрая идва моментът, когато играта е пусната. Стотици хиляди копия се изпращат по рафтовете на магазините. Този етап е отбелязан като край на натиска от страна на издателя, тъй като разработчикът вече е подготвил играта за пускане, сега издателят действа. Негова работа е да разпространява и продава възможно най-много копия и да намалява броя на копията на играта, която се пиратства в Интернет. Основната цел на издателя е печалба, тъй като приходите от продажбата на копия оправдават финансирането на разработването на качествена игра.

поддържаНе е тайна, че компютърните игри често излизат с грешки – разработчиците на компютърни игри не винаги имат време да пуснат проект, докато техните бета тестери уловят всички грешки, които трябва да бъдат отстранени. Но за щастие може да се поправи. На компютърни игри можете да инсталирате пачове, които носят корекции. Всяка следваща корекция включва коригиране на грешки, които са останали след предишната корекция. Но е нежелателно да се злоупотребява с това, който иска да купи игра от разработчик, който има опит в пускането на сурови версии на играта. Струва си да се погрижите за репутацията си.
Игрите, пуснати за конзоли, обикновено не съдържат грешки, тъй като разработчиците на конзолни игри приемат това по-сериозно, в крайна сметка биха предпочели да отложат пускането за по-късно, отколкото да пуснат игра с грешки. Това лесно се обяснява с факта, че инсталирането на пачове на конзолните версии на играта е почти невъзможно.

Едва ли има човек, който да не е играл поне веднъж в живота си поне една компютърна игра, без значение на лаптоп или мобилно устройство. Е, кой от вас, скъпи читателю на нашия блог, не е мечтал да създаде своя собствена игра и ако не стане милионер благодарение на проекта си, то да стане известен поне сред приятелите си?

Но как да създадете Android игра от нулата, без специални познания и дори без да знаете основите на програмирането? Оказва се, че да опитате себе си като разработчик на игри не е толкова трудна задача. Това ще бъде темата на днешния ни материал.

  1. идея или сценарий.
  2. Желание и търпение.
  3. Конструктор на игри.

И ако първите два компонента на успеха са повече или по-малко ясни, тогава третият компонент трябва да бъде обсъден по-подробно.

Какво е Game Builder

Говорим за програма, която значително опростява разработването на игри, като я прави достъпна за хора, които нямат умения за програмиране. Game Builder комбинира IDE, двигател за игри и редактор на нива, който работи като визуален редактор ( WYSIWYG- Английски. съкращение "каквото виждаш, това получаваш").

Някои конструктори може да са ограничени по жанр (например RPG, аркадни игри, куестове). Други, като предоставят възможност за проектиране на игри от различни жанрове, в същото време ограничават въображението на начинаещ разработчик до 2D игри.

Дори след като прочетете само това, което вече е написано, става ясно, че за начинаещ разработчик, който реши да напише игра за всяка операционна система, включително OS Android, изборът на подходящ конструктор е основната задача, тъй като съдбата на бъдещия проект зависи относно функционалността и възможностите на този инструмент.

Как да изберем правилния дизайнер

Трябва да започнете, като оцените собственото си ниво на знания в областта на програмирането. Ако има тенденция към нула или отсъства изобщо, тогава е по-добре да опитате най-простите опции. И дори да нямате необходимите знания по английски, тогава в този случай можете да намерите програма, която ви подхожда.

И вторият важен момент при избора на дизайнер е функционалността. Тук трябва много точно да анализирате сценария на вашия проект, защото колкото по-трудна е играта, толкова повече различни инструменти ще са необходими за създаването й, съответно и дизайнерът ще се нуждае от по-мощен.

За да помогнем при избора, по-долу ще представим на вашето внимание най-добрите програми-конструктори, което като цяло не изключва факта, че вие, след като старателно се ровите във форумите или специализираните сайтове, ще изберете нещо друго за себе си, т.к. асортиментът от тази гама от програми е доста широк.

Топ 5 на най-добрите конструктори на игри

Конструкция 2

Това приложение постоянно заема първите редове в рейтингите на дизайнерите на игри. С Construct 2 можете да създавате 2D игри от почти всеки жанр за различни платформи, включително Android, както и анимационни игри, насочени към браузъри, които поддържат HTML5.

Предвид огромния брой помощни инструменти, дори начинаещи потребители ще могат да овладеят програмата.

За да овладеете работата с Construct 2, не е необходимо да купувате лиценз, безплатната безплатна версия предлага достатъчно инструменти и възможност за експортиране на готовия проект към някои платформи. Въпреки това, кодирането на готовия продукт към мобилни платформи и достъпът до пълния обхват на функционалността ще даде личен лиценз за $129. Ако умението ви да създавате игри е достигнало кулминацията си и вече сте започнали да получавате повече от 5000 долара приходи от вашия проект, ще трябва да се разклоните за опцията Business, която ще струва $429.

А сега гледайте няколко практически видео уроци за създаване на приложения за игри с Construct 2:

Clickteam Fusion

Clickteam Fusion е друг пример за страхотен пълноправен конструктор на игри, който помага дори на начинаещ да създаде пълноценна игра. Програмата предоставя възможност за безплатно експортиране на създадени приложения във формат HTML5, което означава, че ще бъде възможно да се публикуват браузърни игри и освен това да се конвертират за публикуване на различни мобилни пазари, като Google play.

Сред основните характеристики може да се отбележи простотата на интерфейса, поддръжката на шейдърни ефекти и хардуерното ускорение, наличието на пълноправен редактор на събития, запазване на проекти във формати, съвместими с различни платформи, включително Android.

Платената версия на програмата за разработчици не е достъпна за жителите на Руската федерация, но нейният лицензиран диск може да бъде поръчан от същия Amazon, което облекчава личния бюджет средно със 100 долара. Възможно е да се русифицира менюто чрез русификатор на трета страна.

Как да работите с приложението, гледайте специален видео курс:

Stencyl

Stencyl е друг страхотен инструмент, който ви позволява да разработвате прости 2D компютърни игри без специални познания за кодове, както и езици за програмиране за всички популярни платформи. Тук трябва да работите със скриптове и диаграми, които са представени под формата на блокове, и можете да плъзгате обекти или характеристики с мишката, което е много удобно.

Разработчикът на програмата също така предлага възможност да напишете свой собствен код на блокове, но това, разбира се, изисква познания в областта на програмирането.

Наличието на отличен графичен редактор Scene Designer позволява на потребителя да използва въображението си, за да рисува игрови светове.

Оптималният набор от функции ще помогне за създаването на висококачествени игри от различни жанрове, но най-облицованите (плочки) Stencyl графики ще бъдат подходящи за стрелци или rpg игри.

Програмата се разпространява безплатно, но експортирането в настолни формати изисква абонамент, който ще струва $99 на година, а лицензът за мобилни игри струва $199 на година.

Гледайте бърз курс за работа със Stencyl:

производител на игри

Програмата съществува в платена и безплатна версия. Бюджетната опция ви позволява да създавате солидни двуизмерни игри за работния плот. Докато платената версия дава възможност за писане на доста "изящни" 3D играчки за Windows, iOS и Android. Все още се интересуваме от безплатна възможност да научите как да се реализирате в игралната индустрия, а Game Maker е самата опция, която ще ви позволи да създавате игри със собствен сценарий без ограничения при избора на жанр.

Програмата предлага селекция от готови шаблони за местоположение, обекти, както и герои, звуци и фонове. Така че цялата творческа работа се свежда до плъзгане на избрани елементи в работната зона и избор на условия - местоположение и взаимодействие с други обекти. Въпреки че познаването на език за програмиране не се изисква, но потребителите, които са „запознати“, ще могат да използват GML, нещо подобно на JS и C ++.

Game Maker се разпространява на английски, така че тези, които не го познават достатъчно добре, ще трябва да изтеглят crack файла.

За тези, които се интересуват от тази програма, предлагаме да гледат обучителното видео:

Unity 3D

Unity 3D е може би най-доброто нещо, което можете да предложите за създаване на качествен 3D проект. В програмата са интегрирани напълно готови модели, както и текстури и скриптове. Освен това е възможно да добавите собствено съдържание – звук, изображения и видео.

Игрите, създадени с Unity, са съвместими с всички популярни платформи от мобилни устройства с iOS или Android до SMART TV приемници.

Програмата се характеризира с висока скорост на компилиране, лесен за използване интерфейс, гъвкав и многофункционален редактор.

Всички игрови действия и поведение на героите се основават на здравото физическо ядро ​​на PhysX. Всеки обект, създаден в този конструктор на игра, е определена комбинация от събития и скриптове, контролирани от самия разработчик.

Важно е да се разбере, че въпреки че програмата е позиционирана като дизайнер на игри, предназначен за начинаещи, все пак е необходимо определено ниво на познания за работа с това приложение. Е, работата с 3D графика изисква доста модерен компютър, оборудван с хардуерна видеокарта.

Серия от уроци за създаване на игри с Unity 3D:

И така, решихте да изпълните мечтата си да създадете своя собствена уникална игра. Опитахме се да предоставим информация, която може да помогне в това. Обърнете внимание, ако внимателно прочетете представения материал и поне за кратко гледате видео уроците за всяка програма, тогава вероятно сте забелязали, че работата с всеки дизайнер на игри се основава на същия принцип. Затова е напълно възможно да успеете да изберете нещо, което е по-подходящо за вашите нужди. Поне се надяваме, че на този етап въпросът как да се направи игра на Android е затворен. Късмет!

Какво трябва да вземат предвид бъдещите разработчици на игри? Какъв език да започнете да учите? Към какво да се стремим? На кого да се издигна? И какво трябва да се направи първо?

Повечето любители на рок музиката хващат китара рано или късно. Спортните фенове страстно мечтаят да влязат на футболно игрище, баскетболно игрище или тенис корт. Е, тези, които са извършили стотици отвличания в GTA, прекарали са десетки часове в компютърни клубове, играейки Counter-Strike, или са постигнали значителен успех в MMORPG, вероятно мислят за кариера като разработчик на игри.

Проблемът е, че тази посока се преподава в няколко образователни институции. Следователно повечето разработчици на игри са самоуки, които някога сами са съставили учебната програма. Но какви нюанси са взели предвид? Откъде започнахте и към какво се стремихте? Кой език научи първо? Опитахме се да отговорим на тези и други важни въпроси.

Към какво да се стремим?

Преди да отидете в магазина, правите списък за пазаруване (поне в главата си). Преди да пътувате до другия край на града - очертайте маршрут. Е, преди да научите как да разработвате игри, препоръчително е да се запитате: какво точно искате да правите? Създаване на мобилни приложения или браузър игри? Работите за голяма или малка компания? Искате ли да развивате игри професионално или да посветите свободното си време на това? И ако първото, какво ви интересува повече: създаване на интерфейс, полиране на играта или писане на скриптове?

Правилното поставяне на цели може да ви спести много време и усилия. Освен това ще ви позволи да стигнете до крайната дестинация по най-краткия път. Без риск да слезете от пътя или да попаднете в блато.

Какъв език да научим?

Освен това отговорът на горящия въпрос зависи от целта: с какъв език за програмиране да започна?

Така че бъдещите разработчици на игри като Minecraft и мобилни приложения за Android трябва да обърнат голямо внимание на Java. Като начало ви съветваме да отидете интензивно, особено след като е безплатно. За тези, които гледат към iOS - на Objective-C. За браузър игри познаването на Ruby-On-Rails понякога е достатъчно. За много малки и прости времена HTML е достатъчен. Производството на флаш игри използва ActionScript и за да пишете скриптове от всякаква сложност, ви е необходим JavaScript или може би по-рядко срещаният Lua. За създаване на малки конзолни игри са необходими познания по C#.

Що се отнася до най-големите бюджетни игри (т.нар. AAA клас), повечето от тях са оборудвани със собствен или взаимстван от колеги "двигател". Често обаче целият "двигател" или по-голямата част от него е написан на C++. Именно този език е използван за създаване на много известни „играчки“ – от Doom 3 и Call Of Duty до FIFA и The Sims. Докато класики като Quake са написани на C.

Въпреки това, има уловка в овладяването на C++ - прекомерна сложност. Нищо чудно, че казват, че поемането на C++ без да знаете други езици е същото като започване на изучаване на математика с линейни уравнения.

Достатъчен ли е един език?

Една от красотите на програмирането е възможността за постоянно саморазвитие. При разработването на игри (особено големи) самоусъвършенстването, включително изучаването на възможно най-много езици, не е прищявка, а жизненоважна необходимост. Така че, опитни разработчици, работещи в полза на гигантите на игралната индустрия, често се сблъскват с необходимостта да пишат последователно на 7-8 езика. В същото време, в допълнение към горните езици, те трябва да научат, например, Python или дори SQL (както разбирате, за създаване на бази данни).

Ето защо, ако решите да обвържете съдбата си с производството на големи игри, бъдете готови да станете „полиглот“. Освен това, колкото повече езици владеете, толкова по-интересни и разнообразни задачи ще се сблъскате. И, разбира се, шансовете да получите мечтана работа ще се увеличат значително.

КЪДЕ ДА ЗАПОЧНА?

Преди да направите околосветско пътешествие, трябва да се научите как да ходите. Е, преди сериозен проект за игра, трябва да опитате ръката си в нещо по-малко значимо.

Почти всички опитни разработчици, независимо от регалията и таланта, започнаха с малки приложения: настолни игри, вариации на известни "играчки", прости "флаш памети". Тогава не мислеха за големи изложби като E3, а натрупаха безценен опит. Защо да не последваме техния пример? В този случай не е необходимо да се пише сложен код. За дебют е достатъчно да използвате специални програми за създаване на игри (например Game Maker). В крайна сметка, дори и с прост инструментариум, вие значително ще улесните живота си. Първо, ще разберете в миниатюра логиката и структурата на почти всяко приложение за игра. Второ, ще запълните неравностите, които ще заздравеят по време на прехода към сериозни проекти. И накрая, трето, обогатете портфолиото си. В края на краищата дори една проста „играчка“ изисква много време, търпение и креативност, за да се измисли концепция, да се напише код и да се коригират грешки. Освен това показва, че сте запознати с производството на игри не само на суха теория.

Какво да вземем като ориентир?

Всеки, който мечтае да стане писател, ще прочете стотици книги, преди да напише нито една дума. Майсторите на пиано знаят наизуст най-добрите произведения на Щраус, Шопен и Бетовен. Известни художници запомниха историята на изкуството преди големи изложби.

Същият принцип важи и за разработването на игри. Не можете да се развивате във вакуум. Затова играйте, вдъхновявайте се от майсторите и като гъба попивайте най-доброто. В същото време се опитайте да гледате на приложенията не през очите на "геймър", а през очите на разработчик. С други думи: транспонирайте играта. Помислете защо в този момент „ботът“ бяга наляво, а не назад? Какви фактори променят силата и точността на удара в спортен симулатор? Как да създадем "ефект на умора", когато герой тича дълго време? Как да го направим така, че по време на дъжд играчът да чува звук от капки, а не писък на прасе? По принцип, преминете към същността. Опитайте се да пресъздадете в главата си алгоритмите, които срещате по време на играта. Повярвайте ми, такъв конструктивен подход ще ви помогне в бъдещата ви трудна, но дяволски вълнуваща кариера като разработчик на игри.

Как да разработите RPG игра за една седмица от нулата и без бюджет. част I

RPG след седмица? От нулата? Възможно ли е изобщо?
Поех риск и го направих.

Интернет е пълен с информационни ресурси, достъпни за малки, независими (инди) разработчици на игри. В един такъв публичен форум, по време на спор, имах неблагоразумието да избухна, че ако ми бъде дадена седмица време, компютър с нова инсталация на Windows и добра интернет връзка, бих могъл да създам прилична игра, без да харча една стотинка върху него. Не, със сигурност няма да може да се конкурира с Halo 2 или нещо от същия калибър (ако можех да направя подобна игра за една седмица, щях да напусна работата си отдавна), но ще бъде доста интересен и игрален.

Том Бамптън, автор на месечните Game of the Day Game Reviews (www.gameinaday.com), каза: „Давай! След това добави допълнително условие - трябва да направя това, без да използвам съществуващи игрови двигатели. Разрешено ми е да използвам само основни библиотеки/API.

В началото се отказах от тази идея. Нямах твърде много време да си взема една седмица почивка от разработването на текущия проект за игра на работа. Но тогава си помислих: по дяволите, защото какво е седмица? В типична компания, като EA, работната седмица е 40 часа. Така че защо да не направите игра не в календарна седмица, а за 40 чисти часа? Вече е по-реално - но не исках да създавам друг тетрис или арканоид. А какво ще кажете за ролевата игра – един от най-трудните игрови жанрове? Възможно ли е?

Знаех, че ще бъде изключително трудно. Но приех предизвикателството.

Освен това написах подробно какво и как правя, описах напредъка на разработката. Мислех, че може да е интересно за разработчиците на игри - или поне да получа забавни записи за това как съм паднал по лице в калта, ако изведнъж се проваля. Всичко, което измислих, беше дълъг, разхвърлян запис на моята почасова дейност. Опитах се да го променя по такъв начин, че четенето да не предизвиква скука. Как се случи, преценете сами.

Ето как създадох игра за една седмица от нулата и без бюджет. Ако ви мързи да четете и искате бързо да преминете към края на историята, за да видите как изглежда крайният продукт и да видите всичките му грешки, можете да изтеглите Windows версията на играта тук: http://www .rampantgames.com/hackenslash.html

ПЛАНИРАНЕ
Цел
Създайте олдскул RPG в стила на стари игри от началото на 80-те, с изглед отгоре надолу, като The Temple of Apshai, Ultima III и Telengard. Играчът ще се движи през стаи в типично подземие, борейки се с различни чудовища с "меч и магия". Постепенно той ще подобрява способностите си, като трупа опит, изравнява се, придобива магическо оборудване.

Въпреки това играта ще се състои от нещо повече от самата битка. Играчът също ще може да се промъкне покрай чудовищата или да преговаря с тях. Ще има заключени врати и сандъци, както и уникални функции на подземието, които имат неочаквани ефекти. Играта няма да има дълги описания или диалози - най-вече ще бъде типичен hack & slash. Ще следвате пътя, докато не станете достатъчно силни, за да се изправите срещу последния бос, да завършите мисията и да се върнете у дома (началната си стая) безопасно.

Правила за развитие

Правило №1: Времето за разработка е ограничено до една седмица (включително 40 часа)
Общо не повече от 40 часа трябва да бъдат изразходвани за разработка на играта. Те ще включват времето, прекарано действително в работата по играта и мисленето за нея. Паузи за развитие, по-големи от десет минути, няма да се зачитат. Това би била "перфектна" работна седмица от 40 часа с висока производителност.

Напълно функционална алфа версия ще бъде направена след 40 часа. По-нататъшно завършване, като окончателно отстраняване на грешки на играта, създаване на инсталатор за разпространение в общото време, няма да се вземат предвид, няма да се добавя нова функционалност на този етап. Документацията на процеса на разработка също не се взема предвид.

Правило №2: Използвайте само безплатни инструменти
С изключение на софтуера, който идва с инсталацията на Windows, се използва само безплатен софтуер, ако е възможно с отворен код. Смисълът на това е да се покаже, че не се нуждаете от скъпи (или дори евтини) инструменти, за да разработите игра. Оборудване като скенер, микрофон и цифров фотоапарат не се влияе от това правило – ако не разполагате с тях, ще приемем, че могат да бъдат взети назаем от някого.

Правило №3: Без машини, само стандартни библиотеки/API
Играта трябва да бъде създадена "от нулата", без да се използват съществуващи игрови двигатели. Без измама, а създаването на играта или някоя от нейните части с помощта на дизайнери на игри или използването на подобен софтуер.

Инструменти
Кодът:

Python 2.3 (http://www.python.org/)
Python Win
PyGame (http://www.pygame.org/)
Py2exe - за компилиране на случващото се в изпълним файл за разпространение. (http://starship.python.net/crew/theller/py2exe/)

Gimp 2.0 (http://gimp-win.sourceforge.net/)
MS Paint (този, който идва с Windows) - за поставяне на екранни снимки, заснети с клавиша PrintScreen (GIMP по някаква причина отказа да направи това)
Безплатните текстури са взети от (http://www.textureartist.net/textures/index.htm) и (http://www.mayang.com/textures/)

Audacity (http://audacity.sourceforge.net/) плюс моя микрофон или безплатни.

График (план) на работа
Графиците се правят, за да бъдат разбити по-късно, но те все още са необходими, за да се контролира напредъкът и линиите и да се правят корекции, ако е необходимо.

Час 1-10: Основна архитектура
Конструкция на двигателя и основни компоненти. Получете изобразяването на света на екрана. Трябва да внедря способността да премествам тестов играч по целия свят и да гледам нещата, и след това да превръщам случващото се в редактор на игра.

Час 11-20: Опции на играча
Реализацията на всички основни функции за играча - движение, атака, отваряне на врати, смърт, вземане на неща и използване на инвентара. Създайте каркасно представяне на всички обекти в околната среда, за да тествате способността на играча да взаимодейства със света.

Час 21-30: Съживяване на света
Добавете изкуствен интелект, игрови събития, капани, специални ефекти. До края на този период трябва да имам доста пълна технологична демонстрация, включваща всички основни характеристики на играта.

Час 31-40: Добавяне на съдържание и правила
Вземете пълноценна игра от техно демо. Добавете цялото допълнително съдържание. За постигане на пълнота и баланс на игровата механика. Полирайте всичко, за което има достатъчно време, добавете специални ефекти, анимация и т.н.

След 40 часа: Тестване и пускане на играта
Тествайте и коригирайте намерените грешки (без да добавяте нови функции!) Съберете всичко и го пуснете в Интернет. Пълна документация.

Hackenslash Dev Diary: Игра на седмицата

Час 1 - Див дизайн и базови класове
Този час беше прекаран в създаване на някои базови класове за играта - и използването им в по-нататъшен дизайн. Светът ще бъде представен като поредица от стаи, свързани с портал. Всичко в света се основава на стаи, точно както беше в старите приключенски игри или MUD. Повечето от обектите в играта са представени като "GameObject", който има позиция и съдържание (може да съдържа и други обекти - карта може да съдържа стаи, стая може да съдържа сандък, сандък може да съдържа меч... . и мисля, че един меч може да съдържа няколко стаи, но ние няма да направим това.)

Създавам обекти създание (създание) и играч (Играч)
Генерирам набор от атрибути за същества и ги инжектирам в клас. Явно съм маниак, който играе твърде много RPG игри. Все още не знам точно как ще изглежда и работи механиката на играта.
Правя обект за стая, който наследява от GameObject. Една стая има ширина, височина и стени - и нищо друго в момента.

Постепенно започвам да разбирам как всичко ще работи и да правя необходимите корекции. Дори не се опитвам да използвам PyGame на този етап и програмата не показва нищо освен конзолата. Но смятам, че всичко, което е направено, е голям напредък!

Час 2 - PyGame 101
Целта на този час е да инициализираме PyGame и да започнем да рисуваме поне нещо на екрана. Всъщност прекарвам по-голямата част от времето си в четене на документацията на PyGame, опитвайки се да разбера какво има там и как, тъй като имам малък или никакъв опит с PyGame или SDL.

Този час завършва с програма, която показва празен екран, пълен с черно. Не е впечатляващо. Всъщност зад този прозорец има много неща. Има цикъл на игра, превключване на кадри, множество повиквания на клас и много неактивни модули. Но това не прави черния екран по-впечатляващ.

3 час - Ако стените имаха уши, щях да им се скара силно.
Целта на този час е да се дефинират контурите на стаята със стени и да се покаже на все още черен екран. За да направя това, имам нужда от място и имам нужда от графики. Трябва да прекарате много време в GIMP, редактирайки текстури, изтеглени от интернет, така че да се превърнат в подходящи плочки. Създавам клас за мениджър на текстури. И попълвам примерната структура на стаята. Освен това прекарах малко повече време, преглеждайки документацията на PyGame, за да намеря нещо друго, което мога да използвам, за да улесня работата.

Часът мина. Все още имам същия черен екран. Нямаше стени и не.

Час 4 - Хотелът разполага със свободна стая
След като се борих с някои синтактични грешки, най-накрая успях да накарам стените да се появят на екрана. Вярно е, че те се показват неправилно, не са на посоченото място и дори с прорези между сегментите. Ужасно е. Но с малко настройване и редактиране получих нещо, което изглеждаше като стая на екрана, 10 на 10 квадрата.

Без подробен план на проекта наистина е доста лесно да се объркате, когато сте свършили определена работа и се чудите „Какво следва?“ Реших, че ако рисуването на една стая е добро, тогава рисуването на две е двойно по-добре.

За да съхранявам създадените стаи, създадох файл "minidungeon".
Ще започна да добавям логиката за "портали" - отвори в стените, за да отидат към други стаи (и предоставяне на цялата информация за изместване, необходима за правилното показване на съседните стаи).

Час 5 - Hackenslash получава повече стаи

Промених заглавието на прозореца на "Hackenslash!". Просто защото е готино.
Създадох обектна карта за складови помещения и клас MapMaster, съдържащ няколко карти.
Добавих втора стая и се свързах с първата през портала.
Съседните стаи са свързани с текущата чрез портали и вече се показват на екрана.
Поправих някои грешки при изрязване, така че стените, които частично се простират извън прозореца, да се показват правилно.

6 час - през който подобряваме уменията си за рисуване

Добавен е клас на вратите, както и настройване на карти за разположение на вратите (вратата трябва да е обща за две стаи). (Редактиране: Жалко, че никога не съм го използвал!)
Създадох още 3 стенни плочки, комбинирах ги в едно изображение.
Графичният вид на стените варира в зависимост от вида.
Правя проста графика за изглед отгоре надолу.

Час 7-8 - Завъртания и възклицания!

Разбрах как да завъртя растерни изображения в PyGame.
Постигнах плавна ротация на тестовия играч. Необходими са много настройки за коригиране на ъгъла на въртене.
Научих как да използвам шрифтове в PyGame и създавам някои класове за показване и анимиране на текст.
Добавен е клас за автоматична обработка на текст, тъй като тази функционалност ще се използва често в бъдеще.

9-11 часа - Елементи - бррр!

И тук отново трябва да реша въпроса "Какво следва?".

Стаите се нуждаят от по-интересни елементи, така че трябва да направите списък с тях. Не знам как да ги систематизирам, затова реших да започна с общите. Въведох три статични елемента, които могат да бъдат намерени в типична стая за подземия: килим, колона (блок със същата функционалност като стените) и стълба (позволява ви да се преместите на ново място)

Реших, че елементите могат да заемат повече от една плочка и могат да се въртят на всяка степен. (Редактиране: В ретроспекция, много тъпо решение - прекарах твърде много време за прилагането му, но се оказа почти безполезно.)

Като цяло прекарах около три часа в работа върху елементите, разкъсван между създаване на графика и писане на код.

Час 12 - 13 - Нуждаем се от плячка!

Създавам графики и код за неща. Удивително е колко време може да отнеме рисуването. Особено досадно е, когато изображението изглежда сякаш пилето е рисувало с лапа, независимо колко усилия са положени в него.

Добавих много статистически данни към артикулите, включително тяхната цена, размер, слотове за оборудване и други. Все още не може да се взаимодейства с тях, но поне се появяват на правилните места в стаята.

14 час - Килими

Много изоставам от графика, какво да правя?
Черният фон изглежда твърде грозен, затова постех подовете вътре в стаята с килими - отделни плочки.

След това изведнъж се оказа, че съм забравил да добавя прозрачен фон към спрайтовете на плейъра и нещата. Трябваше да отделя много време, за да коригирам този пропуск.

Но сега нивото изглежда страхотно. Е, поне по-хладно от черно.

15-16 часа - Щракнете! Щракни!

Бях зает с управление на мишката и обработка на събития.
Добавено управление на мишката. Докато движението е рязко, няма плавно превъртане на нивото.
Играчът може да излезе от стаята, няма проверка за сблъсък.
Поправих няколко грешки.
Измъчва GIMP и създава красиви стълби.
.
Вече минаха почти 17 часа разработка, така че започвам да ставам малко нервен. Изминах 2/5 от пътя, за да създам играта - приключи вторият "работен ден" на разработката. Това, което вече направих, е впечатляващо, но разбирам, че има още много за вършене. Имам още четири часа, за да завърша основните функции на играча и да вляза в график. Ще бъде трудно... но все пак не съжалявам, че отделих допълнителното време за рисуване на графики!

Час 17 - Бавно се движете, докато не се ударим с чело в стената

По-голямата част от времето се прекарва в фина настройка на графиката и коригиране на грешки.
Добавено откриване на сблъсък и плавно превъртане, когато играчът се движи.
Играчът вече може да предприема няколко стъпки (завои) в отговор на действие с мишката.

18 час – Прекрачване на праговете

Играчът вече може да преминава през портали към други стаи.
Това причинява козметичен бъг с припокриващи се стени и подове между съседните стаи.
Коригирани са много грешки, свързани с въртенето, което прави порталите непроходими.

Час 19 - Стълба към рая, Менюто на ада

Брат ми се включи доброволно да направи музика за играта. Той направи музиката за Void War и тя се получи доста добре. Това ми напомни да възпроизвеждам звук (и музика). Изглежда, че е доста лесно да се направи това в PyGame, така че не трябва да отнеме твърде много време. (Редактиране: Никога не намерих време за това, за съжаление няма да чуете нито един звук в Hackenslash.)

Следващата ми цел е да се справя с взаимодействията със същества и обекти. Наистина харесвам начина, по който е направено в The Sims и Neverwinter Nights, когато искате да взаимодействате с обект на игра, се появява контекстно меню. Планирам да реализирам нещо подобно.

Обучаване на стълби за преместване на играча в нова стая.
Порових се малко из интернет и документацията на PyGame, търсейки да видя дали има меню с отворен код за подобно меню в PyGame. И не намери нищо.
Започнах да правя собствено меню.

Час 20 - 21 - Какво е с менюто?

Продължавам да работя по менюто. Менюто може лесно да бъде свързано към обект, по-точно обектът генерира меню, което улеснява прилагането на обратна връзка за обработка на избора на играча.
Започнах да работя върху менюто с елементи. Вече се появява на правилното място и ви позволява да изберете някакъв елемент, но когато е натиснат, все още не прави нищо, работи само бутонът за затваряне на менюто.

Час 22 - Заспиване в ход

Продължавам да работя върху нещата – опитвайки се да имплементирам тяхната функционалност и да ги науча да отговарят на команди от менюто, включително възможността за добавяне на контекстна информация. Сега той има малка функционалност, но все още работи, показвайки информация за изпълняваната команда
Подобрих изчисляването на движението при извършване на различни действия, получавайки повече мобилност.

Забелязвам, че вече е късно и че съм отишъл далеч от времето, отредено за тази работа. Ако не обръщах внимание на общото време за разработка, вероятно щях да стоя до сутринта. Но тъй като съм ограничен във времето, почти загубен час е наистина лоша новина. Интересно е как се сменят приоритетите, когато няма достатъчно време. Общо взето си лягам.

Час 23 - Параметри на битка!

Променям (е, всъщност тепърва започвам) някои от атрибутите на класа, създадени през първия час.
В горния десен ъгъл създавам панел, който ще показва опциите на плейъра.
Оптимизирах този прозорец, като го превърнах в изображение, което рисува по-бързо от шрифтовете. Това изображение се актуализира само когато свързаните параметри на символа се променят.

Час 24 - Меню на играча

Завърших оптимизациите за прозореца с опции.
Създадено изскачащо меню, което се появява, когато играчът щракне върху герой.
Създадох бързо меню за използване на отвари, правене на магии и т.н.
Поправих някои грешки в менюто.

Час 25 - Преди (веднъж) рязане на подове и стени

Тази сутрин имах идея в мозъка си (наистина ли имам толкова голям мозък, че да може да побере толкова много идеи?) как да оправя проблема с припокриването на стени в съседни стаи (виж описанието на осемнадесетия час). Ами ако боядисам само половината стени? По този начин изобщо няма да има припокриване и не е необходимо да се добавя сложна логика за откриване и коригиране на припокривания.

Започвам да работя по реализацията на тази идея. За съжаление, всъщност измисленото опростяване прави още по-трудно рисуването на стаята (по-специално подовете) и може да не се приложи толкова бързо, колкото се надявах. Отне около час за създаването и отстраняването на грешки в тази система. Но си струваше.

Докато отстранявам грешки в кода, открих още няколко грешки, свързани с прехода между стаите.

BREAK - Криза!

Току-що разбрах, че повече от 3/5 от времето за разработка е изминало и че остават по-малко от петнадесет часа до завършване на играта. След като разгледах графика на необходимите функции на играта и прецених, че внедряването на всяка от тях ще отнеме средно един час, разбрах, че ще ми отнеме около двадесет и пет часа, за да внедря всичко. Десет часа по-рано. Проектът официално е застрашен.

Не мога да надхвърля срока. Също така е невъзможно да привлека асистент или да купя код / ​​ресурси, тъй като е предвидено, че ще направя играта сам за 40 часа. Трябва да разбера как да работя още по-ефективно - но вече работя с максимална производителност. Изглежда, че нямам друг избор, ще трябва да преосмисля функционалността и да реша кои функции да изхвърля от играта.

Врати: Режете! Наистина искам да направя врати в играта. Жалко е да се разделя с тази функция - особено след като работя по нея от известно време. Но все още има твърде много работа, като например изкуствен интелект. И сигурно ще отнеме 2-3 часа, за да ги накарам да работят, каквито аз нямам.
Инвентаризация: Опростете! Забравете за допълнителния инвентар и възможността да сменяте оръжия по желание. Всичко, което е взето и не стане текущото оборудване, веднага ще бъде превърнато в пари.
Подводни камъни: Опростете! Бих искал да имам много капани с интересни и разнообразни последствия за тяхното активиране. Не е писано да бъде. Капаните ще имат прост визуален ефект, ще нанасят щети и временно увеличават шанса да се натъкнете на произволно чудовище
Лъкове (малки оръжия): Нарежете! Играта ще има само меле оръжия, на разстояние можете да атакувате с магии.
Запазване/Зареждане на играта: Опростете! Само героят може да бъде спасен, а не състоянието на света. (РЕДАКТИРАНЕ: И аз не го направих!)
Система за частици: Отложете! Създаването на система от частици е преместено в края на списъка с приоритети. Съмнявам се, че ще трябва да бъдат направени. Би било хубаво да имате впечатляващи визуализации със заклинателни частици... но вероятно никога няма да стане.
Заклинания: Опростете! Имах сериозна концепция за заклинанията: те могат да бъдат намерени под формата на свитъци, а броят им е повече от дузина. Тъжно е, но ще има само няколко заклинания: изцеление, повреда, отслабване, овластяване и възстановяване. Повишавайки нивото, можете да позволите на играча да подобрява магиите, като увеличава броя на магическите точки.
Анимация на чудовища и играчи: Изрежете! Аз съм лош художник, за да го направя достатъчно бързо.

Когато решавам какво няма да правя (или какво ще отложа за по-късно), също толкова важно е да реша какво трябва да направя първо.

Има много неща, които са планирани в играта, които смятам за много важни - намиране на капани, тайни врати (е, тайни проходи сега) и отваряне на сандъци. Но все пак основата на играта е битката. Затова реших да се съсредоточа върху него, да го направя основен приоритет. Поставих си цел, след час и половина моите чудовища ще оживеят, за да могат да бъдат убити.

Чудесно, разбрахме приоритетите, продължаваме да се развиваме.

Час 26 - Да хвърлим заровете

Работя върху механиката на "зара", механизъм, чрез който елемент на случайност ще бъде въведен в играта. Тъй като нямаме реално ограничение за зарове, можем да получим произволно число във всеки желан диапазон. Например от 1 до 33 или от 6 до 17. За да мога да хвърля заровете, да сравня падналото с моята атака и защитата на врага. Ако хвърленото число е по-високо от защитата, атаката е успешна.

Например, да кажем, че имам обща стойност на атака 15. Аз атакувам чудовище, което има 10 защита. Шансовете ми са 15 от 25 (25 =15 +10) или 3 от 5. Така играта ще генерира произволно число между 1 и 25 и ако е по-голямо от десет, аз ще спечеля.

Нанесените щети се изчисляват по малко по-различен начин. Добавих "броня" на защитника и "повреда" на нападателя. Генерирам произволно число от 1 до тяхната сума и след това изваждам бронята. Ако резултатът е по-малък от единица, не се нанасят щети. В противен случай е равно на резултата. По този начин, ако чудовище с 10 щети атакува играч с 5 точки броня, играта ще генерира число от 1 до 15, от което ще извади 5, което се случва е нанесената щета.

Това обяснение и описание отне повече време от прилагането му.

В края на часа намалих размера на зоната за показване на подземието, сега частта от прозореца вдясно е изцяло посветена на потребителския интерфейс, тази промяна даде леко увеличение на производителността. Уверих се също, че движението на играча не зависи от честотата на кадрите.