Duck is a suite of commonly used components and extensions for unity game development, intended to be used within a larger game project to limit code duplication across projects and promote good practice by setting a standard and encouraging decoupled independent components. The project is split accross multiple repositories. This repo contains the core features & utilities. New features can be pull requested into here, and if they become sizable, they can be moved into their own repository.
There are also useful editor tools and extensions that can speed up development and bypass monotonous tasks
- Unity 5.3 or newer
DUCK uses the philosophy set out by unity. This means making heavy use of the editor where possible and using MonoBeahviour, ScriptableObject and SerializableObject. Other approaches which wrap these up or reinvent the wheel in attempts to gain more control often result in over abstraction, and codebases that are far more difficult to jump into for new developers, (especially those who already have experience with unity). Using MonoBehaviours over objects away from the scene, make it easier to reuse components, since they can be added in the editor
We also want to promote using composition (component based design), over deep inheritance hierarchies, because it is easier to reuse smaller bits of functionality and promotes the single responsibility principle.
All Contribution is done via pull request using gitflow.
The Unity 5.3+ editor comes with test tools built in. We try to maximize test coverage of all features. Anything that can be unit tested, should be unit tested. Test coverage is an on going part of our maintenence.
Each feature should have it's own basic documentation in the feature's directory or repository under a Docs
folder in the form of a structure of markdown files with links between them. On top of this there should be inline c# Documentation on all public apis as a minimum. Non public api documentation is also encouraged and inline comments where necessary.