Давайте пограємо зі змією/Вступ
Давайте познайомимось
ред.Батьки купляють дітям комп'ютери, аби вони вчились. А діти замість цього граються. Та й не тільки діти граються. З вами хіба не так було?
Автор даного тексту схитрив, і сказав батькам, що вчиться програмувати. Що було правдою, бо він таки вчився. Правда програмував він не якісь там занудні домашки з інформатики, а в основному комп'ютерні ігри. І як з'ясувалося, написання комп'ютерних ігор подекуди буває забавою, веселішою за саму гру.
Це трохи важко пояснити. Мабуть все відбувається як у фільмі "Матриця". Граючи в ігри, ми занурюємось в світ, створений кимось. Пишучи ігри, ми можемо створювати такий світ, який самі забажаємо. Все залежить тільки від нашого знання, вмінь та терпіння.
Що ще необхідно знати про мене? Сам я познайомився зі змією не так давно. Десь пів-року тому. Тому сам тільки вчуся, і якщо ви раптом зможете щось зробити краще, чи побачите десь помилку - сміливо тисніть кнопку "редагувати".
Можна вважати, що ми познайомились, тепер час познайомитись із пітоном.
Ну, насправді пітон — це зовсім не змія, а мова програмування. І вимовляти правильно буде не пітон, а пайтон, так як названа вона на честь групи британських коміків Монті Пайтон. Але схожість назви зі змією таки відобразилась навіть у логотипі, який можна побачити праворуч.
Чому для написання гри варто обрати саме Python?
ред.Можна було обрати Pascal. Чудова мова програмування пристосована саме для навчання програмуванню. Саме тому її вивчають в школі. Але в неї є один великий недолік - вона застаріла. Незважаючи на те, що компілятор Free Pascal продовжує вдосконалюватись та розвиватись, дозволяє використовувати всі можливості операційної системи і має підтримку OpenGL, DirectX та інших сучасних бібліотек, все ж писати гарні ігри на Паскалі складніше ніж на інших мовах: через непопулярність цієї мови дуже бракує нормальної інформації. Дуже часто документація доступна тільки для інших мов, а програмісту на Паскалі доводиться знати ще й Сі, щоб у ній розібратися.
Є ще Delphi. Це розширення мови Pascal, що дозволяє легше створювати великі програми, з графічним інтерфейсом. Проте ігри звичайно не використовують системний графічний інтерфейс. Проблеми в Delphi такі ж, як і в Паскаля: через непопулярність досить важно знайти документацію; часто для роботи з бібліотеками треба вивчити хоча б основи іншої мови. Також мінусом є те, що щоб програмувати на Delphi вам доведеться його вкрасти (або користатися старою безкоштовною версією з її обмеженнями). Або купити, що хоча і чесніше, зате важче.
C++ - дуже потужна, універсальна, швидка мова. Напевне більшість комп'ютерних ігор написані саме на ній. Але мінусом її є те, що вона ду-у-у-уже складна, і її складно вивчити. Мало того, щоб програмувати ігри на ній, також бажано вивчати додаткові бібліотеки, яких в C++ немало, і які теж доволі заплутані. Наприклад STL (для легшого створення структур даних, та зняття необхідності працювати з пам'яттю вручну).
Також мова програмування C++ використовується в багатьох ігрових рушіях таких як, Unreal Engine чи CryEngine, що лягли в основу багатьох культових ігор.
Якщо ви справді хочете писати гарні ігри, і можете присвятити кілька років вивченню C++, її бібліотек, OpenGL чи DirectX, то варто це зробити. Не варто тільки з цього починати, бо повторюсь - це складна та заплутана мова.
На мові Java можна писати ігри для мобільних телефонів. (Хоча для мобільних телефонів іноді підходить і Pascal. Наприклад можна швидко навчитись програмувати мобільні іграшки в середовищі MidletPascal[1]) Зараз Java використовується і для написання комп'ютерних ігор, напр. Minecraft, але поки що вона не дуже розповсюджена.
С# - мова, придумана в Microsoft, як заміна C++, та аналог Java. Дещо простіша за C++, зокрема тим, що в ній пам'ять виділяється та звільняється автоматично. Також великим плюсом є наявність .NET Framework, що відчутно допомагає в розробці. Зокрема в .NET входить бібліотечка XNA створена саме для програмування ігор, і суттєво полегшує їх програмування. Ігри написані на XNA можуть запускатись на приставках, що можливо для декого буде плюсом. Також плюсом є те, що хоча це все від Microsoft, проте вони дозволяють користуватись Visual Studio Express Edition безкоштовно[2]. Як і XNA[3]. З появою ігрового рушія Unity, з'явилась можливість створювати ігри за допомогою простого для освоєння інтерфейсу, а сама мова програмування С# вийшла на передові позиції в якості основної при розробці ігор.
Писати ігри можна ще багатьма іншими мовами. Якщо маєте знання про створення ігор в мовах які тут не згадуються - поділіться.
Тим не менш, я вже достатньо розрекламував інші мови, щоб ви могли перейшовши за посиланням почати вчити їх. Але якщо ви дочитали сюди - мушу вам сказати: Python - найкращий. І на це є багато причин:
- Програми написані на Python будуть працювати на будь-якій системі (а окрім Windows їх існує дуже багато).
- Python дуже легко вчиться, проте має можливості ширші, ніж у більшості з вищезазначених мов.
- Python має величезну кількість бібліотек, серед яких варто виділити Pygame.
- Python чудово підходить не тільки для іграшок, але і для серйозних програм, що виконують складні наукові обчислення (його вчать навіть у MIT, а це багато про що говорить), динамічних веб-сайтів (можливо пізніше в цій книжці буде розповідатись як написати браузерну багатокористувацьку онлайн (може RPG, а може щось інше, що на думку спаде).
- Після вивчення Python вам набагато простіше буде вчити C++, Lisp, та багато інших мов. Мінусом можна вважати те, що після Python, програмування на C++ буде здаватись
пекельними мукамимовою програмування низького рівня.
Чому не варто писати ігри на мові Python?
ред.Щоб бути чесним та об'єктивним, треба сказати і мінуси такого вибору.
- Python - інтерпретована мова, тому працює повільніше[4], що хоча і не критично для швидких комп'ютерів та невеликих ігор, але Stalker ви на ньому не напишете.
- Python - інтерпретована мова, тому щоб ваші ігри запускались на інших комп'ютерах потрібно щоб там був інтерпретатор. Така проблема проявляється переважно на Windows, яким користується переважна більшість ігроманів. Але ніхто на заважає Вам розповсюджувати інтерпретатор разом зі своєю грою.
Таким чином, можна сказати, що якщо ви хочете писати серйозні великі ігри, в які будуть грати мільйони людей - вам краще вчити C++. Якщо ви хочете навчитись програмувати, отримуючи при цьому задоволення - краще Python нічого не знайдете.
Але варто відзначити, що, хоч великі комерційні ігри звичайно не пишуться на мові Python повністю, він може використовуватися для написання ігрової логіки. Наприклад, у грі «Civilization IV» код виводу графіки та звуку написано на мові C++, а ігрову логіку написано на мові Python.
Що потрібно, щоб почати забаву?
ред.Ну, для початку говорити зі зміями. Яка може бути гра, без розуміння одне одного?
А для цього треба підручник мови. Хоча тут більшість коду буде йти з поясненнями, і він загалом нескладний для розуміння, та все ж комфортніше буде мати літературу саме по мові, а не по програмуванню ігор.
Можна його десь купити, можна піти в бібліотеку (сумнівно що ви там знайдете щось, хіба що бібліотека дуже сучасна). Але інтернет - джерело знань. Ось кілька посилань.
- Python - підручник на вікіпідручнику. Тобто тут :). Український переклад оригіналу написаного самим Ґвідо Ван Россумом - творцем мови.
- The Python Tutorial - оригінал, для тих хто знає англійську. Хто не знає - швидше вчіть. Програміст що не знає англійської - не знає половину з кожної мови програмування.
- Повна документація на тому ж сайті. Теж англійською.
- Пориньте у Python 3 - досить повний підручник українською.
Окрім підручників звісно потрібен і сам Python. Якщо ви власник Linux - вам напевне пощастило, і python у вас вже є. Це можна перевірити написавши в терміналі
python
І маєте побачити напис схожий на:
Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15) [GCC 4.4.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
Інакше з'явиться підказка як його швиденько встановити.
Для Windows та інших систем інтерпретатор можна скачати тут: http://www.python.org/download/
Тільки будь-ласка не встановлюйте третю версію. Вона має деякі серйозні відмінності від другої, і кількість бібліотек для неї обмежена. Тому з переходом на неї доведеться ще трохи зачекати[5].
А також варто завантажити набір бібліотек для написання відеоігор під загальною назвою Pygame. Їх можна знайти тут: http://www.pygame.org/download.shtml
Зноски
ред.- ↑ Про MIDletPascal (російською)
- ↑ Завантажити студію для C# можна тут: Visual C# 2008 Express Edition (сторінка завантаження)
- ↑ Microsoft XNA Game Studio 3.1 (сторінка завантаження)
- ↑ Python попытаются научить летать Анонс версії Пітона з JIT компілятором. Прогнозований виграш - 5х по швидкості, тому, можливо, скоро можна буде писати більш потужні ігри.
- ↑ Якщо Ви щасливий користувач ОС Windows, то встановлюйте 2.6 і 3.х версії Пітона, оскільки Вам це заважати не буде (в інших системах також не буде; наприклад, в Ubuntu Linux Python 3.x можна буде запускати командою python3). Крім того, у Вас буде наочна можливість роботи з обома версіями Пітона і Ви зможете переконатись на власному досвіді, що 3.х версія краща.