Git Product home page Git Product logo

goblin_camp's People

Contributors

dsmythe avatar gencontain avatar humphd avatar qqqsimmons avatar rdittrich97 avatar thecatplusplus avatar veox avatar y2s82 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

goblin_camp's Issues

CONTRIBUTING.md needed

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.

Cacheing in Travis CI

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.

Implement Travis

Related #2
Let's hook this project into Trevis to automatically check for build failures.

Merge the works from Goblin Camp NG

Related #7 #20 #22

Overview

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.

Some notes

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.

Reference

reddit post
bitbucket repo

Look into src/game.cpp

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

License file

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.

convert doc files

related #12
The original repository has various doc files in /docs/
Let's convert them into git-style doc files.

  • COMPILING.md
  • CONTRIBUTING.md

Type conversion error

/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';

Look into src/JobManager.cpp

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.

Change the uint[8,16,32] into uint[8,16,32]_t

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.

Duplicate license information

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.

More automated testers/linters

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?

SDL_RENDER_DEVICE_RESET problem

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.

Investigate Performance Bottleneck

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.

  • libraries thread-safe?
  • tools thread-safe?

As per suggestion by my professor, I should perform data-driven analysis.
For this, I need to setup:

  • compiler
  • profiler
  • identify source of performance bottleneck
  • identify if it is multi-thread-able

Convert readme

related #12
Take the readme from the original and merge it to ours in markdown.

Let's make it more inviting and informative.

coverity scan authentication fails

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.

Implement profilers

Related #2
Investigate how to implement profilers to identify various bottlenecks of the program.

Implement test suite

related #26
Coveralls or Codecove seems to be a web service that offers test coverage analysis of codes.
It would be helpful to implement this to help future commits be more and more easier to test.

src/CMakeList.txt no longer needs tcodxx and tcodgui and needs pthread

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.

implement AppVeyor

AppVeyor is another automated build system. It could compliment Travis CI. It can test for Windows environment.

COMPILING.md needed

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.

Python packages are version 2

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.

Looking for lib folder in the wrong directory

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.

Check and Update Libraries and Dependencies

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.

  1. Included:
  • boost
  • libtcod
  1. Dependency
  • bjam
  • libsdl
  • libpng++
  • zliblg-dev
  • python

Other options to consider:
Another person's attempt and conclusion of his approach

Complete a proper migration from the original source

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

  • readme
  • licenses
  • doc files
  • ignore files

Implement coverity scan

Related #26
Coverity seems to test each line of code and make analysis. This may help us better deal with the massive amount of code this pile currently has.

appveyor.yml needed

We have the repository linked to AppVeyor. Let's create a proper configuration file to make good use of it.

src/CMakeList.txt : python2.7 problem

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.