y2s82 / goblin_camp Goto Github PK
View Code? Open in Web Editor NEWDwarf Fortress clone, revisited
License: GNU General Public License v3.0
Dwarf Fortress clone, revisited
License: GNU General Public License v3.0
related #12
Take the readme from the original and merge it to ours in markdown.
Let's make it more inviting and informative.
Related #2
Take a look at code in src/map.cpp and investigate, and possibly implement, OpenMP-based threading.
Related #16
Currently, libpython2.7.so is not found in the search path in a docker-installation of Ubuntu.
Custom pathing may be needed to resolve this issue, at the expanse of having to hard-code it for a specific environment.
For now, let's adhere to the environment the Travis CI is running in: Ubuntu.
Consider reworking code to exclude Boost libraries.
Here is another repo that could be of use. Someone tried to revive this game also.
It was built in Arch Linux https://bitbucket.org/veox/goblincamp-ng/src
The build is completely scuffed otherwise, and according to the comments left on some forums - the code base isn't that much better.
/home/travis/build/y2s82/goblin_camp/src/data/Config.cpp: In function ‘std::string Config::GetStringCVar(const string&)’:
/home/travis/build/y2s82/goblin_camp/src/data/Config.cpp:133:11: error: could not convert ‘'\000'’ from ‘char’ to ‘std::string’ {aka ‘std::basic_string<char>’}
return '\0';
Take a look at src/game.cpp and explore possibilities of multithreading.
It has map generator that seems to be an easy one, but there may be other ones
Related #2
AppVeyor is another automated build system. It could compliment Travis CI. It can test for Windows environment.
A few things I see in your .travis.yml
file:
scons
vs. scon
cc @rdittrich97
Related #15
We currently do not have CONTRIBUTING.md
The closest thing we have is in docs/dev-guide.rts
Let's create a CONTRIBUTING.md based on the information.
Coverity Scan is currently signed up with the project, but to complete its configuration, we must:
Due to changes to SDL2 from SDL1, setKeyboarRepeat() function no longer exists in the libtcod library.
Related to PR #41
The line on src/Game.cpp line 588 has a function that no longer exists in the recent version of libtcod due to conversion from SDL1 to SDL2. possible source
At the moment, we need to investigate the purpose of the line, and if necessary, how to replicate the functionality.
Related #6
The project includes libtcod within the repository. Let's update it to the latest version.
Library homepage
As our current configuration tend to compile couple dependencies from source (e.g. SDL2, libtcod ), we may benefit from using cache instead of having to download and rebuild them all from scratch for each testing.
Related #25
Let's add items in matrix to build under FreeBSD with clang++
related #6
Check the bjam dependency and migrate to the latest.
Related #6
While not immediately necessary, starting the migration from Python 2 to Python 3 may help our project be more future-proof.
This issue should serve to document various tasks that needs to be done to complete the porting effort.
Related #6
The included Boost is outdated. It needs updating.
Now, the program will use the system-installed Boost.
Any breakage should be addressed in new separate issues.
Library Homepage
Info related to Travis
Some more info with Travis
Current Travis implementation does not differentiate various platform.
Let's use matrix and configure the Travis to build-test other platforms.
We should implement matrix to address the following build environment:
First step is to understand the current source code and identify multi threading regions with respect to various different forms of multi threading. (map, reduce, stencil, prefix, etc.)
The current focus would be understanding how OpenMP and TBB may be applied. We must also understand if the various tools and libraries used are thread-safe.
If the outcome is negative, we may have to consider rewriting the code from ground up with the multi threading in mind.
If the outcome is positive, we will proceed in implementing the logic.
Key would be to look at various loops, observe and resolve dependencies, identify and implement various multi-threading patterns.
As per suggestion by my professor, I should perform data-driven analysis.
For this, I need to setup:
As part of #12 we should transfer the rules from .hgignore to git's .gitignore.
Related #2
Take a look at src/JobManager.cpp
A large portion of the game is about managing various jobs among the characters. Investigate ways to multi thread the tasks.
Due to differences between the version control system, some of the necessary details have not been properly reflected. Let's convert different elements to git-style files
Related #6
Let's checkout how this library is used in this project, and migrate to the latest version.
Related #12
The current, git-style license may be improper. Check it against the original copy license and make sure they are accurate. Simply copying the original licenses and overwrite it over the git-style one may be appropriate.
Related #2
Let's hook this project into Trevis to automatically check for build failures.
While converting the documents, duplicates of license information was involved.
One is in the LICENSE.md under root, another inside of the goblin_camp/COPYING.txt
They are identical, and we should get rid of COPYING.txt as that was the bitbucket-style file.
Related #6
We need OpenMP as a library to implement it throughout the code.
Since we merged goblincamp_ng there are new dependencies such as Boost, SDL2 and libtcod. The build system was also changed from boost.build to cmake. All of these changes need to be reflected in the .travis.yml file.
Related #6
Let's take a look at how zlib is used and migrate to the latest verison
Related #15
We currently have no git-style document detailing the compilation process.
The closest source, albeit outdated, is in docs/build-readme.rts
Let's use the information and build a proper COMPILING.md or perhaps spawn various versions depending on compilation environment.
Coverity Scan fails at authentication.
The following is the log
coverity_scan:start
$ export PROJECT_NAME=y2s82/goblin_camp
Coverity Scan analysis selected for branch coverity_scan.
Coverity Scan API access denied. Check $PROJECT_NAME and $COVERITY_SCAN_TOKEN.
Token is taken from the coverity scan site for this project.
The observation is that the majority of the generated token gets gobbled up. Only the last chunk after the last + remains. I suspect this is the cause of the authentication failure, but I do not know how to preserve the information. Escaping + did not work, and surrounding them in single quotes did not help, either.
This project had been unmaintained for 7 years.
As stated in issue #2, one of the tasks is to insure the program can be compiled.
We should check up on all libraries and dependencies. We should update them if necessary to enjoy the latest bugfixes and improvements.
This may also break much of the code, so the appropriate repairs will be necessary.
Let's update included libraries, and migrate to the latest dependencies.
Other options to consider:
Another person's attempt and conclusion of his approach
Related #6
Let's check how libpng is used in the project and update the library to the latest
We have the repository linked to AppVeyor. Let's create a proper configuration file to make good use of it.
Related #2
Investigate how to implement profilers to identify various bottlenecks of the program.
With the current Travis CI build configuration, our compiler run into syntactical issue when dealing with SDL_RENDER_DEVICE_RESET. This is likely a precompiler statement.
Robert suspects the issue has to do with SDL2 being not recent enough.
Related #25
Let's add an item in matrix to build under Cygwin with g++7.3
The old code still uses the uint type variables. In the last 7 years, using uint_t variables became a part of the standard to promote portability of the code.
We should go through the code and change all of the applicable datatype to their uint_t varient.
Use
git grep uint[0-9][0-9]*[^_]
to locate applicable instances.
related #20
In the past few years, some of the dependencies, namely libtcod, had changed the layout of the object.
It no longer creates tcodxx and tcodgui; their functionality is now absorbed into tcod.so
It also needs pthread library.
The related lines should be edited in the src/CMakeList.txt.
Related #25
Let's add items in matrix to build under MacOS with clang++
Related #25
Let's add items in matrix to build under MinGW with g++ 7.3
Currently, we have Travis to help us test each commit. Let's implement more automated test suits to help us understand the state of our project against each commit.
What would be a good automated testers or linters?
A year after the original was abandoned, someone tried to resolve the dependencies and revive the project.
He aimed to remove the local library dependencies and move the build system to CMake.
Let's port his efforts into this repository and continue where he left off.
He continued the work in a Bitbucket repository site. Perhaps migrating it to another Github repository and merging the two would help us preserve our efforts on conversion from Mercurial to Github while also absorbing the progress.
Related #25
Let's add an item in Travis's matrix to compile the game under Linux running
When goblin camp is compiled it looks for the lib directory in where the make file was ran + /share/goblincamp
i.e make was ran in /home/test/goblin_camp
it would look for the lib folder in /home/test/goblin_camp/share/goblincamp
This causes the program to exit since it can't find the python files it needs.
related #12
The original repository has various doc files in /docs/
Let's convert them into git-style doc files.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.