Dev Blog - Trilarion

Discussion of ongoing programming work.
Forum rules
Posted relevant content can be used under GPL or GFDL (http://www.gnu.org/) for the project. Thanks!
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXXIII - Implementing features

Post by Trilarion »

.. mostly within the editor. It's going slowly and there are several parts that need to be rewored/re-designed later on. Especially the tile map display where I still wanted to do many experiments on.

However, this won't be ready for the next release. I will continue implementing content until the end of next week and then it's only making an install package and updating help/release information. Then at the beginning of December there will be a release and then I will make a new plan of what to do in which order.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXXIV - Frustration

Post by Trilarion »

I work on this project in my free time which means an hour here and there, mostly in the evenings. The last commit to the github repository combined the work of two evenings, roughly three hours of work, searching for bugs and small improvements and the result is: 100 lines of code added, 70 lines of code deleted, so the code base effectively grew by only 30 lines of code.

Yes I know that this is not a very meaningful measure and I could easily produce more lines not improving the project at all. That's not the point. The point here is that since two months I'm kind of as active on the project as I want to be and still progress is slow. Given this speed it will take many years to finish the project.

On the one hand I know that this doesn't mean I'm a particular slow programmer, that's just how programming is. And of course my time budget is much, much smaller than if I would do this full time. And I'm currently the only programmer. It's just tiny little bit depressing to realize the truth, that making such a game (and I only talk about the programming side) takes so long.

What can and should be improved? More programmers for the project. I estimate that around five programmers like me would be optimal to have the game going in only a couple of years instead of many, many years. So the idea is to continue of my own and by showing the potential attracting others which then speed up the process.

However, if this doesn't happen, what then? Well, I intend to finish this project. I'm still young. I will continue at least until 2020. ;)
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXXV - Windows Executable

Post by Trilarion »

I wanted to make a release and create a Windows executable but it turns out, pyinstaller, the Python windows executable manager has big problems with PyQt5.7 and still cannot wrap it. Manually copying lots of files from the site-packages folder of my Python installation may fix the problem, however not for me. I have strange issues starting the game from the created executable.

So, should I release only a wheel on PyPi instead? I guess for the current stage of the project this should be enough and so I can give the pyinstaller people more time to come up with a solution. They already know about the problem.

edit: Just found pyqtdeploy. Will give it a chance.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXXVI - PyPi package

Post by Trilarion »

Pyqtdeploy unfortunately didn't work right out of the box either, it even exited without warning when I wanted to start the build. I also didn't understand what's the advantage over pyinstaller - obviously there is an additional compiling step in the middle but does this increase execution speed? I gave up on that one.

The remaining thing is making a PyPi package (a wheel). Therefore I wrote a setup.py script only to discover that it really, really wants a named top level package (otherwise the resulting modules will be thrown directly into the site-packages folder of your Python distribution). This just required some renaming (I didn't want to give up having a "source" folder). Second is that script entry points need to call a method, not just execute a module (my preferred way of starting the game so far), so a bit of writing around that was needed too. But the strangest thing I encountered was that all files specified as data files are zipped and put into an egg file with no apparent control over the whole process, even with specifying the option zip_safe to false. Consequence: my app doesn't find it's data anymore.

So I may have to move the data folder into the source package folder, just to be able to have some data files readable placed with the app. And I'm currently in this process but it already took two evenings.

Mood: Annoyed
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXXVII - PyPi package 2

Post by Trilarion »

I did more research on how to package data with your PyPi package. There are some constraints I'm not so happy with but I guess I can make it work.

Data files are deployed as egg (zipped) which make them effectively read-only and I still wonder (since there are already the scenarios as zipped files) if reading zip files from within zip files would break the existing code.

Package data files have to reside in the package folder, so I may use them, however this probably means I will use a symbolic link (Git has some inconveniences with symbolic links on Windows).

Executable, frozen Python, PyQt applications are currently not working since pyinstaller 3.2 and PyQt5.7 do not work well together.

Anyway, Andretting commented on the missing tiles and missing original scenario (original as in our own work), so I will delay a potential release now and instead think about the tile issue and get a better original (our own work) scenario.

Stay tuned for updates on these.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXXVIII - PyPi and Windows installer

Post by Trilarion »

Finally I got it working. Installing the latest version is as easy as "pip install imperialism_remake" and starting it as easy as typing "imperialism_remake_start" in a console everywhere on Windows, Linux or Mac (I hope). I will advertise this prominently when there is time for a new release (i.e. a few more features before).

Also I discovered an alternative to pyinstaller, pynsist, which unlike the former produces working installers on Windows. They bundle Python and the required packages and create executables and start menu entries. Works like a charm.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXXIX - Half a year later

Post by Trilarion »

I'm back on the project and recently committed some changes to the code base. However, a new release can't be expected in the close future because, well, nothing happened for half a year. The whole project slept a long sleep. What did wake me up were pull requests of other programmers using Linux and macOS and fixing issues with the code and me having a bit more free time. That got me motivated again. Let's see what can be done. For now I actually try to get into it again. I roughly remember what were the problems but I miss all the details.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

XC - Project management with issues, projects, milestones

Post by Trilarion »

In the last evenings I got much more into the game again. Because there was interaction with other programmers I decided to use the tracking features of Github (issues, projects, milestones) to convert some of the TODOs into issues, some of the ideas into notes for projects and some of the doable, urgent issues into a milestone (0.2.2). This is by far not exhaustive, but a good start I think. See issues for the current amount of open issues.

My task list for the coming weeks:
  • Upgrade forum software and insert some custom links on the top nav bar as well as update the content of the blog page that serves as main project home
  • Get the packaging right and automatical (at least on Windows)
  • Push for improvement in the editor (changing terrain, edit more nation, province features)
  • Version scenario files and solve how to update them from one version to another.
  • Create original Europe 1814 map
Then 0.2.2 will be released (which unfortunately will look mostly like 0.2.1 from 2015).

And then I will finally be able to concentrate on the game main map and several prototypes (examples of bigger parts) like battles, trade and a better map.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

XCI - PyPI surprises

Post by Trilarion »

I just uploaded a wheel file to PyPI, removed it and wanted to upload another one as a test, just to discover that it's not possible (to replace a once uploaded file and removing said file means it will be unavailable forever).

The recommended way out is just to increase the version number. I agree, we can do that.

So, the new next version will be 0.2.2.X ;)
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

XCII - The Scenario

Post by Trilarion »

I upgraded the forum software, inserted some custom links at the top, packaging on Windows and PyPI seems to work too.

The difficult thing is the scenario currently. I decided that for legal reasons I cannot use the current scenario which is closely adapted of the original Imp1 1814 scenario. It's nice to have original scenarios as guideline, but it's very probably inappropriate to just copy them. We need to make our own. Of course geography will be largely the same, even borders of nations and provinces might be, but resources should better not.

This will take some time. Indeed, currently it's impossible to change the terrain or add rivers for example. In order to advance I would maybe push for randomly created scenarios (so the editor can be tested more easily). This would also take some time, but it would be more on the programming side.

Closely related is the internal representation of a scenario. I'm thinking about it for some time now that I need to write down the exact requirements better in order to come to a better representation. When, if not now.
Post Reply