Giter Site home page Giter Site logo

opmonteam / opmon-archive Goto Github PK

View Code? Open in Web Editor NEW
215.0 17.0 45.0 4.4 MB

Project moved to https://github.com/OpMonTeam/OpMon

Home Page: https://opmon-game.ga

License: Other

Shell 0.03% C++ 98.28% CMake 1.56% Objective-C++ 0.13%
pokemon navet56 game jeu france cpp cross-platform linux windows fan

opmon-archive's Introduction

Regimys LOGO

Voir En Français

Welcome to Project OPMon Lazuli!

OPMon is a Pokémon-inspired game project imagined in 2012 and started in september 2016. This game is totally open source, allowing the fans to realize their dreams! You can add OpMons, attacks, items, and many other things! You just have to submit your modifications and maybe we will add them to the game! And if you submit a lot of good changes, you can become a collaborator!

Links

Build

Master (Last stable build) : Build
Develop (Development branch) : Build

The game data is stored as a git submodule in the OpMon-Data repository. The build system use cmake. Commands for GNU/Linux systems :

submodule update --init
md build && cd build
cmake ..            #If you want to build in Debug, use -DCMAKE_BUILD_TYPE=Debug
make
sudo make install   # install the game into your system
make package        # generate both .deb package and .tar.gz package

You can see the dependencies for GNU/Linux systems here.

If you want to play to the game quickly, use build-and-run.sh. The game will be built in bin/Release/, and the data will be pasted in this repository. The game will launch after building.

If you don't use build-and-run.sh, do not forget to copy the GameData folder in the game's folder or use sudo make install if you are on GNU/Linux.

If you want to compile OPMon from A to Z for Windows, Mac OS or other, it is here

Contact Us

English is not our native language, but we do our best! If you see some errors, do not hesitate to tell us, so we will not make them again!

If there are problems understanding the old commits or monthly reports that are in French, do not hesitate to ask!

The current game version is Alpha 0.16 Download link: Download Link

The next game version will be Alpha 0.17: Important code improvement, documentation.

Controls

See the controls of the game OpMon here

En Français

Bienvenue sur le Projet "OPMon Lazuli"!

Bienvenue sur le dépot du jeu OPMon Lazuli! Le clone libre de la célèbre license de Nintendo !



Version du jeu : Alpha 0.16 | Téléchargement : Logo Téléchargement

Prochaine version :

  • Alpha 0.17 : Importantes amélioration du code, documentation.
  • Voir la RoadMap

Informations generales:


OpMon vient d'un jeu imaginé en 2012 et débuté en septembre 2016, c'est un clone de la célèbre licence Pokémon, appartenant à Nintendo. Ce jeu est totalement open-source, ce qui permet aux gens de venir réaliser leurs rêves les plus fous! Vous pouvez ajouter des OpMons, des attaques, des items, et autres! Vous n'avez qu'à nous proposer vos modifications et nous les ajouterons peut-être au jeu. Si vous nous proposez beaucoup de bonnes modifications, et qu'elles sont acceptées, vous deviendrez peut-être collaborateur!
Nous sommes plusieurs sur le projet : Cyriel, le programmeur et créateur de l'histoire et des personnages ; Navet56, le graphiste et correcteur ; et d'autres contributeurs, comme Imperator Dei, qui a corrigé les fautes d'orthographe sur la version française, merci à eux !
Contacts : [email protected] pour la programmation | [email protected] pour les graphismes
Si vous avez des questions à poser, n'hésitez pas à les demander dans la section F.A.Q. du wiki ou à nous contacter par mail!

Les contrôles

Vous pouvez voir les contrôles du jeu OpMon ici

Build

Les données du jeu sont stockées dans OpMon-Data, utilisé en tant que sous-module Git. Le système de build utilise cmake. Voici les commandes pour compiler le jeu et l'installer (sous GNU/Linux).

submodule update --init
md build && cd build
cmake ..            # Si vous voulez compiler en Debug, ajoutez -DCMAKE_BUILD_TYPE=Debug
make
sudo make install   # installe le jeu sur votre système
make package        # génère deux paquets: un fichier générique .tar.gz et un paquet .deb

Vous pouvez aussi utiliser le build-and-run.sh pour compiler et jouer au jeu rapidement. Le jeu se trouvera alors dans le dossier bin/Release/, avec le dossier GameData copié dedans. Il se lancera dès la fin de la compilation.

Si vous n'utilisez pas le build-and-run.sh, n'oubliez pas de copier le dossier data dans le dossier du jeu, ou de faire sudo make install si vous êtes sous GNU/Linux !

Si vous voulez compiler de A à Z OpMon pour Windows, Mac OS ou autres, c'est ici(en anglais)

Changelog des versions

Voir le changelog de toutes les versions du jeu

Screenshot :

Screenshot

opmon-archive's People

Contributors

aerzia-git avatar bakfr avatar bircoum avatar bobor-dev avatar dogmotion avatar gberthou avatar imzerrka avatar jonnyptn avatar jubalh avatar linkyfr avatar milkyroute avatar navet56 avatar olivier-grech avatar samurai413x avatar sergioag avatar srykah avatar stelyus avatar technologyclassroom avatar telloviz 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opmon-archive's Issues

Renommage des macros

Certaines macros ont un nom qui n'est pas clair.

Je propose de renommer QUIT en RETURN_ON_CLOSE_EVENT et ECHAP en RETURN_ON_ECHAP_EVENT

En plus, ECHAP ne marche que dans un switch. Je propose de changer le comportement pour qu'il prenne l'objet event en paramètre, (plutôt que d'utiliser le mot-clé case).

Tools for non-programmers

This project could use some external tools to facilitate contribution from non-programmers (or just people who want to avoid dealing with JSON 😝). They will probably require a new repository each, but before we do that we probably should discuss them all here ^^

I think we need tools for creating :

  • OpMons (already discussed in #95 )
  • Attacks
  • Maps
  • Trainer battles
  • Cutscenes / NPC dialogues / Events

Of course, each editor will have to use data created by the other editors, so we'll need a way to import stuff created in one editor in another.

Currently, Tiled is used for the map in itself, but events like map transition or item drops are added by hand directly in the JSON file. I see that Tiled has custom properties for tiles, we might be able to use that.

Also, the attacks editor will require that each possible effect be created in the main project's code first, then associated with an effect type to be usable from the editor. This means if someone want to create an attack with a weird effect not covered by another existing attack, they won't be able to do it from the editor alone. (or we can make each attack effect load an external script but I think it's way too big of a scope).

Refactoring: créer une fonction de log

// Avant:
rlog << PRINT_TICKS << "Log initialisation completed." << endl;

// Après:
log("Log initialisation completed.")

Plus simple à écrire, moins de risque d'erreurs

force close on changing language to spanish

  1. install the game
  2. start new game
  3. change language to spanish
  4. relaunch the app, and happens a force close (windows warns it will close the app)
    if i reinstall the game i can play with it until i change to spanish again. once spanish is changed, the force close appears again :-(

perhaps is because i changed language in the middle of a game?
how can i delete the game and after change the language?

Coding Style

This issue is the first of a serie, aiming to improve the code up to a higher standard. Beware @cyrioncentori, the global variables will go through this!

As mentioned several times on Discord, We need to choose a coding style.
First, we need to specify most of the aspects we'd like to keep consistent, in order to define the coding style. It's OK if there is a few things unspecified, but the less there is, the better it is.

Tab VS Spaces

Currently, the code is indented with a mix of 2-space indents (me and Cyrion), and 4-space width tabs (Cyrion).
Other people on Discord were in favor of (4 spaces-width) tab indent.
We could also use Smart Tabs (tabs for indent, then spaces to align when needed). Everyone can set the tab width in its editor.

The choices are:

  • 2 spaces
  • 4 spaces
  • Tabs
  • Smart Tabs

Spaces

No spaces:

class X{
	X();
};
class Y: X{
	Y();
}

void f(std::vector<Event&> events){
	for(Event *event: events){
		if(event->getPosition().x SQUARES == position.x){
	  		toReturn.push_back(event);
		}else{
			// ... else clause
		}
	}
}

Spaces everywhere:

class X {
	X();
};
class Y: X {
	Y();
}

void f(std::vector<Event&> events) {
	for (Event *event: events) {
		if (event->getPosition().x SQUARES == position.x) {
	  		toReturn.push_back(event);
		} else {
			// ... else clause
		}
}

There are spaces (or not):

  • Between class name and following curly brace.
  • Between keyword (if, for) and following parenthesis
  • Before curly brace on control flow statements (if, for, etc.)
  • before the curly brace opening the function.

Variable naming

It's probably the only point we have some coherence. All code use the same style.

class Foo{
public:
	void barBaz();
	int classVariable;
};


void Foo::barBaz(){
	int myVariable;
}

However, we may improve it by using a _ suffix for private and protected variables. In practice, almost all class variables are private or protected.

class Foo{
protected:
	int _myVar;
};

Should we indent case in switch statements ?

switch(layer){
case 1:
	return layer1[pos.x + pos.y * w] - 1;
case 2:
	return layer2[pos.x + pos.y * w] - 1;
case 3:
	return layer3[pos.x + pos.y * w] - 1;
default:
	return 0;
}
switch(layer){
	case 1:
		return layer1[pos.x + pos.y * w] - 1;
	case 2:
		return layer2[pos.x + pos.y * w] - 1;
	case 3:
		return layer3[pos.x + pos.y * w] - 1;
	default:
		return 0;
}

Classes

Should we indent public, private and protected ?

class Map {
private:
	const int *layer1;

public:
	sf::Vector2i getDimensions() const;
};
class Map {
	private:
	const int *layer1;

	public:
	sf::Vector2i getDimensions() const;
};

Should we indent the namespaces ?

Currently, we do it everywhere, but we may waste less space by removing it.


My preferences:

  • Tab vs spaces: SmartTabs
  • Spaces between class name and following curly brace: Yes
  • Spaces between keyword (if, for) and following parenthesis: no preference
  • Spaces before curly brace on control flow statements (if, for, etc.): Yes
  • Spaces before the curly brace opening the function: yes
  • Using _ prefix for private member variables: Yes
  • Should we indent case in switch statements ? No
  • Should we indent public, private and protected ? no preference
  • Should we indent the namespaces ? No preference

In any case, I care way more to keep the code consistent than to use my preferred coding style.

Refactoring: overworld.cpp

Les méthodes up, down, left et right ont énormément de code en commun. On peut les refactoriser et enlever facilement 100lignes de code.

Add a confirmation before quitting the game

This functionality would prevent people pressing escape and closing the game by mistake. But it's also a pretext to create a dialog box system in the game, which would be useful also for asking other kinds of confirmations.

Windmill clipping

I noticed that if you stand in front of the windmill and move left and right, the darker, leftmost part of the base is clipping in front of the character's head.

Add a wait time in front of the door

Ajouter un temps d'attente devant la porte avant de rentrer dans un batiment, car on a pas le temps de voir l'animation de la porte. De plus, ce n'est apas très realiste avec le système actuel.

Avoid global variables when possible

I see that this code relies heavily on global variables, and to a lesser extent object-global variables. It hinders readability quite a lot, and opens the door to subtle bugs down the road. I am currently cleaning up parts of the code, so I'll do what I can to removve those I find during my refactoring but a large-scale operation seems necessary

Configuration file

I'm searching through the directories but I can't find any config file, for example one which would define default values for window size, volume, vsync, fullscreen and others. That could potentially be changed by the player while in the options screen (or manually) and saved for the next time they open the game.

So, for example, if I wanted my game to always open with 25% volume, at fullscreen and with vsync off, the config file would be like:

volume:25
fullscreen:true
vsync:false

Organize the Repository

If this would be possible, can the repository be a bit better organized?

For example, have versions be milestones rather than projects. Have projects be big TODO features, such as battle system, engine improvements. Also, having so many tags kinda clutters up the issues and makes them hard to sort. Just having "Enhancements", "Bugs", and "Next Version" are fine.

I believe that organizing the repo will help new contributors find things to help with more effectively.

Bug d'accents

Le retour, épisode 7

L'UTF-8 soit n'est pas activer, soit buguer, soit inexistant

Organisation des répertoires

L'objectif est de simplifier le dépot github

Je propose de bouger tout ce qu'il y a dans src/jlppc/regimys directement dans src/. Le dossier jlppc n'apporte rien, le code utils restera dans un dossier séparé.

Créer le fichier log s'il n'existe pas

Au 1er lancement (sous Linux), le programme plante car il n'y a pas de fichiers de log ... mais créé le fichier de log.
Au 2ème lancement, tout va bien puisque le dossier a été créé.

Le programme devrait créer le dossier avant de tester l'ouverture des fichiers de log

NPC's movement bug

While being in the NPC's way, the collision doesn't activate, and the NPC's movement is completely out of sync.

Bug de sortie du labo

Lorsque le personnage passe la porte de sortie du labo, le TP se fait au mauvaise endroit (1 case en dessous et 1 case sur le coté droit de trop)

What is the license of arts in the game? (Question)

Hi, I have a question about the graphics in the game. They are so good that I can't understand whether they come from a copyrighted game (therefore not free) or if you made them. If you made them compliments! If they are not free I hope they will eventually be replaced by free graphics.

Volume control

I know this game is far from finished but I think volume control should be added as soon as possible. It's not always convenient to lower the whole system's volume in order not to have the game play at eardrum-tearing levels.

As it stands now, the volume slider is only visual and does nothing, unless I'm missing something.

Change how the animations are stored

Currently, it's one frame by file. In the future, it would be great to have one file for all the frames.

  • Done for the events
  • Done for the animated elements on maps

Clarify art licenses

Hi! It seems some of the art used is incorporated from other projects, but I could not find the appropriate credit anywhere.

For example, /data/maps/tileset.png incorporates "Grass, Sand, Snow" by PastTheFuture, which is licensed as CC BY 4.0, and based on "Kyrodian Legends Overworld Tileset" by Midi. The CC BY license requires that you credit the author, but it seems that isn't being done. If this is not done, you have not fulfilled the license requirements, and are infringing on their copyright, for which you could be sued.

This project's /data/maps/tileset.png (relevant portion in the upper-right):

/data/maps/tileset.png

"Grass, Sand, Snow" by PastTheFuture:

To avoid legal headache in the future, I recommend keeping a file similar to the CREDITS.md of the Tuxemon Project (and this project's music readme which lists each external resource used by the project, who made it, and what the license is. I would also recommend only using resources licensed under the CC BY and CC BY-SA licenses.


Also, the license of this project's own art is unclear. The music is CC BY-SA licensed, but nothing is said about the original art. Without an explicit notice, it could be assumed that the art is also GPLv3 licensed, which is less-than-ideal for art. I would recommend licensing all original art under the CC BY-SA (copyleft) or CC BY (permissive) license.

Enhancement: Isolate Engine from Game

To futureproof the work the has been done, I believe it would be wise to isolate the engine and the game. The engine has all the game logic and loaders, while the game would be the assets, maps, OpMon, text boxes, etc. The Engine would load a folder which is where the game assets would be placed in a standardized format.
EX: File Structure
----RootFolder
--- / --------
Engine------ Game
--- | ------- | -------
Stuff----Default ---Custom Game

Compiling Instructions and Errors to fix.

The compiling instructions for Windows needs a fix. I have tried both Visual Studio and Code::Blocks, and both have not been successful. Some things I found while troubleshooting:

  • Visual Studio instructions not working

  • Code::Blocks (for Windows) had to remove a bunch of the SFML related defines to avoid errors

  • SFML stuff is out of date, I am using the latest version (2.5.1) and all of the unnecessary defines are causing plenty of issues.

  • config header. This was a nightmare. Why is it in the root dir? Why is it "config.hpp.in" instead of "config.hpp"? Why is it necessary?

  • Build Errors. After doing quick fixes of the above (for the most part), there are actual building errors that aren't just misconfigurations. Settings are using c++17 with codeblocks 17.12.
    I.e. ```
    ||=== Build: Debug in OpMon (compiler: GNU GCC Compiler) ===|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\utils\misc.hpp|14|error: expected '{' before '::' token|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\utils\misc.hpp|14|error: 'Misc' in namespace '::' does not name a type|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp|35|error: 'Utils::Misc' has not been declared|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp|36|error: 'Utils::Misc' has not been declared|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp|37|error: 'Utils::Misc' has not been declared|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp|38|error: 'Utils::Misc' has not been declared|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp|39|error: 'Utils::Misc' has not been declared|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp|40|error: 'Utils::Misc' has not been declared|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp||In member function 'void Utils::OpMon::Model::OpMon::goToSleep()':|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp|128|error: 'Utils::Misc' has not been declared|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp||In member function 'void Utils::OpMon::Model::OpMon::drinkTooMuch()':|
    C:\Users\Pyros\Documents\GitHub\OpMon\src\opmon\model\objects\OpMon.hpp|134|error: 'Utils::Misc' has not been declared|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\stl_raw_storage_iter.h|69|error: expected template-name before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\stl_raw_storage_iter.h|69|error: expected '{' before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\stl_raw_storage_iter.h|69|error: expected unqualified-id before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\typeinfo||In member function 'size_t Utils::std::type_info::hash_code() const':|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\typeinfo|144|error: '_Hash_bytes' was not declared in this scope|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\typeinfo|144|note: suggested alternative:|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\bits\hash_bytes.h|47|note: 'std::_Hash_bytes'|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\typeinfo|188|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\typeinfo|205|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\ext\concurrence.h|68|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\ext\concurrence.h|76|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\ext\concurrence.h|84|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\ext\concurrence.h|92|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|71|error: '__void_t' does not name a type|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|71|error: expected '>' before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|77|error: '__void_t' was not declared in this scope|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|77|note: suggested alternative:|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\type_traits|2407|note: 'std::__void_t'|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|77|error: template argument 2 is invalid|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|77|error: expected unqualified-id before '>' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|86|error: template argument 2 is invalid|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|184|error: template argument 1 is invalid|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|193|error: expected nested-name-specifier before 'enable_if'|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|193|error: expected initializer before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|206|error: expected nested-name-specifier before 'enable_if'|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|206|error: expected initializer before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|220|error: expected nested-name-specifier before 'enable_if'|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|220|error: expected initializer before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|271|error: '__void_t' does not name a type|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|271|error: expected '>' before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|271|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|271|error: '__void_t' was not declared in this scope|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|271|note: suggested alternative:|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\type_traits|2407|note: 'std::__void_t'|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|271|error: template argument 2 is invalid|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|271|error: expected unqualified-id before '>' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|272|error: '__void_t' does not name a type|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|272|error: expected '>' before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|272|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|272|error: '__void_t' was not declared in this scope|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|272|note: suggested alternative:|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\type_traits|2407|note: 'std::__void_t'|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|272|error: template argument 2 is invalid|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|272|error: expected unqualified-id before '>' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|273|error: '__void_t' does not name a type|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|273|error: expected '>' before '<' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|273|error: expected class-name before '{' token|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|273|error: '__void_t' was not declared in this scope|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|273|note: suggested alternative:|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\type_traits|2407|note: 'std::__void_t'|
    C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\5.1.0\include\c++\functional|273|error: template argument 2 is invalid|
    ||More errors follow but not being shown.|
    ||Edit the max errors limit in compiler options...|
    ||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 51 second(s)) ===|

Enhancement: Create a tool for the creation of OpMon

I was looking through the project, and there weren't any resources for existing OpMon besides a JSON that didn't really have the names. Are there any current resources or example sheets for the creation of OpMon? If not, a simple (even a commandline) tool that exports an OpMon JSON based on given info. I'd make one, but can't seem to find any info on what the format is.

If it hasn't been done already, having a JSON or a custom file format extension PER OpMon would make creation simpler as well.

EG: OpMon/Data/OpMon/*.json (or *.opmn) with a file for each OpMon.

Weird behaviour

I just installed opmon and get a very wird behaviour which might be a problem on my side. But I think I will need your help to track it down.

I launch opmon in a terminal and I get:

$ opmon
Error n°1 : Keys initialization error: keys/english.rkeys
Fatal error.

No window is displayed. Program exits.

Funny enough I have another terminal instance open in which case it launches opmon when I type the name.

For both I get:

which opmon
/usr/bin/opmon

So it's the same executable.
When starting over the desktop file in GNOME3 menu it also doesn't start (which is the reason I went to the terminal in the first place).

So my question: under which circumstance is this error message displayed?

Https for opmon-game.ga

At the moment opmon-game.ga does not uses HTTPS (not even for the download page). Switching to HTTPS would provide security for the user and would make the site future-proof (both Firefox and Chrome are enabling tactics to warn users against non secure websites).

character locked on start position

I installed opmon compiling it and generating the .deb in debian 9.
When I play a new game, the character stays locked in the initial position, I can not move anywhere.

Thanks.

Fix screen tearing

I have felt quite a large amount of screen tearing when I played the game, especially when moving up or down in the world map. Screen tearing is usually removed by enbling VSync, but as I saw it in the code, a fixed frame frequency of 30 fps is used for rendering as well as for computing game objects' speeds. I think you should dissociate the game update logic and the rendering, so to let users choose if they want to play with VSync on or with maximum FPS.

On Linux, use XDG basedir spec to set resource, log and save path

For now, the logs and saves folders are always created in the current working directory.
The resources folder is located either in the current working directory or in /usr/share/OpMon; The path is selected by a macro constant in the code.

The behavior is not standard and not effective (macro must be flipped to compile a package version; install in /usr/local/share doesn't works, ...)

The game should follow the XDG Basedir spec.

  • saves and logs must be created in $XDG_CONFIG_HOME/OpMon/ (or ~/.config/OpMon if the variable doesn't exists).
  • the resource folder should be searched over a list of potential location: $XDG_DATA_HOME/OpMon, then all the location listed by $XDG_DATA_DIRS.

Wrong encoding

Seems specials caracters don't work very well in Windows. I've seen the same issue fixed, maybe on Linux or another platform ?

image

openSUSE package

I created an rpm package for openSUSE.

I would like to note it down somewhere in your repo so that users can easily find out about it and install it.

So far it seems you uploaded an Arch PKGBUILD to the releases.

Do you think an INSTALL.md file would be a good thing? And describing various installation methods and links to available packages there?

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.