Ducktape is an Open source Light weight 2d Game Engine that gives utmost priority to user convenience.

Related tags

Game hacktoberfest
Overview

Ducktape

Ducktape is an Open source Light weight 2d Game Engine that gives utmost priority to user convenience. It is written in c++ and uses SFML and Box2d for graphics and physics respectively. Note: This project is under heavy development, thus it is not easy to build and export games made with Ducktape as of the time of writing.

Features

Here's a list of all of the features that have been finished/is going to be implemented in the Ducktape engine.

Contributing to Ducktape

See CONTRIBUTING.md for more information on contributing to Ducktape.

Community

Join the Ducktape Discord Server if you need any help on contributing/using the engine, or if you just wanna hang out with a bunch of awesome people.

License

This project is licensed under the MIT License

Comments
  • Make Ducktape a library

    Make Ducktape a library

    What

    • [x] Proper file structure
    • [x] Split .h files into .h and .cpp files so it can be compiled into binary
    • [x] Make sure it compiles on Windows

    Why As of now, Ducktape can't really be called a library as, well, it's not a library. People can't even compile it on windows, neither can it be compiled into binary. So I made an issue to track all of the stuff that needs to be done.

    More tasks to finish:

    • [x] Link against all the binaries
    • [x] Provide a .so, .dll, .a, and .lib binaries
    enhancement 
    opened by aryanbaburajan 10
  • Use static variables instead of functions for Vector2 class' direction methods.

    Use static variables instead of functions for Vector2 class' direction methods.

    What In the Vector2.h header file, replace the static Vector2 Down, Left(), NegativeInfinity(), One(), PositiveInfinity(), Right(), Up(), Zero() methods with static variables that replace the methods. Why Seperate methods for this is unnecessary as all those methods do is return a specific Vector2() value. This can be done with just static variables.

    enhancement hacktoberfest 
    opened by aryanbaburajan 9
  • Documentation

    Documentation

    Write documentation for all the classes, methods, and members, that's all. :) Here's a checklist for all the files: Engine:

    • [x] Component.h
    • [x] MeshRenderer.h
    • [x] DirectionalLight.h
    • [x] PointLight.h
    • [x] Tag.h
    • [x] Transform.h
    • [x] Configuration.h
    • [x] Debug.h
    • [x] Engine.h
    • [ ] Entity.h
    • [ ] LoopManager.h
    • [ ] Macro.h
    • [x] Scene.h
    • [x] Time.h
    • [x] Window.h
    • [x] Input.h
    • [x] Key.h
    • [ ] Serialization.h
    • [x] UserPointer.h
    • [x] Camera.h
    • [x] Cubemap.h
    • [x] Mesh.h
    • [ ] Renderer.h
    • [x] Shader.h
    • [x] Texture.h
    • [x] Vertex.h

    Editor:

    • [ ] Editor.h
    • [ ] EditorModules.h
    enhancement hacktoberfest 
    opened by aryanbaburajan 7
  • Particle System

    Particle System

    Is your feature request related to a problem? Please describe. There is no particle system that would let me create special visual effects.

    Describe the solution you'd like A flexible particle system component.

    feature 
    opened by Z7RAGE 5
  • Optimization: Loading textures only once.

    Optimization: Loading textures only once.

    Is your feature request related to a problem? Please describe. As of now, the engine loads sprites from local directories literally every frame. This is not performance-friendly at all. According to SFML:

    Using as few textures as possible is a good strategy, and the reason is simple Changing the current texture is an expensive operation for the graphics card. Drawing many sprites that use the same texture will yield the best performance. Additionally, using a single texture allows you to group static geometry into a single entity (you can only use one texture per draw call), which will be much faster to draw than a set of many entities. Batching static geometry involves other classes and is therefore beyond the scope of this tutorial, for further details see the vertex array tutorial.

    source: SFML tutorial

    Describe the solution you'd like Use a set<pair<string,sf::Texture>> to hold all of the loaded textures. If a sprite requires the engine to load from x (temporary name) directory, go through the set to check if the asset x has been loaded before. If it has, use that texture. If not, load the texture and add this newly loaded texture to the set for reusing.

    feature hacktoberfest 
    opened by aryanbaburajan 5
  • Resource Browser

    Resource Browser

    Is your feature request related to a problem? Please describe. A File Explorer-like Window that could be used to navigate through the Resources (assets) used by the current project, with options to rename, and delete the files/directories. It'd be great to also allow for searching for files based on their name, and for copying and pasting files between directories.

    Similar to Unity's Asset window: image Or Unreal's Asset Browser window: image

    feature hacktoberfest 
    opened by aryanbaburajan 4
  • Finishing the physics engine.

    Finishing the physics engine.

    Implementing the Physics engine had started in #4, but never got actually finished. This issue will be used to track all of the upcoming features that need to be added. ~~For now this issue is only focusing on basic collision. Physics joints will be tracked in another issue.~~ Nevermind, the issue seems very short, so I'll be adding physics joints as well. And I almost forgot, methods like "OnCollisionEnter" need to be added as well, I'll be adding them soon, once the ones below are finished. Here we go:

    • [x] (1) Simple Rigidbodies (No Colliders attached)
    • [x] (2) Box colliders
    • [x] (3) Circle colliders
    • [x] (4) Edge colliders
    • [x] (5) Custom polygon colliders
    • [x] (6) Revolute Joint
    • [x] (7) Distance Joint
    • [x] (8) Prismatic Joint
    • [x] ~~(9) Line Joint~~
    • [x] (10) Weld Joint
    • [x] (11) Pulley Joint
    • [x] (12) Friction Joint
    • [x] ~~(13) Gear Joint~~
    • [x] ~~(14) Mouse Joint~~
    • [x] ~~(15) Wheel Joint~~
    • [x] ~~(16) Rope Joint~~
    • [x] (17) OnCollisionBegin
    • [x] (18) OnCollisionEnd
    • [x] (19) AddForce
    • [x] (20) Friction, Drag, etc. properties
    • [x] (21) Raycasts
    • [ ] (22) Collision Shape Overlap
    • [ ] (23) Finishing (fix bugs, etc.)

    This website would be helpful in working on these.

    feature 
    opened by aryanbaburajan 4
  • Remove UpdateEssentials.

    Remove UpdateEssentials.

    What Remove UpdateEssentials. Why It was implemented as a carrier-struct that contains sf::RenderWindow and etc. variables related to the engine, that is used while calling functions. I think there isn't a need for this, as all of these variables are already available from the DT namespace.

    enhancement hacktoberfest 
    opened by aryanbaburajan 4
  • Rewrite rendering system

    Rewrite rendering system

    Until now, I had been following a Vulkan tutorial, so the rendering system was not very scalable, and it could only render one mesh, one texture, and alot other limitations. But since I'm done with that tutorial now, it's time to restructure this. I plan to have the following classes:

    • [ ] Texture
    • [ ] Shader
    • [ ] Mesh (component) And the rendering system should then loop through the Mesh component every frame and render the mesh stored in it.
    enhancement 
    opened by aryanbaburajan 3
  • Unresponsive window with window managers like i3

    Unresponsive window with window managers like i3

    Describe the bug The window by default opens into the resolution of 800x500, but the wm (window manager) forces it to open in full screen, making it stretched out. And since the wm is forcing it to go full screen, the engine itself is not aware of the fact that the resolution has been changed, and is not resetting the view to the appropriate values. And resizing the window fixes this unresponsive issue, as the engine is notified about the resizing, and is aware.

    To Reproduce Steps to reproduce the behavior:

    1. Run the flappy bird example while using a window manager like i3
    bug 
    opened by aryanbaburajan 3
  • In-built Sprite Editor Feature

    In-built Sprite Editor Feature

    Can I try making this?

    [Edit] This is a Pixel art editor inside the Game Engine, which makes users easy to use the engine! So, we can make sprites easier and prolly faster! I guess we have some plans to make DuckTape for phones.. In those cases, this idea would be so helpful i guess! :)

    opened by RomKart 3
  • Allow multi texturing

    Allow multi texturing

    Describe the solution you'd like Allow multi-texturing, having multiple diffuse/specular/etc. textures in a single mesh. This would also allow for merged textures, for grass/dirt effects etc.

    feature 
    opened by aryanbaburajan 0
  • Parent-Child Relationship System

    Parent-Child Relationship System

    Is your feature request related to a problem? Please describe. As of now, there does not exist a way to "group" multiple Entities together, such as Meshes of a single Model.

    Describe the solution you'd like Implement Parent-child Relationship system using Components. The whole system would run on a component:

    class Relationship
    {
    public:
        Entity parent;
        std::vector<Entity> children;
    
        SetParent(Entity parent);
        AddChild(Entity child);
        RemoveChild(Entity child);
    };
    

    Here's a sample usage:

    Entity parent = scene.CreateEntity();
    Entity child = scene.CreateEntity();
    
    scene.Assign<Relationship>(parent).AddChild(child);
    // OR Alternative method:
    scene.Assign<Relationship>(child).SetParent(parent);```
    feature 
    opened by aryanbaburajan 0
Releases(v1.0.1)
  • v1.0.1(Mar 13, 2022)

    What's Changed

    • Fix #89, #90, #91 by @TheDuckDev in https://github.com/DucktapeEngine/Ducktape/pull/92

    Full Changelog: https://github.com/DucktapeEngine/Ducktape/compare/v1.0...v1.0.1

    Source code(tar.gz)
    Source code(zip)
  • v1.0(Feb 19, 2022)

    The first Ducktape release! 👏

    It's been over 6 months and now it's finally time to release the damn library. Okay so, Ducktape supports:

    • Scenes, Entities, Components, Scripting
    • Rendering
    • Audio
    • Physics

    To get started: https://ducktapeengine.github.io/

    Source code(tar.gz)
    Source code(zip)
Owner
Ducktape
Convenience, that's Ducktape.
Ducktape
MAZE (My AmaZing Engine) - 🎮 Personal open-source cross-platform game engine

MAZE (My AmaZing Engine) is the self-written open-source cross-platform game engine in the active development stage. At the moment it is my main pet project, developed for the purpose of learning and preserving different game dev technologies.

Dmitriy Nosov 13 Dec 14, 2022
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World.

OpenXRay OpenXRay is an improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. S

null 2.2k Jan 1, 2023
OpenMW is an open-source open-world RPG game engine that supports playing Morrowind.

OpenMW is an open-source open-world RPG game engine that supports playing Morrowind.

null 4.5k Jan 2, 2023
Minetest is an open source voxel game engine with easy modding and game creation

Minetest is an open source voxel game engine with easy modding and game creation

Minetest 8.3k Dec 29, 2022
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Jakub Biliński 48 Dec 29, 2022
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

 PardCode 61 Dec 14, 2022
Rogy-Engine- - My 3D game engine source code.

Rogy-Engine Development My 3D game engine. (NOT THE FINAL VERSION- Windows only) Features: PBR shading and reflection probes with parallax correction.

AlaX 97 Dec 28, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.9k Jan 8, 2023
KlayGE is a cross-platform open source game engine with plugin-based architecture.

KlayGE KlayGE is a cross-platform open source game engine with plugin-based architecture. It's started since 2003. The explicit goal of KlayGE is: to

Minmin Gong 1.8k Dec 23, 2022
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

Panda3D Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for a

Panda3D 3.6k Dec 31, 2022
MIT Licensed Open Source version of Torque 2D game engine from GarageGames

We've moved! All torque engines have moved to a new organization, Torque Game Engines. Torque2D can be found at https://github.com/TorqueGameEngines/T

GarageGames 1.7k Dec 14, 2022
Free, open-source, game engine and a 3D sandbox.

Work-in-Progress The official "early alpha" release should be available around April 2021 SGEEngine SGEEngine is an open source (MIT License), C++ cen

ongamex 72 Dec 7, 2022
SnaX Game Engine - Open Source

SnaX Game Engine License SnaX Game Engine - https://github.com/snaxgameengine/snax Licensed under the MIT License http://opensource.org/licenses/MIT.

SnaX Game Engine 14 Dec 1, 2022
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 173 Jan 2, 2023
Godot Engine – Multi-platform 2D and 3D game engine

Godot Engine 2D and 3D cross-platform game engine Godot Engine is a feature-packed, cross-platform game engine to create 2D and 3D games from a unifie

Godot Engine 56.7k Jan 9, 2023
Flax Engine – multi-platform 3D game engine

Flax Engine – multi-platform 3D game engine

Flax Engine 3.7k Jan 7, 2023
The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

null 2.8k Dec 29, 2022
Hyperion Engine is a 3D game engine written in C++

Hyperion Engine About Hyperion Engine is a 3D game engine written in C++. We aim to make Hyperion be easy to understand and use, while still enabling

null 293 Jan 1, 2023
Open Game Engine Exchange

This repository contains reference code for the Open Game Engine Exchange (OpenGEX) file format.

Eric Lengyel 62 Nov 27, 2022