Він 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, але це не дало результату.
Підсвідомо я розумів, що так бути не може, бо гра початку
З цього часу почалося моє ознайомлення з цією чудовою 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
моя остання гра яку я написав взимку
У Blender я досить непогано освоїв освноі модифікатори, може створбювати low poly character, також використовую багато плагінів. Для генерації персонажів зараз використовую MPFB. Анімації роблю сам або качаю з mixAmo і редагую їх за потреби... Також із останнього освоїв geo nodes у Blender — мощний інструмент.
Останні мої роботи пов*язані з роботою інімаціями, бо зараз довчаю control rig. А це відео коли я експерементував з механізмом рігу інверсної кінематики...
29 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівМоже краще у 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 яка буде викладатися у стімі можно там композиції безкоштовні робити...
Посилання на загальну сторінку.
Join-walled посилання.
Ага. Я теж хотів хоча б відос гри подивитися, але фейсбук пропонує приєднатися до якоїсь групи «Game Development For Beginners» — чом би не викласти наприклад на ютубі.
Взагалі, коли автор хоче поділитися чимось з аудиторією то за елементарним правилом мережевого етикету буде дати лінк на ресурс який не вимагає реєстрації..
сорян я думав то відкрита група. Постараюся виправити
Зараз вже SDL3, але це не означає, що «SDL2 застаріла»
SDL використовується набагато більше, бо має C інтерфес, і може бути використана з будь-якою мовою програмування.
SFML — це C++, у порівнянні з SDL майже не використовується.
Ви займаєтесь не тим, чим треба і марнуєте свій час.
Ага.
така застаріла вона. І взагалі ці всі SDL/ SFML , їх так багато що... Та і можна свій SDL2 написати.... Це більше інструмент для початківців. Під OpenGl я взагалі використовував GLSW. І таки так ООП — сьогодні це стандарт. І в іграх без нього ні куди! Видимо автор з іншої сфера де ООП не потрібно. І по третє писати що я марную свій час це ЗВИЧАЙНО КРУТО. Яка ваша справа, що я роблю у вільний час?
Коментар порушує правила спільноти і видалений модераторами.
Мабуть забув додати «Вивчив C++ за 24 години»
просто взяти і написати.. тіпа це Я ТАКИЙ КРУТИЙ І РОЗУМНИЙ? Звідкиля автор знає за скільк я вивчав С++?
Коментар порушує правила спільноти і видалений модераторами.