QSpring (multiplatform lobby client in Qt4)

QSpring (multiplatform lobby client in Qt4)

Discuss the source code and development of Spring Engine in general from a technical point of view. Patches go here too.

Moderator: Moderators

nikosai
Posts: 6
Joined: 15 Apr 2006, 00:20

QSpring (multiplatform lobby client in Qt4)

Post by nikosai »

Weeell, I've just started work on a multiplatform lobby client written with Qt4 (I'm calling it QSpring for the moment, but meh), and it currently has most of the chat protocol implemented (things not done include kicks, all the admin/privledged side of things, server messages etc, but they are coming, just a matter of connecting some signals up really). The bare bones of the underlying stuff for battles is there (it keeps status for them and such, and displays the list), but I'm yet to implement the reading of mods/maps etc, which really needs to be done soonish.

Screenies...

Linux:
Image

Windows:
Image

Things it will shortly have:
  • - ignore list
    - fully customizable logging
    - customizable colouring of chat text
    - ability to see and talk lobby stream in the raw (hah, not like anybody would want it, but it's there)
    - (possibly) a uPNP implementation
    - multiplatform configuration tool for spring itself, finds your installation automatically on any platform (since the settings utility seems to be win-only at the moment)
    - joining/hosting battles!
    - automatic downloading of mods/maps (similar to the usual lobby client)
    - maybe forum integration etc, we'll see about that.
For anyone who's interesting in giving a try out of reeeally, really experimental code, there's a source zip over at http://dragonhold.ath.cx/~nikosai/qspri ... ng.src.zip, and a windows build at http://dragonhold.ath.cx/~nikosai/qspri ... 32.bin.zip. Note that if these crash your machine, steal your children, eat your pizza etc, it's at your own risk, they're rreeally early builds.
User avatar
SwiftSpear
Classic Community Lead
Posts: 7287
Joined: 12 Aug 2005, 09:29

Post by SwiftSpear »

IRC client features! IRC client features!!!!
User avatar
Zenka
Posts: 1235
Joined: 05 Oct 2005, 15:29

Post by Zenka »

Holi, this looks working!
Wondefull!

.me hold sign: You rock nikosai!
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

*yay* that's really great. I like Qt :-)
User avatar
Tim Blokdijk
Posts: 1242
Joined: 29 May 2005, 11:18

Post by Tim Blokdijk »

I'm not going to comment... :|
User avatar
altaric
Posts: 185
Joined: 28 Oct 2005, 10:07

Post by altaric »

do you have to rewrite every piece of code or is it a port ?
Torrasque
Posts: 1022
Joined: 05 Oct 2004, 23:55

Post by Torrasque »

It look really cool (especially on linux) but there is still a lot of things to do.
Good work.

When do you think you will have a finnished the join/hosting part?
It should not be easy to desing the battle windows.
(Oh, I see you are working with the Qt designer,
and you know that unitsync.so/dll can help you a lot?)

edit : strange for me, the text is not always added the the end of the chat box:
(look the time stamp)
11:07:24 * [Gen]Hellspawn has joined the channel.
11:07:30 * newfie has left the channel. (Quit:)
11:07:38 * thei has left the channel. (Quit)
10:54:42 * Channel topic set by [XHC]DavetheBrave at
10:55:02 * [Gen]Hellspawn has left the channel. (Quit)
10:55:26 <Torrasque> Hoy
nikosai
Posts: 6
Joined: 15 Apr 2006, 00:20

Post by nikosai »

Torrasque wrote:It look really cool (especially on linux) but there is still a lot of things to do.
Good work.

When do you think you will have a finnished the join/hosting part?
It should not be easy to desing the battle windows.
(Oh, I see you are working with the Qt designer,
and you know that unitsync.so/dll can help you a lot?)

edit : strange for me, the text is not always added the the end of the chat box:
(look the time stamp)
11:07:24 * [Gen]Hellspawn has joined the channel.
11:07:30 * newfie has left the channel. (Quit:)
11:07:38 * thei has left the channel. (Quit)
10:54:42 * Channel topic set by [XHC]DavetheBrave at
10:55:02 * [Gen]Hellspawn has left the channel. (Quit)
10:55:26 <Torrasque> Hoy
Yeah.. bug -- for some reason when I tell the textedit to move its insert cursor to the end of the document it doesn't always quite get there... still trying to figure that one out.

There is still a loooot to do, I know, but I thought I would at least announce that it's in the works, so to speak. :)

I'm using Qt designer, indeed, and I'm going to do the battle tabs (I'm doing them as tabs, although you can only have one of the battle type open at once, of course) as big fat custom widgets, hopefully, with unitsync and my data classes underneath them (yes, I know a bit about unitsync, thanks. :D I just need to play with it a bit before I try implementing that stuff)

But yeah.. I'm not silly enough to put exact timeframes on it (things always go wrong, of course), but I'm aiming for within the next few weeks to have the majority of the battle code done [edit: done != finished != stable, by the way] (and heaps more of the chat protocol, too). NAT traversal, the possibility of uPNP (need to look at cross-platform options for that, though), and a lot of the customization stuff and annoying bugfixes, are on a longer timeframe, however. (I'm being conservative with these estimates by the way, playing it safe). They'll be done before any really public release.

edit: At the moment, I'm working with replacing the code-generated chat tabs with custom widgets, too, so that they reflect the model data classes better and I don't have to do all that dodgy stuff with QObject::sender() and friends.

I'll come up with a version plan shortly and start organizing what I'm doing... by the way, if anyone wants to rewrite the lower network code in it (server.h/cpp), feel free... mine's really hacked up and dodgy, so I tried to make it easy to replace. :P
submarine
AI Developer
Posts: 834
Joined: 31 Jan 2005, 20:04

Post by submarine »

nikosai wrote: There is still a loooot to do, I know, but I thought I would at least announce that it's in the works, so to speak. :)
all ppl running spring on a linux system will eb happy to read that :)
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Post by AF »

Can you make this the first lobby to correctly display bots? (use the interface to get the AI's name rather than display a filename which can be confusing and nasty looking especially to new users).

If it means anything I intend on creating a c++ lobby in qt4 in the future, so I'm looking forward to seeing how your source and wish you luck ^^
User avatar
PauloMorfeo
Posts: 2004
Joined: 15 Dec 2004, 20:53

Post by PauloMorfeo »

Hmmm, QT 4. /drool

Anyway, i want to advice you on something.
The lobby needs alot of comitment as new features are needed for it. So you need to do one of the folowing:
1- You comit yourself to keep suporting the lobby client after it is done at first.
2- You do it in a way that it is well documented, well structured and easy for other people to pick up on your work.

Failing to follow at least one of those, i bet it will end up as yet another uncomplete lobby client.
I highly recomend #2.
SeanHeron
Engines Of War Developer
Posts: 614
Joined: 09 Jun 2005, 23:39

Post by SeanHeron »

Erm, not that I know much about it, but does Omni ring a bell for you? Wouldn´t it be more sensible if you put your effort into that (as far as I know not too far from being finished) multiplatform client ? Sorry if I´m mistaken.
Torrasque
Posts: 1022
Joined: 05 Oct 2004, 23:55

Post by Torrasque »

I've looked to the source, and omni is not a lot more advanced.
A ihmo, for a multiplatform lobby, C++/Qt is better than Phython
Egarwaen
Posts: 1207
Joined: 27 Feb 2006, 21:19

Post by Egarwaen »

Torrasque wrote:A ihmo, for a multiplatform lobby, C++/Qt is better than Phython
Why? Python's very portable and easy to modify, and is easily high-performance enough for something like a lobby client.

Also, I believe that Python programs can be compiled into executables for Windows, so there's no issue there.
Torrasque
Posts: 1022
Joined: 05 Oct 2004, 23:55

Post by Torrasque »

Egarwaen wrote:
Torrasque wrote:A ihmo, for a multiplatform lobby, C++/Qt is better than Phython
Why? Python's very portable and easy to modify, and is easily high-performance enough for something like a lobby client.

Also, I believe that Python programs can be compiled into executables for Windows, so there's no issue there.
If onmi was made in Qt, I'm sure that more people would have modify and improve it, currently, only Ace07 have touched it. (arg, sorry for this english)
There is a lot (8?) of month that his developement has begun, and everybody say "ay, I don't know python enough to make that"

My question is : why not Qt, when it seem that more people know C++ ?
(And it's really easy to use too)

edit : Surley, I don't want to say that python was a bad choices, but If I had to choose between a phyton lobby, and a Qt one, I prefere the second.
Egarwaen
Posts: 1207
Joined: 27 Feb 2006, 21:19

Post by Egarwaen »

Torrasque wrote:There is a lot (8?) of month that his developement has begun, and everybody say "ay, I don't know python enough to make that"
Then they should read the documentation. A good programmer can learn Python in well under a day, it's a very simple and powerful language.
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

It's only that some people like Qt + C++ more then Python + Qt or Python + Wx or Python + GTK or GTK + C. Others like another combination more.

Maybe you stumbled upon more people who liked Qt + C++ more then Python + Wx, but then that's random I think.

Actually quite a lot people in linux world prefer Python/Perl over C++ because it's so much easier to understand and do rapid development in it.
MasterMind
Posts: 1
Joined: 17 Apr 2006, 21:34

Post by MasterMind »

I am a Qt/KDE programer and I believe that Qt/C++ is much better than Python (in my eyes). In generaly I don't like wx, GTK etc. They do me only trouble (I can't even run omni, something with versions) :P. Qt is well documented and very good designed and also it merges with the KDE desktop ;). And also, it's easy to translate into diferent languages (allready implemented with Qlocale). And also, Qt is using a very powerful Signal/Slot mechanisem for clicking buttons and other kinds of actions (in Qt4 also betwen threads) while other program languages (in the same level as C++) has callback. Have a look at the http://doc.trolltech.com/4.1/classes.html if you are interested in. I believe that Qt is the best choice for the multiplatform client. (also having a QProcess for running programes ...)
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

Yeah, I'm a fan of Qt/KDE code too :-) . I just notice there's quite some GTK programmers out there too, and in the end, it's just a matter of taste and what you're used to I think.
Egarwaen
Posts: 1207
Joined: 27 Feb 2006, 21:19

Post by Egarwaen »

Of course, from a design perspective there's also no reason not to have (and encourage) multiple 3rd party lobby clients, as long as they all have the same base features and use the same protocol.
Post Reply

Return to “Engine”