Discussion of application for online gaming

Browser based open source cross platform solution for easily playing customizable card games online vs other players. Lead dev: knitter
Post Reply
Knitter
developer
Posts: 87
Joined: Mon Jan 17, 2011 11:26
Location: Leiria, Portugal
Contact:

Discussion of application for online gaming

Post by Knitter » Tue Jan 18, 2011 23:53

Hi,

I would like to collect the maximum possible input about an idea that has been handled down to me, the creation of an application that would allow online gaming, or just fast(er) playtesting of development rules.

I took the liberty of creating this topic so that I can easily ask questions and be able to read the responses, over and over, until I'm satisfied that I understand the purpose and all the constraints of the application.

There is a, somewhat, long list of features, most of them can be reduced to the same movements, but still, you can find the current description at the wiki in the address http://chaosrealm.net/wtactics/wiki/ind ... =Sandscape

From my understanding the idea is to create a way to play the game, WT, in a computer and also to allow for easier playtesting of development rules. In the spirit of WT the application should be open sourced, and easily customizable so that other games can be played on it. So, I would like everyone to post their thoughts about the subject so that I can mix it up and see what it is that we want to create.

Without going much into feature details, I see the project and it's development as follows:
  • (1)Freely available application that allows users to "play" the game. As in: provide the basic tools to play WT in a digital version with table, card decks, way to communicate and visual hints for card placement but unrestricted movement like a real table.
  • Thin client, not much graphics/buttons, images and such, just the basic UI elements to be easy to use
  • Start simple: don't plan too much features and concentrate on providing the basic experience described in (1)
  • Connected to the existing database (Cardscape), allowing users to play with updated cards and devs to test the latest additions.
The wiki refers to the application as a web based one, I have some doubts that would like to present here:

Everything nowadays is "web-based", the browser is the application the most used application used in our day-to-day operations, but it still is a limited environment for development. Looking at the project's general UI, drag and drop and asynchronous communication is needed, and that can only be implemented using JavaScript. The reason to be web-based is that it should be used easily without downloading specific clients for different platforms (different operating systems), or is there any other?

Looking at the project's description in the wiki I started to think about a Java application instead of a web-based.

Java pros:
  • Easier to create the required UI - No messing with JS, CSS and browser limitations and quirks.
  • Multi-platform - Since graphic consistency is not necessary, the same code can be used in every Java-enabled system.
  • Allows for direct play/testing, no need for a central server - Easier to setup and use if the project is to be used by other people
  • Not limited to a central server also allows more freedom - No need to setup accounts just to play, playable without Internet in ad-doc networks/lans
Java Cons:
  • Not browser based!
  • Currently who has Java knowledge beyond me?
  • Not so easy to set the interface into a fantasy style - will it ever be important?
  • May be seen as a clone of existing applications
  • Will need webservices to maintain updated cards and to use accounts from cardscape
  • Will probably need more code? - can't really compare as both solutions are different and use different approaches
Thoughts about using other technologies beyond the browser?
General comments on the system, even if repeated, and even if not technical, in fact, leave the technical aspects for latter :)
Rejoice! For very bad things are about to happen.
User avatar
pennomi
developer
Posts: 151
Joined: Mon Nov 01, 2010 02:11
Location: Utah, United States

Re: Discussion of application for online gaming

Post by pennomi » Wed Jan 19, 2011 05:27

Knitter wrote:The reason to be web-based is that it should be used easily without downloading specific clients for different platforms (different operating systems), or is there any other?
I am not familiar with anything other than javascript or flash that will let you accomplish a cloud-based solution for sandscape.
Java pros:
  • Easier to create the required UI - No messing with JS, CSS and browser limitations and quirks.
  • Multi-platform - Since graphic consistency is not necessary, the same code can be used in every Java-enabled system.
  • Allows for direct play/testing, no need for a central server - Easier to setup and use if the project is to be used by other people
  • Not limited to a central server also allows more freedom - No need to setup accounts just to play, playable without Internet in ad-doc networks/lans
Additional pros:
  • I know and have taken classes about Java. (However, I'm extremely tied up with cardscape right now and I haven't used Java for a major project in about 3 years :? ).
Java Cons:
  • Not browser based!
  • Currently who has Java knowledge beyond me?
  • Not so easy to set the interface into a fantasy style - will it ever be important?
  • May be seen as a clone of existing applications
  • Will need webservices to maintain updated cards and to use accounts from cardscape
  • Will probably need more code? - can't really compare as both solutions are different and use different approaches
Additional Cons:
  • Harder to release modularly as a web-based application. Upgrade with a cloud solution is instantaneous for all users and there would be no versioning conflicts.
  • Harder to connect to Cardscape database.
Thoughts about using other technologies beyond the browser?
General comments on the system, even if repeated, and even if not technical, in fact, leave the technical aspects for latter :)
I'd personally favor a cloud-based solution, since it would be easier to quickly show a friend on their computer. Also, it might draw more people to WTactics if they can quickly give a web app a shot. You might consider looking into Flash as a solution; it might make it easier to program, from what I understand. Not sure what all that will entail, as I know exactly zero flash.
Knitter
developer
Posts: 87
Joined: Mon Jan 17, 2011 11:26
Location: Leiria, Portugal
Contact:

Re: Discussion of application for online gaming

Post by Knitter » Wed Jan 19, 2011 12:05

pennomi wrote: I am not familiar with anything other than javascript or flash that will let you accomplish a cloud-based solution for sandscape.
Web-based and cloud-based are two different concepts. JavaScript or Flash are just two often used technologies in web-based applications, I actually know of none that is cloud-based and uses Flash though I never give much attention to Flash applications. There are tons of different technologies for web-based applications from the good old C to Python, Java EE, JavaFx, Perl, etc.

The proposal is for a traditional client-server application, where the client is just the browser, much like this forum, but with higher user interaction.
pennomi wrote: Additional pros:
  • I know and have taken classes about Java. (However, I'm extremely tied up with cardscape right now and I haven't used Java for a major project in about 3 years :? ).
I anticipate that one programmer would be enough to get the project started and provide a usable solution in short to mid term. The problem arises in the long term when we talk about the ability to maintain the existing solution.
pennomi wrote: Additional Cons:
  • Harder to release modularly as a web-based application. Upgrade with a cloud solution is instantaneous for all users and there would be no versioning conflicts.
  • Harder to connect to Cardscape database.
Are we creating an application just for us or for everyone to use? Upgrading the application can be automatic, though I don't see upgrading as a problem as long as a single file is made available that replaces the outdated version without any more changes.

Connecting to the database is equally hard. Even if the application is web-based, we cannot connect directly to the Cardscape database, if we do what will happen to other users that want to install their own version of the server? Will they have to install their own version of Cardscape as well?
pennomi wrote: I'd personally favor a cloud-based solution, since it would be easier to quickly show a friend on their computer. Also, it might draw more people to WTactics if they can quickly give a web app a shot.
Again, we are mixing concepts, cloud computing is a very complex solution to this simple problem. A web-based client-server application is enough, I believe.
pennomi wrote: You might consider looking into Flash as a solution; it might make it easier to program, from what I understand. Not sure what all that will entail, as I know exactly zero flash.
I have strong feelings against Flash and it's closed source model, lack of usability and accessibility considerations. Though I might consider it if it was the right tool for the job, which I don't think it is. Javascript, XHTML and, for more media centric problems, HTML5 are enough.
Rejoice! For very bad things are about to happen.
User avatar
snowdrop
developer
Posts: 794
Joined: Mon Feb 01, 2010 15:25
Location: Sweden
Contact:

Re: Discussion of application for online gaming

Post by snowdrop » Wed Jan 19, 2011 13:29

From my personal point of view the question should be the following: What, if anything, is needed and fills a function? In what way would the world benefit from another local client vs. benefits from a so-called cloud based software?

If reason is to guide us to the answer I think it leans towards cloud software. My main argument would be that there is already two open source local clients in existence that do their job, and one of them is still in heavy development, albeit functional (OTCGN2 / gCCG). I can't see any point in spending plenty of work hours on creating yet another local client, if that client doesn't do something amazing or solve a huge problem which the other clients can't. And honestly, what would such a function be, that warrants the creation of a brand new client?

saturation of local clients
The existing clients prettty much have it all. Sure, they can be improved in some ways - all software can - but does those marginal improvements warrant and justify the amount of work that would be spent into creating something from scratch?

I think not. It would be like creating yet another webbrowser instead of using a plugin for FireFox or Chromium. Or, in same manner: Write a new browser instead of using the source code of either one of those two to build upon and improve from what's already around.

It goes without saying that sometimes software is so badly written and lacks so much that it's easier to trash it alltogether and start writing brand new code from scratch. However, that is not the case with the current open source clients: On the contrary, OCTGN2 is top of the line, and gCCG, while old and rusty, is a very robust system that gives us the means to let the world play WT online, using local clients.

There is but one single account where the open source clients fail: They have no implementation of AI and/or rules enforcement.

The rules enforcement part is really not necessary and usually even slows down game play, and it is also seldom needed as it brings very little benefits.

AI is...n
The AI support is the most interesting aspect that the open source clients lack. In one way, them "lacking" it is also not true - they choose to not implement it, as they have no need for it: The clients were written to enable humans to multiplay. And that's what they're all about and deliver. Not single player games vs a computer.

On that front, there is a third local client called Wagic, which does just that: It is designed to be single player only, and has an AI that plays MtG.

Currently there is no open client that is configurable in a way which allows it to work both on- and offline vs computer AI and/or human and have it's rule enforcing shut on/off etc. Such a tool has probably (my guess only) not been created because the developers of the current clients deemed it too cumbersome to develop and/or the actual worth of having all the additional functions added in relation to work and user base as too low to justify such a full featured beast.

Nevertheless, client wise, this is also the only thing that hasn't been done yet. How huge is the hole this leaves? Frankly, I'm not sure. My guess would be not that huge: Usually players tend to favor single or multiplay and keep to whatever they happen to enjoy.

What I'd suggest to anyone that's interested in developing an AI or rules enforcing for a local client is to just take the source code from whatever open client is already around and improve upon it: Much of the work has already been done. It's already there. Why not just either co-work with the dev of that project or, if such as co-work is not desired by anyone, fork it and add whatever is missing and that is deemed as a desired?

(For the record, OCTGN2 is written in C#. I'm, not sure what was used to code gCCG but it sure isn't anything Windows-specific...)

cloud solution
(For the record, in the following I use "cloud" and "web-based" as synonyms, even if I can appreciate the distinction that's made between the two. I really don't like the cloud wording and find it mostly redundant and a hype, just like talking about "web 2.0" when those technologies have been around for ages and also used in "Web 1.0")

flash

When it comes to Flash, much can be done in it and it has developed it's scripting language plenty from back in the days when it was new. However, more and more parties are taking a stance against Flash usage. Apple is one of the bigger players, and Google is tight to follow. They all wish to see Flash dead, for several good reasons (and some economical as well of course). Because of that I think the world is moving away from Flash. HTML5 is an example of that. Google open sourcing video tech they bought is another.

While I don't want to select the language for the coder that does the actual work, I would not hesitate to recommend that an open language is used if possible, realistic and if it that does not compromise with general quality that the user experiences in the end product. I myself would never do anything in Flash because of the simple reason that it's extremely buggy, unreliable, resource draining and works crap on Linux platforms. In addition, there is nothing open about it, leaving the fixings and future of it at the whims of Adobe & Co, and also potentially raising legal issues.


for
  • There is no such thing around that is open source.
  • It's instant: You login (using OpenID or FB or internal user system), and all is always right and up to date etc. You don't have to download card images and game patches, you also don't get to see options, menus, functions and so on that are irrelevant for the game.
  • Bigger user base - also makes game more known and stronger community.
  • Platform independent.
  • Computer independent - play it no matter on what machine you happen to have in front of you, at home, school etc. No local copy needed.
All in all, think about Travian and such games that have immense popularity. Why? It's not because of their innovative gameplay or graphics. It's only about availability and social context, which brings this to questions like if it should be a stand alone site or integrated into services such as Facebook etc. A huge user base and availabilyt
maintaining code & team size
I anticipate that one programmer would be enough to get the project started and provide a usable solution in short to mid term. The problem arises in the long term when we talk about the ability to maintain the existing solution.
Any and all code must be documented and clearly written, as it should in all open projects if one wants the code to prosper in the long run.

While I can't guarantee that there would be more programmers around to aid when needed, I do believe that it's higher probability to find additional coders to a unique and pioneering project like the web based solution compared with finding them for yet another local client. I think such projects are more appealing to people because of psychological reasons. I also think it shouldn't be very hard to actually find additional team members once you'd have something functional to showcase. Hardest part is always a projects infancy. Most never make it into their childhood. They die as infants.
Are we creating an application just for us or for everyone to use?
If we're doing this and doing it open source I think it should be done in a way in which it can maximize it's benefits to the world, meaning it should be an application that is somewhat easy to use and adapt so that most CCG:s can run on it.

This is also a strategical move: By keeping it universal we will get way more support and will have easier time finding additional coders later on. We harvest the powers of the full open source community. If we'd close it down and make it WT only and hard code all WT related stuff it would be of less use for most and also something which would mainly only interest WT community (which is non-existant and will be non-existant until at least 1-2 years after the release of an actual playable game). Thus, I suggest it to be a flexible solution, focused on being easily moddable so that most normal CCG:s can run on it.

I have a hard time seeing anything that speaks against making it generic. Code wise, it isn't much more work. It could almost even make the quality of the code higher.
Connecting to the database is equally hard. Even if the application is web-based, we cannot connect directly to the Cardscape database, if we do what will happen to other users that want to install their own version of the server? Will they have to install their own version of Cardscape as well?
This is my original stance on the topic: There should be no necessary relation between CS and SS. Whatever relations are put there should be done locally within and for the WT project only. Bridging them would be nice if easy and functional. If not, then they won't be bridged. No big deal really.

However SS is coded, it must not rely on CS being around. CS and SS must both be kept as stand alone projects, at least they should be developed as such from the start. Later on, if we want to release some kind of bridge and code support within them so that they can communicate with each other, that could be done as well. That's in the future.

For now, let's just imagine that a user or community that is interested in using ONE of the two, should not have to use both. Or should he/she? I think the question can be asked, and honestly don't know what the best option is.

My reasoning just tells me that having two separate teams and stand alone code bases, each with it's specific function, is usually better than having one jumbo-project. I see a lot of benefits and it would indeed be super cool if they were bridged from the start, but is it a smart move from a developers and long term perspective? I don't know any longer, and figure it would maybe be up to the coders of them to decide.
User avatar
Ravenchild
developer
Posts: 131
Joined: Sat Sep 04, 2010 19:21
Location: Germany

Re: Discussion of application for online gaming

Post by Ravenchild » Wed Jan 19, 2011 18:22

I pretty much agree with snowdrop. Besides the only advantage I see for Java programs over a JavaScript based application, is that Java allows p2p connections. But this only works with real Java applications and not with Java applets for security reasons.

Flash is and never will be installed on my system. Too much of a security risk and flash-ads are extremely annoying. Besides I have gif-animation disabled. So my web is all static :ugeek:
I have a hard time seeing anything that speaks against making it generic. Code wise, it isn't much more work. It could almost even make the quality of the code higher.
I disagree on this one. It is true that generic code is usually of higher quality. But that is because much thought went into it to make it generic. Generality has it's price. And you can overgeneralize if you want to cover each potential use-case of you code.
It's easy to write code that serves you well in the present. It is difficult to design code that will not fall on you feet in the future when you need to adapt the system.
User avatar
snowdrop
developer
Posts: 794
Joined: Mon Feb 01, 2010 15:25
Location: Sweden
Contact:

Re: Discussion of application for online gaming

Post by snowdrop » Fri Feb 11, 2011 13:24

Ravenchild wrote:
snowdrop wrote: I have a hard time seeing anything that speaks against making it generic. Code wise, it isn't much more work. It could almost even make the quality of the code higher.
I disagree on this one. It is true that generic code is usually of higher quality. But that is because much thought went into it to make it generic. Generality has it's price. And you can overgeneralize if you want to cover each potential use-case of you code.
It's easy to write code that serves you well in the present. It is difficult to design code that will not fall on you feet in the future when you need to adapt the system.
Agreed.

Once a program allows you to cover every possible scenario imaginable it often compromises with things, becomes overly complex to setup in the first place or, most usually, becomes bloated and, while being a solution for many user scenarios, it is still not the best or even a good solution for most of them. When that happens, onne knows he/she ended up with code that wanted too much and as a result doesn't deliver what it could have done if it was more specialized and nisched towards a certain usage.

Over 95% of all CCG:s I can think of are virtually played the same way and involve same basic concepts. A parallell would be to develop VASSAL - it's a virtual board game engine. In same manner, 95% of all boardgames are played the same way and use siillar concepts which have been easily incorporated into VASSAL.
User avatar
Q_x
developer
Posts: 334
Joined: Thu Sep 23, 2010 15:10

Re: Discussion of application for online gaming

Post by Q_x » Sun Feb 13, 2011 09:40

Its all my fault, so let me take voice here as well.

First thing is - there is already existing Java app. Vassal. And it is great start, as all the hard moments would be solved right from start - networking, protocols, display, moving stuff...
Second is - we need nothing that is outside of browser, as all the solutions are done, and we are using some now.

But the real question is in fact different. What WT needs? First what comes to my mind is that it could be something instant to show and play without much fiddling. Second is a prototyping app. Tool that you turn on, choose "game scheme", compose deck quickly out of most recent cards and play. "Game scheme" is anything from single fight (creature v. creature) to full game.

It is not really any particular model enforcement. We may use plenty stuff for this. I even think that downloading 100-150 card images may be too much for browser game really. This is why I have started with text-only draft long ago.

What landed into my mind in the meanwhile:
Text only game that could be a console game, pretty much played like chess or MUD. You type commands by hand and you can see what the situation looks like. What is good is this can be easily adopted as a base under a graphical client, what is bad is that without rules enforcement, we should introduce a fixed table layout. Also opens up a way for play-by-mail implementation.

Raiding chatroulette and play by video, which may result in mental illness, but may be good when advertising

I think frugal web app will do the best job for both instant play and prototyping.
I'm the filthy bastard you wish you never met.
User avatar
xarn
Posts: 101
Joined: Thu Oct 13, 2011 11:50

Re: Discussion of application for online gaming

Post by xarn » Sun Oct 23, 2011 14:20

Hi,

I saw the words "cloud based" misused several times. Therefore I just wanted to provide some clarifications on what cloud computing actually means:

It means resources-on-demand / infrastructure-on-demand / service-on-demand.
That means, something like amazon EC2 where you can say "please give me 17 more CPU, 33 Gb more bandwidth and 22 Gb hardrive please.". In other words, you can scale the processing power, bandwidth, etc, on demand, in a customized way. It doesn't have anything to do with the web. You can have classic data processing tasks which are cloud-based but not web-related.

So please use "web-based" from now on, as it has really nothing, but absolutely nothing to do with "clouds".
Post Reply