Git Product home page Git Product logo

minecraft-glfw's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

minecraft-glfw's Issues

Баг отрисовки границ чанка под землей

Функция DrawVoxel (находится в классе Chunk) должна определять есть ли блок в соседнем чанке чтоб решить рисовать ей грань или нет.
На данный момент она работает не совсем правильно. Грани XFront и ZRear (вроде как) рисуются тогда, когда не должны

Скрин проблемы:
image

Однако на противоположные грани эта проблема не распостраняется
image

Вывод текста на экран

Нужно как-то выводить текст на экран, то есть в GUI (возможно и на 3D пространство), в OpenGL нет встроенного инструмента для этого.

GUI

Нужно сделать инструмент, который будет выводить изображения непосредственно на экран, а не в 3D пространство. Весь интерфейс пользователя обязан рендериться одним вызовом функции glDrawElements. Он также должен быть способен динамически обновляться (менять текстуры выборочных элементов, двигать их).

Система частиц

Динамические плоские меши которые в основно мотображают текстуры ( примеры ниже )

Баг отрисовки при обновлении чанка

Когда ломаешь крайний блок чанка, появляется дырка в прорисовке со стороны соседнего чанка.
Причина - соседний чанк не обновляется. Обновить его не представляется возможным, так как ему нужны ссылки всех соседних чанков для правильного обновления.
Способ решения: передавать в функцию обновления чанка не адреса соседних чанков, а адрес контейнера, в котором хранятся чанки (std::map)

Функция обновления чанка находится в классе Chunk (Source/Voxel/Chunk.h);
Вызов этой функции происходит из класса World (Source/World/World.h), функция SetBlock()

Панель инструментов

Панель инструментов должна содержать предметы, которые можно использовать.
//ждем пока пудет готов инвентарь

Inventory system

Нужно сделать систему инвентаря. Ее будем прикручивать не только персонажу, но и сундукам, существам и тд.
Базовая схема: есть класс Item (пока пусть хранит id предмета и максимальное количество в стеке).
Дальше есть структура InventorySlot. Она хранит в себе обьект класса Item и количество предмета в стеке.
И есть сам класс инвентаря. Он как минимум должен иметь массив или любой другой контейнер (list, map, vector...) обьектов класса InventorySlot и максимальное количество предметов/слотов которые может иметь данный инвентарь.

Баг с блоками

Если ставить кучу блоков "под себя", можно застрять в текстурах.

Untitled

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.