Він Python до C++. Як я вчився створювати ігри

Коротко про те, як я починав. У 2022 році я приїхав у Прагу і працював тоді на складі. Я купив собі ноутбук аби було чим зайнятися (п.с. я думав грати у ігри спочатку). І оскільки був час, я задумався: а чому б не почати вивчати програмування?

Початок навчання

Весь час хотілося опанувати програмування, але якось не йшло. А тут оголошення, що у Празі у IT Step Praha (їхнього філіалу) для українців відкрито курси по підвищенню кваліфікації, а саме: «Back-end розробка». Точніше там навіть про Back-end/front-end не йшлося, а йшлося про мову програмування Python. Цей курс я закінчив, створивши магазин по книгах, та досить непогано опанував Python/Django/SQL/Java Script та інші цікаві бібліотеки.... Але ... Я одразу почав відриватися від групи. Розумієте, я в програмуванні був повним нулем... Але згодом я почав гратися з циклами for i in range... будуючи пірамідки, потім коли ми проходили lambda функції, я вже почав ознайомлення з ООП, хоча мої «одногрупники ще навіть функції не проходили».... Ходили ми на заняття після роботи по пʼятницях на front-end, а по суботах з Брно приїздав викдадач по back-end/python...

І ось десь місяці на другому навчання стався прорив. Я вирішив написати свою першу гру на пітоні, я навіть гадки не мав як це робити. Це була карткова гра «Дурень». Це робота зі списками, безкінечним циклом. І за тиждень я її зробив.

Я був так вражений, що вона працює (щоправда з багами і вилітами). Тож я одразу зробив ще одну карткову гру на javascript . Ось так і йшло моє навчання, я значно випереджав групу. А у літку 2023 року я ознайомився з ray casting алгорітмом. У той час я використовував YouTube для пошуку цікавих ідей і знань, повторював за «вчителями», видумував потім щось своє вже... І ось я зіткнувся з тим що Python почав ЛАГАТИ. Я пробував використовувати numba/numPy, але це не дало результату.

Підсвідомо я розумів, що так бути не може, бо гра початку 90-х років на сучасному проці давати макс 60 фпс не може... І я почав вивчати Assembler. Подумав, що це буде швидко. Але по гайдах, встановивши Dos Box, не зрозумів, що таке Регістри, стек... Тому почав спочатку ознайомлення з тим, як працює компʼютер. І нарешті почав розуміти, що це таке. А потім я знайшов IDE SASM, там можна було під віндою програмувати під NASM/FASM. Погрався я трохи і зрозумів що гру написати тут не вийде. Тому я почав шукати нове IDE. І тут на англомовному YouTube каналі побачив, як лекторка англійського універу ознайомлює з програмуванням на FASM у Microsoft Visual Studio.

З цього часу почалося моє ознайомлення з цією чудовою IDE. До цього часу улюбленими були PyCharm та Visual Studio Code. А потім я знайшов чудовий канал і почав вивчати С++. Цікаво, що почав вивчати його з точки зору Assembler-а. Скажімо так, під кінець навчання у Praha It Step (грудень 2023), я вже писав першу самостійну гру на С++ (переписував того самого «Дурня»). Ясно, що після закінчення ніякої роботи я не знайшов, було мало знань. І я вирішив далі розвиватися сам.

Самостійний розвиток

Десь навесні 2024 року я закінчив пару ігор на WinApi та на одному ресурсі у Facebook побачив гайд, як встановити бібліотеку SFML. Я тоді думав використовувати SDL-2 . Але автор сказав що вона застаріла і написана у функціональній парадигмі, а ось SFML у ООП.

Тому я не зволікав і вже у квітні написав ще одну гру. А потім почав проходити англомовний курс по OpenGl . Це було як з ассемблером — я не розумів спочатку в чому різниця між vertices/indices. Потім я перейшов на інший канал, і там були файли на Git Hub. І там я зрозумів що це таке. Я повністю завершив курс. Але там не було розділу про Bones.

Паралельно я намалював свій перший КУБ у Blender. Короче, аби зробити мою першу 3D гру, мені довелося вигадувати як ці кості витягнути, і що потім з ними у shader робити. Гайдів не було, а були лише натяки, що треба витягнути матриці цих костей з файлу (*.Jltf ), і витягнути дані про вагу для кісток для кожної вершини, і потім у fragment shader ці матриці перемножати на дані ваги кожної вершини. Самі кісти анімував алгоритмічно, зробиши стей машину для цього (банальний sin часу помножений на якусь величину). І воно заробило. Отже якусь подобу гри я зробив на OpenGl.

Знайомство з Unreal Engine 5

І ось у другій половині минулого літа я встановив Unreal Engine 5 (здається була версія 5.4.). З того часу сиджу на UE5/Blender. Спочатку я думав, що у кінці 2024 року напишу свою першу гру для Steam. Базу маю, але маю поганеньку англійську, тому роботу поки не шукав. Зараз я зробив гру навесні, але по навчанню. А зараз вивчаю работу з анімаціями IK rig/ Control Rig. І думаю писати ще одну навчальну гру, і вже після неї робити проєкт (free-to-play звичайно) аби виставити його на steam.

Є питання з музикою. Але є сайти, які, думаю, дають безкоштовну музику. Може хтось що порадить? Ідеї власні є, але від поради доброї не відмовлюся, дякую.

Якщо що мій git Hub (давно не обновлявся, бо перешов на С++/Unreal Engin). github.com/settings/organizations.

Мої перші кроки у праграмуванні, гра на java skript 2023 рік

гра на основі raycasting на Pyhon + PyGame + Numba + NumPy . Зрозблена часткова по гайду з YouTube, але багато відсебятини. Тут я ознайомився уперше з алгоритмами пошука шляху, зокрема Dejkstra A*, до сих пір його використовую... Сама гра давала 60 фпс, але запис відео все зіпсував...

Перша гра на С++

Гра написна на WIN API (розмір 250 кб якщо шо, всі графічні файлі відмалйовуються при ініціалізації і заберігаються потім для анімації — це моя ідея.. а звуки зробив за допомогою SDL-2)

єдина гра написана на SFML 2024 — написав за тиждень тіки місяць не пам*ятаю, весною перед поїздкою до міста Хеб де я працював на складі DHL Cheb adidas .

моя гра яку я написав на C++/OpenGl(GLAD, GLSW, JSON,...)

мої перші кроки у UE5 — серпень 2024

моя остання гра яку я написав взимку 2024-2025. До речі цікаво те що написана на двох мовах програмування. Основна гра на С++, а конструктор рівнів які зберігаються у структурі *csv написаний на Pyhon + Pygame + Pandas ru.files.fm/u/9actr9uem8

У Blender я досить непогано освоїв освноі модифікатори, може створбювати low poly character, також використовую багато плагінів. Для генерації персонажів зараз використовую MPFB. Анімації роблю сам або качаю з mixAmo і редагую їх за потреби... Також із останнього освоїв geo nodes у Blender — мощний інструмент.
Останні мої роботи пов*язані з роботою інімаціями, бо зараз довчаю control rig. А це відео коли я експерементував з механізмом рігу інверсної кінематики...

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Гайдів не було, а були лише натяки, що треба витягнути матриці цих костей з файлу (*.Jltf ), і витягнути дані про вагу для кісток для кожної вершини, і потім у fragment shader ці матриці перемножати на дані ваги кожної вершини

Може краще у vertex shader? Наскільки я розумію, у fragment shader виставляється колір. Але я тільки недавно почав вивчати opengl. Я беру уроки у ChatGPT

Такий результат в opengl — це просто прекрасно і достойно поваги. Opengl дуже складний

Дуже дякую. Я вчився по гайдам, спочатку у індуса на його каналі, але там англійська була складна, тому я тілько дойшов до створення классу камери і так як навіть не рузумів токлом в чому різниця між Idices/Vertices, я вже про інше промовчу, там постобобку... То я перейшов на інший англомовний канал (можли що то наш земляк, але на англійській вів). І я йому вдячний. Бо я зрозумів основи хочаб. І багато коду потирив у нього. А потім вже дороблявав. А у нього на каналі є усі від тіней, постообробки до bloom/paralax/normal mal... Короче всі алгоритми дав. І всю базу. Тільки костей Bones у нього не було.

А який алгоритм був у «Дурня»? Напряму по вікіпедії чи модний «Monte Carlo Tree Search» та інший там Machine Learning

Нафіга це постити в телеграм канал доу? Якщо чувак хоче поділитись на форумі чимось — це його право, але чому редакція вважає, що це настільки цікава історія що варто запостити це в стрічку новин?

По факту, за три роки вивчення геймдеву чувак досягнув рівня — вивчаю IK Rig в Unreal engine...

варто запостити це в стрічку новин

Яку стрічку новин?

Редакція, нафіг ви це дАвно випустили сюди?

Це форум, тут будь-хто може ділитися думками.

Дивне якесь розуміння терміну «ділитися думками» стосовно лайна цього дятла.

А в чому проблема описати свій досвід? Вам це може не подобатися, це теж нормально.

А в чому конкретно ваша претензія, бо я за образами не розумію? Я розумію, що автор в коментарях теж відписує не зовсім коректно.

Перше лайно вже видалене. Це добре.

Ось ще два, якщо погано зовсім з розпізнаваням:

Яке ваше собаче вибачте що я роблю у вільний час?
просто взяти і написати.. тіпа це Я ТАКИЙ КРУТИЙ І РОЗУМНИЙ? Звідкиля автор знає за скільк я вивчав С++?

Поправили перше, в другому образ немає, фактично правила не порушені. Автора ми попередимо

Його у дитсадок потрібно здати, а не попереджати, бо мабуть проскіпав, а батьки не навчили себе поводити пристойно.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Панове, будь ласка, без образ. Доведеться видаляти коментарі.

Краще видалити топік цілком, бо істота тупо не вміє себе поводити.

Панове, будь ласка, без образ. Доведеться видаляти коментарі.

Але є сайти, які, думаю, дають безкоштовну музику.

Правильно думаєте: раз, два. Далі ще погугліть.

+1
я звідси безкоштовні композиції та спецефекти брав:
opengameart.org/...​_by=count&sort_order=DESC

але зараз можна вже своє через AI нагенерувати, тільки треба вчитатися що там з ліцензією на використання:
suno.com
www.riffusion.com

про suno нещодавно дізнався. Цікаво для гри free to play яка буде викладатися у стімі можно там композиції безкоштовні робити...

Якщо що мій git Hub

Посилання на загальну сторінку.

Також відео моєї останньої гри

Join-walled посилання.

Ага. Я теж хотів хоча б відос гри подивитися, але фейсбук пропонує приєднатися до якоїсь групи «Game Development For Beginners» — чом би не викласти наприклад на ютубі.
Взагалі, коли автор хоче поділитися чимось з аудиторією то за елементарним правилом мережевого етикету буде дати лінк на ресурс який не вимагає реєстрації..

сорян я думав то відкрита група. Постараюся виправити

Я тоді думав використовувати SDL-2 . Але автор сказав що вона застаріла і написана у функціональній парадигмі, а ось SFML у ООП.

Зараз вже SDL3, але це не означає, що «SDL2 застаріла»
SDL використовується набагато більше, бо має C інтерфес, і може бути використана з будь-якою мовою програмування.
SFML — це C++, у порівнянні з SDL майже не використовується.

І ось у другій половині минулого літа я встановив Unreal Engine 5
Спочатку я думав, що у кінці 2024 року напишу свою першу гру для Steam.
маю поганеньку англійську, тому роботу поки не шукав.

Ви займаєтесь не тим, чим треба і марнуєте свій час.

Якщо що мій git Hub (давно не обновлявся, бо перешов на С++/Unreal Engin). github.com/settings/organizations.

Ага.

така застаріла вона. І взагалі ці всі SDL/ SFML , їх так багато що... Та і можна свій SDL2 написати.... Це більше інструмент для початківців. Під OpenGl я взагалі використовував GLSW. І таки так ООП — сьогодні це стандарт. І в іграх без нього ні куди! Видимо автор з іншої сфера де ООП не потрібно. І по третє писати що я марную свій час це ЗВИЧАЙНО КРУТО. Яка ваша справа, що я роблю у вільний час?

Коментар порушує правила спільноти і видалений модераторами.

Мабуть забув додати «Вивчив C++ за 24 години»

просто взяти і написати.. тіпа це Я ТАКИЙ КРУТИЙ І РОЗУМНИЙ? Звідкиля автор знає за скільк я вивчав С++?

Коментар порушує правила спільноти і видалений модераторами.

Підписатись на коментарі