Open an issue at GitHub issue tracker. Before doing that, ensure the bug was not already reported or fixed in master
branch. Describe a problem and, if necessary, provide minimal code needed to reproduce it.
Note that macOS compatibility issues are not considered bugs. Dagon uses OpenGL and doesn't support macOS where OpenGL is deprecated.
Open a new GitHub pull request with your patch. Provide a description of the problem and solution. Follow our code style.
New code should at least:
- work under Windows and POSIX systems and provide platform-agnostic API
- support x86 and x86_64 targets
- use OpenGL 4.0 and GLSL 4.00 (core profile)
- use dlib for game math, image decoding, file I/O and other tasks dlib was created for
- follow our code style
- use transparent dynamic memory allocations. Ideally the code should not allocate at all or rely on user for that. Garbage collector usage is not allowed. If dynamic allocations can't be avoided, they should be done with
dlib.core.memory
. All classes should usedlib.core.ownership
- not violate copyright/licensing. When adapting third-party code, make sure that it is compatible with Boost Software License 1.0.
Adding new external dependencies should be avoided as much as possible. Only GC-free third-party D libraries are allowed. C libraries should be linked via BindBC binding.
master
branch is a development branch for the next release. When release is ready, a release branch is created from master
(for example, dev_0.10
). Release branches are not merged back into master
, they are used to fix bugs and make minor updates.
Dagon follows D style. Essential rules are the following:
- Use spaces instead of tabs. Each indentation level is 4 spaces
- Opening curly bracket should be on a new line
- Functions and variables should be in
camelCase
- Types, constants and enums should be in
PascalCase
- Module names should be in lowercase.
Each D module should start with a Boost license block prepended with a copyright notice:
/*
Copyright (c) 2020 <author's name here>
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/