Giter Club home page Giter Club logo

imperialism-remake's People

Contributors

amtyurin avatar cxong avatar krs013 avatar spitant avatar sumpfralle avatar trilarion avatar wkoot 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

Watchers

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

imperialism-remake's Issues

Enforce types and valid ranges for inputs in dialogs?

Example:

New scenario dialog:

Title: must be convertible into a string, at least x characters long
Rows: Integer, [1,1000]
Columns: like rows

Do not allow to "Ok" the dialog before the constraints aren't fullfilled (display them), only cancel the dialog.

Packaging for MacOS

The goal is to have an easy-to-use package that installs or updates the game and its dependencies (mainly python and python packages) and makes starting the game easy. Additionally we need to automatize the package creation.

What are the available options?
What are the pros and cons of them?
How would one need to do for them?

Dependent issues:

Program does not launch or exit properly on macOS

This is a blanket issue to track my observations while I test on macOS. As I find specific problems, I may split them off into other issues, but for now I don't have enough information to treat them narrowly.

Running start.py on macOS does not get the game to run in a way that is usable yet. Problems include:

  • Full screen problems
    • If launched from a normal terminal window (not full screen), the program enters full screen but then goes grey, like it needs an extra paint cycle or something. Mousing over the button areas reveals those graphics, but I can't get the original window to display more than a half second before it goes grey.
      screen shot 2017-08-01 at 2 10 41 pm

    • If launched from a full screen terminal window, an error occurs (the Network: cannot listen error from #8) and the resulting window is scaled for full screen but drawn.
      screen shot 2017-08-01 at 2 07 02 pm

  • Does not exit: When I click on the door to quit the program, the window disappears, but the server and/or start.py does not exit, and I have to Ctrl+C three times to actually close the program.

All of these issues are macOS-specific and I cannot reproduce them in Ubuntu. (Although I don't have a real full screen mode in Ubuntu as it's configured, so that might not be completely true).

Make PyYaml using the CLoader via libyaml

This is probably a Windows only problem. PyYaml will use the CLoader if it finds libyaml. However, at least the conda package does not include libyaml. So how to include it? How to include it with packaging with pynsist?

Reason: Using the CLoader is much faster

Create an app bundle on macOs

It should combine the game (content of source/imperialism_remake folder), Python 3 for macOs, the required Python modules (see requirements.txt) for macOS, an application icon and should successfully run the application. This should be automatized.

py2app might help there

AttributeError: type object 'QDataStream' has no attribute 'Qt_5_6'

I'm getting this message on Ubuntu 16.04LTS with pip3 install python3-pyqt5 and pip3 install python3-pyqt5.qtmultimedia.

Traceback (most recent call last):
File "/home/ubuntu/imperialism_remake/lib/network.py", line 231, in _new_connection
def _new_connection(self):
KeyboardInterrupt
Traceback (most recent call last):
File "/home/ubuntu/imperialism_remake/client/client.py", line 398, in local_network_connect
tools.get_option(constants.Option.LOCALCLIENT_NAME))
File "/home/ubuntu/imperialism_remake/base/network.py", line 148, in send
super().send(letter)
File "/home/ubuntu/imperialism_remake/lib/network.py", line 170, in send
writer.setVersion(QtCore.QDataStream.Qt_5_6)
AttributeError: type object 'QDataStream' has no attribute 'Qt_5_6'

Looks like the used Qt version is too low.

We should:

  • log the Qt version
  • require a certain Qt version and fail early if not present
  • maybe lower the version of the QDataStream

Track used resources

Track which resources (files in the data folder) are actually used (and which ones are not used) by collecting statistics ingame about access to these resources. Store the statistics in the user folder. Write a utility script that displays these stats and highlights unused resources.

Support multiple screens

This includes:

  • Showing the main window on the primary screen
  • Showing the main windows on several screens
  • Deciding what "full screen mode" means with multiple screens
  • Showing dialog windows on the other screen by default if the user wants that

PyQt5 probably offers support for this already.

defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"

I'm getting this message on Ubuntu 16.04LTS with pip3 install python3-pyqt5 and pip3 install python3-pyqt5.qtmultimedia.

Stacktrace:

2017-07-18 13:24:32,147 - imperialism_remake.server.server - INFO - ServerManager started
2017-07-18 13:24:32,153 - imperialism_remake.client.client - INFO - No previous bounds of the main window stored, start maximized
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
Traceback (most recent call last):
File "/home/ubuntu/imperialism_remake/server/server.py", line 134, in start
2017-07-18 13:24:32,248 - imperialism_remake.server.server - INFO - server starts (pid=4872)
self.server.start(constants.NETWORK_PORT)
File "/home/ubuntu/imperialism_remake/lib/network.py", line 215, in start
raise RuntimeError('Network error: cannot listen')
RuntimeError: Network error: cannot listen
2017-07-18 13:24:32,248 - imperialism_remake.lib.network - INFO - server listens on host=2 port=42932
2017-07-18 13:24:32,271 - imperialism_remake.client.client - INFO - client initialized, start Qt app execution
2017-07-18 13:24:32,280 - imperialism_remake.client.client - INFO - client tries to connect to server
2017-07-18 13:24:32,280 - imperialism_remake.lib.network - INFO - client connecting to host=2 port=42932

I actually do not understand why there is a Network error following and then the client seems to connect successfully.

How to best version scenario files and upgrading them?

Between version of the game, the structure of scenario files might differ. A first step is storing the game version in the scenario file, the other step is converting older scenario files to newer versions.

Outline a strategy for how this could be done most efficiently and most safely (so we do not get into a chaotic state where either older scenarios are lost or we get unintended behavior).

Audio (vorbis) playback and platform audio codecs

Qt5 relies on platform codecs to be installed. For vorbis and Windows they would be at https://www.xiph.org/dshow/downloads/.

However, if you haven't installed them, QMediaPlayer just skips to the next song without any notification (as far as I can see).

This raises two issues:

  • How can we detect if audio playback works actually?
  • How can we make sure that the plattform codecs get conveniently installed during installation?

So far, they are an additional requirement.

How is the situation on Linux and macOS?

Enable dragging of the main map

Dragging (left mouse click, hold, move) on the main map view should move the portion of the map that is shown in the main map area.

Make terrain modifiable

Select new terrain, ask if changes to/from water and modify internal scenario structures accordingly, then redraw the map.

Add zoom to main map

The main map should react to zoom and increase/decrease the part of the world map that it displays (with the transformation anchor as the current mouse pointer/the center of the map) within some reasonable values. The zoom should either react on the scrool wheel of the mouse or a setting in the preferences (maybe in percent of the natural size).

No audio is playing

No audio music is played on Mac. Setting/reseting audio in settings does not help. Can it be the problem with OGG audio files?

Make width of mini map adjustable

Using a QSplitter make the width of the mini map (height scales accordingly) adjustable by reducing or increasing the width of the main map in the editor and main game screen. Make the width permanent as a preference (which is not set in the preferences dialog) with some limits and a meaningful default value (like 300px).

Packaging for Linux

There are many different flavours of Linux around (Debian, Mint, Ubuntu, ...) and the goal would be to have a easy-to-use, widely usable package that installs or updates the game and its dependencies (mainly python packages) and makes starting the game easy. Additionally we need to automatize the package creation.

What are the available options?
What are the pros and cons of them?
How would one need to do for them?

Including issues:

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.