{"id":13731299,"url":"https://github.com/septag/darkhammer","last_synced_at":"2025-05-08T04:32:47.282Z","repository":{"id":15252066,"uuid":"17981117","full_name":"septag/darkhammer","owner":"septag","description":"darkHAMMER is a lightweight, open-source, multiplatform game engine. written in C (C99) language, supports python and C# bindings and lua scripts. Runs on windows and linux","archived":true,"fork":false,"pushed_at":"2017-07-10T20:36:46.000Z","size":6242,"stargazers_count":97,"open_issues_count":0,"forks_count":10,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-08-04T02:10:03.193Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"multidimension-al/oauth2-shopify","license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/septag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-03-21T13:56:52.000Z","updated_at":"2024-06-11T14:29:27.000Z","dependencies_parsed_at":"2022-08-03T05:15:27.248Z","dependency_job_id":null,"html_url":"https://github.com/septag/darkhammer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septag%2Fdarkhammer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septag%2Fdarkhammer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septag%2Fdarkhammer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septag%2Fdarkhammer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/septag","download_url":"https://codeload.github.com/septag/darkhammer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224702239,"owners_count":17355521,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T02:01:26.823Z","updated_at":"2024-11-14T22:30:46.140Z","avatar_url":"https://github.com/septag.png","language":"C","funding_links":[],"categories":["Engines"],"sub_categories":[],"readme":"## darkHAMMER Game Engine\n\nVersion 0.5.1-devel  \n[https://github.com/septag/darkhammer](https://github.com/septag/darkhammer)  \n[https://github.com/septag/libdhcore](https://github.com/septag/libdhcore) - dakHAMMER Core library\n\n### Description\n*darkHAMMER* is a lightweight, open-source, multiplatform game engine. written in C (C99) language.\nSupports additional scripting languages like *Python*, *C#* and *Lua*.  \nCurrent supported platforms are Windows (Direct3D10+, OpenGL3.3+) and Linux (OpenGL3.3+) (tested on ArchLinux 3.13), MacOS support is there, but it's incomplete and have problems in some parts of graphics and build system.\n\n### Videos\n- [Character Animation Tools](https://youtu.be/Xbsj6LUVThE)\n- [Rigid body physics test](https://youtu.be/Y7qeH95COs0)\n- [Profile/Monitoring tools](https://youtu.be/LLpdIgjjPDw)\n- [Content creation and hot loading](https://youtu.be/exOkFoyiCb0)\n- [Software Occlusion culling](https://youtu.be/Onvsn-N7Ruk)\n\n### Installation\n\n*darkHAMMER* requires some 3rdparty libraries for it's tools and engine, which are not included inside engine's repo. Some of them are already available as a package on many linux distros, some are not.  \nThese are the main external 3rdparty libraries that needs to be fetched from their official repos, other 3rdparty libs are included with the engine.\n\n- *Assimp*: Asset loading library (package name: *assimp*)\n- *lua*: Scripting library (package name: *lua*)\n- *GLEW*: OpenGL extensions library (package name: *glew*)\n- *GLFW*: OpenGL context management library\n- *EFSW*: Cross-platform file-system watcher\n\n#### Linux\nYou must have the following packages installed before trying to build:\n\n- **git**\n- **waf**: main build system\n- **cmake**: for building 3rdparty libraries like *assimp*\n- **gcc**\n- **python**: version 3 and higher\n- **wget**: for fetching non-existing 3rdparty libraries from web\n- **pkg-config**: for aquiring information from installed packages\n- **unzip**: for unzipping 3rdparty repos\n\nBefore begin to build the engine and tools, you have to build and install the 3rdparty libraries listed above, There is a tool which does this for you automatically. So start by entering following commands:\n\n```\ngit clone git@github.com:septag/darkhammer.git\ncd darkhammer\nsudo ./install_3rdparty --prefix=/path/to/prefix\n```\n\n*install_3rdparty* tool will first search for existing 3rdparty packages, if not found, it will try to fetch them from their official repos and build them on your system. There is also an optional *--prefix* argument, which you can define where to install the libraries and their headers.  \nAfter successful 3rdparty build, proceed with following commands:\n\n```\n# assume that we are in darkhammer's root directory\n# update libdhcore from repo\ngit submodule init\ngit submodule update\n\n# build and install libdhcore\ncd libdhcore\nwaf configure --prefix=/path/to/prefix\nwaf build\nsudo waf install\ncd ..\n\n# build darkhammer engine\nwaf configure --physx-sdk=/path/to/physx-sdk --prefix=/path/to/prefix\nwaf build\nsudo waf install\n```\n\n*Note* that *darkHAMMER* uses *libdhcore* as a submodule, so you have to clone that one into darkHAMMER and build it separately. If you check the above commands, you will notice that I installed *libdhcore* library/header files into the same prefix for the main project, but if you want to build locally (no prefix path), then you should configure `waf configure --prefix=..` for *libdhcore* and no prefix path for the main project.  \nHere's an example of building the project in local path (darkhammer's own directory) from scratch: \n\n```\ngit clone git@github.com:septag/darkhammer.git\ncd darkhammer\n./install_3rdparty\ngit submodule init\ngit submodule update\ncd libdhcore\nwaf configure --prefix=..\nwaf build install\ncd ..\nwaf configure --physx-sdk=/path/to/physx-3.2-SDK \nwaf build install\n```\n\nAfter running these commands, library files will be in `lib` and binaries will be created in `bin` path.\n\nThere are also more options available, like *debug* build, enabling *asserts*, *profile* build and others, which you can see with `waf --help` command.\n\n#### Windows\nJust like linux build, you need to acquire (or build) some external 3rdparty libraries. There is a python tool *install_3rdparty-win.py* which helps you with that process. Before using the 3rdparty installer tool, you need to install the softwares listed below:  \n\n- **Microsoft visual studio**: preferred C/C++ compiler on windows. The project isn't tested with any other compiler on windows.\n- **git for windows**: [link](http://git-scm.com/download/win) also make sure to include it's binaries into PATH environment variable.\n- **wget**: [link](http://users.ugent.be/~bpuype/wget/) This is a linux tool but also is built on windows and 3rdparty installer needs it. Make sure you download and put it somewhere in PATH environment variable.\n- **python**: version 3 or higher\n\nNow start by fetching the source from the repo and install 3rdparty libraries: \n\n```\ngit clone https://github.com/septag/darkhammer.git\ncd darkhammer\npython install_3rdparty-win.py --arch=ARCH --msvc=MSVC_VER --prefix=/path/to/prefix\n```\n\n*--arch* and *--msvc* arguments are required, but *--prefix* argument is optional. If you don't specify *prefix* path, the libraries will be searched and installed in */path/to/darkhammer/lib* directory.  \n*--arch* is the compiler platform you want to build, you have two choices, *x86* for 32bit build and *x64* for 64bit builds.  \n*--msvc* is the version of the visual studio, you are building, choices are *9, 10, 11, 12*.  \n\nFor example if you are using Visual Studio 11 and want to build 64bit binaries, run `python install_3rdparty-win.py --arch=x64 --msvc=11` command.  \nAfter successful 3rdparty install, you can start building the engine and it's tools:  \n\n```\nwaf configure --physx-sdk=/path/to/physx-sdk --prefix=/path/to/prefix\nwaf build\nwaf install\n```\n\nThis is the simplest command for configuring the build, however there are many more options available, like *debug* build, enabling *asserts*, *profile* build and others, which you can see with `waf --help` command.  \n*Note* that *prefix* path for 3rdparty libs and engine itself should be the same, or you may get build errors.\n\n##### Visual studio project\nI also maintain visual studio project files separately for windows developers. To build and debug with visual studio environment, you must first follow the instructions for installing *3rdparty* libraries described in the section above, and you have to successfully run *install_3rdparty-win.py* (see above).  \nAfter successful 3rdparty install, open *msvc/darkhammer.sln* in visual studio, and choose your preferred build configuration and proceed. Before build you should consider the following notes:  \n\n* Remember to define *Physx SDK* header and library path in your VC's search paths.\n* I had to use some kind of hack to integrate default data path (*SHARE_DIR* preprocessor), into file *msvc/sharedir.h* when building with visual studio in *pre-build events*, **so** if you copy the whole project to another path on your hard-drive, make sure you delete *sharedir.h* to reset that variable, or else, data files may not be found during runtime.\n\n### SharpHammer\nFor C# API and some nifty tools, check out [sharphammer](https://bitbucket.org/Amin67v/sharphammer) project, currently Amin developed a tool called *DarkMotion* which is very much influenced by the *Unity's Meckanim* tool. It is used to make and edit character animattion controllers for the engine. It currently runs on windows and requires .NET runtime, but we are planning to port it to other platforms like linux too.\n\n### Questions ?\nIf you have any questions, suggestions, please post to developer's\n[forum](http://hmrengine.com/forums/). If you encountered a bug you can fill an issue right here on *github*.\n\n### Credits\n#### Active developers\n- *Sepehr Taghdisian*: Founder, Engine developer, [profile](https://github.com/septag)\n- *Amin Valinejad*: Tools developer, founder of [sharphammer](https://bitbucket.org/Amin67v/sharphammer)\n\n#### Contributors\n- *Davide Bacchet*: Initial OSX port (davide.bacchet@gmail.com)\n\nThis software is made possible by the following open-source projects:\n\n- *libdhcore*: darkHAMMER core library ([link](https://github.com/septag/libdhcore))\n- *Assimp*: Open asset import library ([link](http://assimp.sourceforge.net/))\n- *efsw*: File system monitoring library ([link](https://bitbucket.org/SpartanJ/efsw) - [my fork](https://bitbucket.org/sepul/efsw))\n- *nvtt*: NVIDIA texture tools ([link](http://code.google.com/p/nvidia-texture-tools))\n- *glfw*: An OpenGL library ([link](http://www.glfw.org)\n- *ezxml*: XML parsing library ([link](http://ezxml.sourceforge.net))\n- *mongoose*: Lightweight web server ([link](https://code.google.com/p/mongoose))\n- *stb_image*: Sean Barret's C image loading library ([link](http://nothings.org/stb_image.c))\n- *lua*: Embedded programming language ([link](http://www.lua.org))\n- *cjson*: C JSON library ([link](http://sourceforge.net/projects/cjson))\n- *miniz*: mini-zlib (DEFLATE) Compression library ([link](http://code.google.com/p/miniz))\n- *Qt*: Qt Application framework ([link](http://qt.digia.com))\n- *PyQt4*: Qt4 Python bindings ([link](http://www.riverbankcomputing.com/software/pyqt/download))\n- *SWIG*: C/C++ Binding generator tool ([link](http://www.swig.org))\n- *GLEW*: GL extensions library ([link](http://glew.sourceforge.net/))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseptag%2Fdarkhammer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseptag%2Fdarkhammer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseptag%2Fdarkhammer/lists"}