Это ванильная реализация на Go классической текстовой компьютерной игры 1973 года, впервые разработанной Грегори Йоб Хантом (Gregory Yob Hunt The Wumpus).
Она включает в себя все уровни из Wumpus II, механизмы из Wumpus III и Super Wumpus, а также расширенный режим.
▪Github
#golang #gamedev
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.
Игра написана с использованием движка Ebitengine и даже доступна в Steam.
•Github
•Проект
#ebitengine #gamedev #golang
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Этот проект представляет собой клон Minecraft, разработанный «с нуля» на Go с использованием только современного OpenGL.
Он не опирается на готовые игровые движки или фреймворки, что делает его особенно интересным для разработчиков, желающих глубже изучить 3D-графику и принципы создания игр на низком уровне.
Основные возможности проекта
- Процедурная генерация мира:
Используется многократно применяемый Perlin noise для создания бесконечного, процедурно генерируемого ландшафта. Присутствует система биомов, генерация пещер, деревьев и даже простейших систем формирования рельефа.
- Физический движок:
Реализована своя физика с обнаружением столкновений, обработкой столкновений и динамикой твердых тел. Это позволяет корректно обрабатывать прыжки, столкновения игрока с окружающими объектами и другие физические взаимодействия.
- Графика и рендеринг:
Приложение написано с использованием OpenGL 4.1. Реализованы собственные шейдерные программы для отрисовки блоков, UI-элементов и эффектов, а также применяются методы отсечения (view frustum culling) для оптимизации рендеринга.
- Игровой цикл и механика:
В проекте присутствует смена дня и ночи, динамическое освещение, а также возможность размещения и удаления блоков, что имитирует базовую механику игры Minecraft. Также предусмотрены такие элементы, как инвентарь игрока и режим полёта.
- Динамическая загрузка чанков:
Мир разбит на чанки, которые подгружаются и выгружаются динамически в зависимости от положения игрока, что помогает снизить нагрузку на систему и обеспечить плавную работу даже в больших мирах.
Как реализован проект
Язык и библиотеки:
Проект написан на Go. Для работы с графикой используются библиотеки github.com/go-gl/gl/v4.1-core/gl и github.com/go-gl/glfw/v3.3/glfw, а для математических вычислений применяется github.com/go-gl/mathgl/mgl32.
Архитектура:
Код организован по принципу компонентного подхода:
- World и World Generator: отвечают за генерацию чанков, ландшафта и размещение объектов (деревьев, пещер и т.д.).
- Physics Engine: содержит реализацию динамики, обработки столкновений и расчётов движения.
Рендеринг: система отрисовки, которая включает шейдеры, оптимизацию через отсечение невидимых объектов и поддержку динамического освещения.
- Система управления: включает обработку ввода с клавиатуры и мыши, что позволяет управлять персонажем, переключать режимы (например, полёта) и взаимодействовать с миром.
Проект интересен нескольким категориям разработчиков:
- Любители OpenGL и низкоуровневой графики:
Он демонстрирует, как можно создать полноценное 3D-приложение с использованием только OpenGL без сторонних движков.
- Разработчики на Go:
Go не часто ассоциируется с разработкой игр, поэтому данный проект может служить хорошим примером того, как использовать возможности языка для создания графически насыщенных приложений.
- Инженеры, интересующиеся процедурной генерацией и физическими движками:
Реализация процедурного мира, генерация ландшафта с помощью Perlin noise и собственный физический движок представляют собой интересный материал для изучения и экспериментов.
▪ Github
@golang_google
#gamedev #Minecraft #golang #go
Please open Telegram to view this post
VIEW IN TELEGRAM