Giter Site home page Giter Site logo

marciovmf / smol Goto Github PK

View Code? Open in Web Editor NEW
28.0 7.0 1.0 27.67 MB

Uma game engine desenvolvida ao longo de uma série de vídeos do canal https://www.youtube.com/gamedevlog

Home Page: https://www.youtube.com/watch?v=SCL70wik3Ts&list=PLt_f2ildHl1lZdx8R3CjjH50R8EV6d7CH

License: Apache License 2.0

CMake 72.46% C 9.84% C++ 14.23% GLSL 0.11% Python 0.06% M4 0.02% Shell 0.41% Cuda 0.02% Fortran 0.05% Objective-C 0.01% Objective-C++ 0.01% Tcl 0.06% Batchfile 0.01% Emacs Lisp 0.33% Vim Script 2.37%
gamedev gamedevelopment opengl fromscratch youtube-channel gamedevlog smol engine gameengine

smol's Introduction

smol's People

Contributors

marciovmf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

smol's Issues

Mesh baking and loading

Support .obj file baking and loading.

  • Make an API / tool for loading and backing .obj files to a custom optimized format
  • Calculate face normals if not provided

Instanced mesh node

Just like MeshNodes, there should be an InstancedMeshNode that will be further grouped and rendererd as Instanced meshes with a single draw call.

TextBox improvements

  • Make possible to paste from system clipboard
  • Clamp or scissors text overflowing from the textBox
  • Right justify text when navigating with the cursor along a string larger than the textBox width

Text input system

So far our GUI system has no way to get text input. Despite already being possible to handle TextEvents, there is no system to collect those events nor there is a GUI control to serve as an input box

Sprite Node Rendering

Make it possible to add "Sprite nodes" to the scene as a way to render sprites. Ideally sprites sharing a material should be drawn all at once.

Memory manager

  • There must be a way to tag memory allocations in order to track how much memory each is bein used by each system.
  • Any overhead of this tagging/tracking system should be totally removed on Release builds.
  • There must be an API to query the status of memory allocations and get reports of memory usage like total allocated and total used

Editor Camera

While in "Editor Mode" there must be a dedicated camera to move around the scene.

Variables settings file

Create a system that loads a varaibles/tweak file at startup. This file might contain variables for the many engine systems but also for the game itself. The file format should make it clear to which system a given variable is associated to.

Simple Immediate mode GUI

  • Make the engine provide the game a way to draw stuff in Immediate mode.
    make a simple Immediate mode GUI api with at least:
  • Button
  • Slider
  • Checkbox
  • Panel
  • ComboBox

Single file shader assets

Using the config file syntax, declare shader sources for all stages -Vertex, Fragment and (optional)Geometry - in a single file.

Mesh Node Rendering

Make it possible to add "Mesh nodes" to the scene as a way to render meshes

Framebuffer support

At the moment we are rendering to the default framebuffer.
The renderer should create a custom framebuffer in order to support more advanced rendering techniques like shadow mapping and render to texture.

This feature depends on #27

Camera node

Create a CameraSceneNode and integrate it with the scene and renderer

  • Create PerspectiveCameraSceneNode (Perspective and Orhtographic)
  • Add Scene::setDefaultCamera(Handle)
  • Add Scene::getDefaultCamera()
  • Make the Renderer use the default camera for rendering
  • Support multiple cameras

Material additional render states

  • Make possible to set CULLING mode from a material
  • Make possible to set ALPHA mode from a material
  • Make possible to set DEPTH testing from a material

GUI Text input improvements

  • Move input cursor with keyboard (ARROW KEYS)
  • Move input cursor with keyboard (HOME/END KEYS)
  • Select text with keyboard (SHIFT + ARROW KEYS)
  • Select text with keyboard (SHIFT + HOME/END KEYS)

Log System

Add facilities for logging. The log system should be fast and ubiquitous. Any part of the engine or games should be able to use it easily.

Implement an Event system

Events should be enqueued and dispatched to event handlers.
Any subsystem or even the game itself should be able to be notified about certain event types and handle them.

Basic event types should include:

  • Text input events
  • Mouse move events
  • Mouse Button events
  • Mouse Wheel events
  • Keyboard events
  • Application events (became acitve/inactive)

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.