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

Re: Dev Blog - Trilarion

Post by Trilarion »

I was also travelling a lot in the last weeks. But now I should have enough free time again to forward the project and put out a new release. The scaling error in the last screenshot has been fixed already.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXIV - Taskboard

Post by Trilarion »

We had a taskboard. We have a new one now. It looks like the old one. It took me two months to do it. So was it worth it?

Yes it was, because along the way I learned PHP, SQL and templating, which are useful techniques by themselves and might come in handy. Also management of tasks will take less time from now on (webinterface).

In the meantime except for spam registrations there wasn't much activity on the project from anyone, but now I will start working on it again and working towards 0.2.2/0.3
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXV - Server

Post by Trilarion »

I'm currently in the process of putting all the server related part of the game into a "process" using the multiprocessing module of Python. This allows for more concurrency (avoids the global interpreter lock) while obeying strict interfaces (modularity).

And there I see that I basically could have communicated with remote processes easily. So part of the network code (instead of wrapping QTcpSocket) could have been done with the multiprocessing module (would not be faster, but maybe less code and slightly more flexible with transferable objects).

Well this is just another possibility to achieve the same thing. I rather spent my time on new stuff now that it is running. But I remember spending quite a bit of time on it. I could have saved a bit probably.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXVI - Distraction

Post by Trilarion »

Lately I got distracted, not only by the task board but also by a remnant of the old Java code, the ogg/vorbis java sound library.

Well that means that there were not many updates here. In principle we stand a bit before the main screen and so this is what comes next. Unfortunately this was like a two months distraction period.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXVII - Qt4 to Qt5

Post by Trilarion »

Currently I'm upgrading the graphics framework from Qt4.8 (via PySide) to Qt5.5 (via PyQt5) and it turns out that it requires some work beyond renaming a function here and there. However I think it will make the programm run more smoothly (and delivers better sound and video playback capabilities as well as more graphical effects right out of the box).
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXVIII

Post by Trilarion »

Almost two months are over and I still am converting from Qt 4 to Qt 5 at very slow speed. The reasons are vacations and a general distraction (I was playing too many computer games myself lately). I hope to get down to more serious coding soon.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXIX

Post by Trilarion »

Conversion to Qt5 is almost finished. The game runs again with almost the same functionality only some minor visual glitches which can be repaired. The only bug still remaining before I can officially declare the conversion finished and move on to implement new stuff is the server. The bug is that running in its own process it is not terminating (hanging somewhere) which is new in PyQt5 and did not happen with PySide. Even more strange when not running in its own process no new connection can be made but if I make a small test example it can make new connections. This is not a roadblock because one way or other this can be fixed, I'm quite sure. But it cost me two hours yesterday evening without any progress at all which as you can probably understand is quite frustrating.

So that's what I'm doing still: Figuring out why something works different or not anymore when changing the framework (or in my case only the framework version).
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXX

Post by Trilarion »

Only three quarters of a year later...

I'm on the project again. Someone else, Antoine Spitaels, did contribute a lot to the project over the winter - he advanced the battle prototype.

I updated Python to 3.5, PyQt5 fort Qt 5.6 and made some things easier. One problem is freezing the script and creating a windows executable bundling the Python 3.5 runtime, needed parts of Qt 5.6 and the Microsoft Visual C++ runtime. Unfortunately cx_Freeze, the utility to achieve that, does not yet support Python 3.5 while PyQt5 for Qt 5.6 does not yet support Python 3.4 anymore.

That leaves us without the mean to make a windows executable anymore. Most probably cx_Freeze (or maybe PyInstaller) will work together with Python 3.5 by the time we have a "playable" version. So no worry for now. But we can only make Vanilla releases right now (you have to install Python and PyQt for yourself). That's a bit unfortunate.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXI - Widget toolkits

Post by Trilarion »

I looked again at the current state. Here is an overview of what I found:
  • Unity supports most platforms and seems very rich in features. Game logic is written in C# or a Javascript based language.
  • CEGUI supports Win/Mac/Linux and may not be as powerful as Qt (but also has a Python binding).
  • wxWidget is similar to Qt (so no advantage)
  • Juce seems to support mobiles and desktop but may not cover everything you need.
  • Nana C++ looks like the smaller brother of Qt and wxWidgets
  • Apache Pivot looks like an alternative to Swing/SWT but ties you to Java
  • V-Play is Javascript on top of Qt and is commercial
  • There are web (Html, webgl, javascript) frameworks like Phaser or Wade or ITurbulenz and many more but they all mean running Javascript. Not much experience with big projects running on JS.
All in all. I would stick with Python and Qt for the moment. Reasong being that Python is a nice and powerful programming language and Qt is a stable and powerful framework and the desktop market is fully covered. Conversion to C++/Qt should be quite simple afterwards and even Qt is supported on Android (although I have no experience there).

The only real alternatives seem to be Unity or Web frameworks. While they promise more plattforms, they would also mean a big change right now which I cannot do really (not enough resources).

So we stay with Python/Qt and see how it goes. For now our users will have to install Python and PyQt themselves before.
User avatar
Trilarion
Founder
Posts: 845
Joined: Thu Jan 12, 2012 9:27 pm
Location: Central germany

LXXII - Programming with pen and paper

Post by Trilarion »

The more I dig into the code again, the more I see that clearly design must come first and that proper design is done by pen and paper (or notepad and keyboard or diagram app and mouse). Questions like: how to design the network part, so communication is easy but failsafe? How to design the scenario part, so all information is there and changes can be signalled easily while keeping the scenario at the server and sending only relevant messages to the client? How should the interfaces for main map as well as editor look like?

This all means I will have to do a lot of design first before I can continue programming. And programming is still part of the challenge because even if you know what to do this doesn't necessarily include the knowledge how to do that..
Post Reply