Loading...
  OR  Zero-K Name:    Password:   

Epic Battle Browser

25 posts, 2512 views
Post comment
Filter:    Player:  
Page of 2 (25 records)
sort
Hello ZK Community,

I started a little ZK related side project a while ago and want your opinion about it.
Its a lobby client which works with the spring lobby server.
... damn, its too late to write a full description, I'll do that tomorow.
Here are some impressions - everything is work in process.

WIP Screens

Its written in C#, the GUI is WPF.

(edit: fixed url)
+9 / -0


10 years ago
First impression: looks very cute!
+1 / -0
Wow, that already looks really sweet! Keep going!

"260 of 199 matching your filter criteria" is kinda strange though.
+0 / -0

10 years ago
It does look very neat! Although it's Windows-only... :(
+4 / -0


10 years ago
This is very sleek looking, excellent work
+0 / -0

10 years ago
Gj, verry nice
+0 / -0
Clean interface +1
Commander and unitstats interface +1 (it is unitstats, isn't it?)
Player/Channel Chat not visible together with Battleroom -1

Not for Linux -(infinity)

We already have much more win lobbies as we have linux lobbies (especially working, not lagging, useable ones) and I don't like the windows-hype.

(This is not meant to downvote your project in general, just my personal oppinion)
+0 / -0
10 years ago
Looks great, I don't actually understand what it is though. Is it a fully functional lobby or a replay browser or what? Also, any chance of linux support? You may be able to make it work in mono like ZKL with minimal effort.
+0 / -0


10 years ago
quote:
Also, any chance of linux support? You may be able to make it work in mono like ZKL with minimal effort.

ZKL had minimal WPF use. This is built entirely on WPF. It'd be easier to reimplement in QT, if anything.
+2 / -0
10 years ago
Thx for the feedback, here is some more info:

I began this project some months ago because i wanted to experiment with WPFs 3D capabilities. As i'm a big fan of ZK (the technical background, the community, the way it's played, how it looks - everything rough on the edges but quite compelling when you get into it) i thought about using something game related as sample data.

I found it in the map resources which are nicely provided by spring/zk infrastructure. The idea was to generate a 3D meash from the heightmap, merge maptexture and metalmap and project it on the mesh. The result can be seen here. The map viewer can be rotated, zoomed and panned.
This view is merely a mockup, it currently uses the 3 images as input but can be bound to arbitrary images. Using a tip from enetheru in the spring forums it might be possible to add the water plane, too.

After playing with the 3D stuff i thought this would look cool in ZKL. I explored its code and read about the spring lobby protocol. I never wrote code for server-client software based on a custom protocol, so i went on...

Ok, what is it now, actually?
You can see it as a prototype or spike solution to a lobby client for spring games for Windows. The only 'real' functionality (protocol commands) is
  • connecting to server
  • logging in, exiting
  • listing users, reacting to incomming/exiting users
  • listing channels
  • joining, leaving channel, reacting to joining/leaving clients

Additionally there a commander setup view and a stats comparison view. Both are aimed to provide access to ZK-specific content.
The comm setup mirrors the websites functionality with some extras. The modules are selected using drag&drop. Incompatible modules (weapon boosters/conversions) indicate incompatibility. Changes in setup instantly adjust the visible stats of chassis and weapons. Selection a morph level shows the matching model (Its nice to see it grow next to the glaive for size comparison. I imported the bombard comms level models in Wings3D, placed them in a row, screenshotted them in orthogonal view and pixelpolished that a bit).

The stats view is intended to let you compare your comm setup with other units. its uses the calculated stats of your selected loadout and the stats of all zk units (parsed luas from zk repo, parser is part of the project and could in theory work automatically). The units can be selected by fac (see buttons above chart) or individually (using the popout shown in th screen).
There are only two stats categories (healt and cost) but thats extendable (i'll be more specific on that part shortly). The idea of this is, to make it easier for players to estimate a comms effectiveness and get a better feeling for its value. Also it could be a nice reference for unit-X-is-soo-OP forum threads.

So, that's what you can see for now. Beneath that, there is a client software which is designed to be heavily extensible. At the core of it sits an IoC container (well, kind of - its MEF) which allows extension at almost every level of the software (simply by putting a dll containing extensions in the apps bin folder). The following things are currently extensions:
  • sections ('you', 'play',...)
  • subsections (each section can define its own kind of subsections witch special behavior)
  • lobby protocol commands
  • comm setup modules (weapons, special weapons, stackable, ...)
  • com comparison stats pages

As you see, theese are things at very different levels of abstractions. Developing stuff like this makes it more easy for other people to extend the software, especially if they only care for a specific topic and don't want to learn about every detail.

The internal lobby protocol client is a tcp client using .NET 4.5 async/await features. It provides all events as observable event streams using ReactiveExtensions. RX is a great technology for building complex event-driven architectures. Think of it as SQL on events or continuosly changing data.

The protocol client is used by some services (providing channels, users, ...) which in turn can be used by the ui to create views.

The UI is completely WPF, relying heavily on external libraries such as ModernUI and Helix Toolkit. It follows strictly the MVVM pattern (dividing UI behavior from appearance). All chrome is defined in theme resources which makes the application extremely skinnable (for some examples see ModernUI docs). The window can be configured to be fullscreen (no task bar). When switching sections or subsections, a transitions runs (new section slides in).

As you see, this thing has grown from a-little-hacking to something bigger. So big, that i don't know what i should do with it now. When working on it i envisioned many things, but the question is what reality has got in mind.

I think, it can grow into a full-fledged lobby which gives the user a nicer entry to the game(s). It can look very different to SpringLobby or ZKL and provide a more game-like frontend. Using full screen (and maybe even match the style of ZK's loading screens sometime) could give users a seamles transition between lobby and game (it would look like one software, no need for a lua lobby). I'm thinking about luring new users into the game by giving them a nice first impession.

Also, this isn't ZK-only. Using a subset (or completely different set) of extensions this thing can be applied to every spring based game.

One point which will bother many of you is the problem of linux compatibility. I'm very sorry that the stack i'm relying on to build software is like that. Running Mono Migration Analyzer on the project shows very sad results (WPF, many .NET 4+ features), so i see no feasible path there. In theory the projects including the view models could be made Mono-compatible but it would take some experienced coder to recreate the views on qt or whatever mono provides as ui layer.

So, finally: is this interesting for the devs and the community? Would anyone want put work into this (coding, testing, design, feedback)? Should i release this?

+7 / -0


10 years ago
quote:
In theory the projects including the view models could be made Mono-compatible but it would take some experienced coder to recreate the views on qt or whatever mono provides as ui layer.

To my knowledge, the only UI layer guaranteed to work reasonably for a single executable in both windows .net and mono is WinForms.

It's possible to use several QT bindings libraries, but those require a native component, so your binaries would be different for each system.

So far, powers that be seem to consider having a single executable for all platforms a major requirement.

I'm not sure if this could change. Any purely QT-based app would also be multiple executables, and spring itself is like that anyway...
+0 / -0


10 years ago
Wow, looks great! :-)

It's really shame linux does not support WPF .. we had some WPF in the ZKL in the past but we had to remove it all and use windows forms + manual GDI rendering now to ensure some cross-lobby compatibility..

Thats why some bigger parts like missions and map browser are web based..
+2 / -0

10 years ago
The obvious solution is web-GL map rendering in ZKL :P
+3 / -0


10 years ago
quote:
web-GL map rendering in ZKL

WebGL in IE? Must... not... rage...
+1 / -0
It is awesome, ZK desperately needs such a nice and functional lobby (not like present ugly/chaotic one). Appreciate your work.

Too bad its not in ANY other toolkit than WPF (QT fe.). Maybe it would be possible to pack Linux binaries with Wine and call native libraries but im not sure how hard it would be and how good would it worked.
+0 / -0

10 years ago
EErankAdminAnarchid

I was joking, but it would probably be possible to get some other rendering engine to play nice with ZKLobby. Something like this: https://github.com/cefsharp/CefSharp

It would be a huge pain, but not an impossibility like WPF.
+0 / -0


10 years ago
Is there a download anywhere?
+0 / -0
10 years ago
EErankAdminAnarchid No there's not. Currently i'm totally infringing on your IP and i haven't released any code (and won't do without the devs permission). I could mail it if you want - give me a notice via my accounts email.
+0 / -0
[AG]abma
10 years ago
if its not cross-platform / open source license, then it sucks. WPF afaik isn't cross-platform.

don't make the mistake and start a project for the spring community which is not cross-platform as it can't be used by many people.
+4 / -1


10 years ago
Ignore him. Start any project that suits your fancy and don't worry about what "the spring community" thinks.

But if you start it, finish it.
+1 / -0
Page of 2 (25 records)