Page 2 of 2

Re: What's the status of this project?

Posted: Tue Dec 22, 2015 16:02
by Ravenchild
Thanks for the update.

Yes, realistic goals... I know exactly what you are talking about :lol:
Dammit, now I feel nostalgic.

What is the current state of ViCE? Does it work to some extend?

Regarding art: Placeholders are probably not a bad idea. Of course we could always do it more professionally, but we first need to figure out the ruleset and do playtesting over and over again to see what works and what is fun.

Re: What's the status of this project?

Posted: Tue Dec 22, 2015 23:16
by aspidites
ViCE is at a standstill. There is a minimal working ORM and the plugin framework technically works and is documented. What's not done is to actually write the plugins.

That said, Over the last few years, I've been moving away from Python for personal projects (as it's my day job) and been messing with functional languages like Haskell and Purescript.

I'll be on IRC (#wtactics) for a good part of the evening if you wanted to hop on and chat. Indeed, I think for the next hour or so I'll be experimenting with some architectural type stuff.

From a programmers' point of view, I think being able to assemble a deck, draw cards, and move them around would be a good first step.

Re: What's the status of this project?

Posted: Wed Dec 23, 2015 10:16
by Ravenchild
Please keep in mind that I haven't really looked into ViCE yet. I just want to share some hopefully helpful comments. I might be very mistaken about what I write, because you have certainly put much more thought into ViCE than I did. But here we go:
aspidites wrote:ViCE is at a standstill. There is a minimal working ORM and the plugin framework technically works and is documented. What's not done is to actually write the plugins.
When I read "plugins", I think this already sounds complex, because you have to think a lot about how other people integrate with your code. And plugins tend to integrate very deeply.

I assume you want to support server-side plugins, so that everyone can enforce a certain ruleset for certain games. I think it would make much more sense to not worry about rulesets and just trust the players to do the right thing. I mean, in RL with physical cards the players have to handle the rules by themselves as well.

My gut feeling is that the following implementation strategy would be a good idea:

Define a REST-based protocol which makes heavy use of JSON. The server then supports the most important primitives like deck shuffling, drawing cards, notifying about actions players have taken, marking cards as being in a certain zone (deck, hand, whatever-zone-you-need), the actual contents/rules of a card (in JSON format), upload a deck (in JSON format) and manage counters like health of a player.

Overall the server should be very stupid. And the client should not be clever too. The client should focus mostly on displaying the board and make it possible to translate player actions into REST calls and the server should be able to translate these REST calls to modifications in the game state.

The core principle would be the REST-based protocol. It should be simple and stupid and anyone should be able to implement a client and/or server for this protocol. If you need very special represenations of cards, you would fork some existing client and just add some additional functionality that supports these very special representations.

And we could still add more REST endpoints later on, if we notice that we need them.
That said, Over the last few years, I've been moving away from Python for personal projects (as it's my day job) and been messing with functional languages like Haskell and Purescript.
I know, it is very tempting to always reach for the newest and seemingly most powerful tools. I've been there many times... That's why a standardized protocol between client and server would be good, because it would give you maximum flexibility for choosing your implementation language.

I guess it would also make it easier to prototype stuff, because you can programm the client by using a dummy server that always returns the same cards. And in a similar fashion, you can programm the server by having a minimal (and ugly) client, that makes some requests.
I'll be on IRC (#wtactics) for a good part of the evening if you wanted to hop on and chat. Indeed, I think for the next hour or so I'll be experimenting with some architectural type stuff.
I've read this post too late. Bummer.
From a programmers' point of view, I think being able to assemble a deck, draw cards, and move them around would be a good first step.
Okay. So we are still in a very early developmental stage.

I think the current discussion focusses very much on code. We should continue discussing in a different thread but I am not sure which one.

Re: What's the status of this project?

Posted: Wed Dec 23, 2015 13:43
by aspidites
Well, if it makes you feel better Ravenchild, I think I agreed with you long before you posted :P
Ravenchild wrote: I think it would make much more sense to not worry about rulesets
Then I've not done anything really different than what Tabletop simulator has done. Indeed, without doing something different, I'm wouldn't be so motivated to work on ViCE, considering what has already been done far better than I ever could.
What I do plan to do is abstract over a concrete game once that's done, which should allow me to iterate quickly.
Ravenchild wrote: Define a REST-based protocol which makes heavy use of JSON.
Agreed. In fact, I wrote just that last night (and wrote similar about a month ago in a local readme when I was brain storming).
Ravenchild wrote: I guess it would also make it easier to prototype stuff, because you can programm the client by using a dummy server that always returns the same cards. And in a similar fashion, you can programm the server by having a minimal (and ugly) client, that makes some requests.
It's less about new and shiny, and more about what actually fits my brain. As an example, in the old implementation action plugins were essentially a wrapper around functions. Something like:

Code: Select all

class Echo(ActionPlugin):
    def __call__(self, arg):
        return arg
The class was necessary for plugin discovery. At any rate, I'm sure you'll agree that doing so is redundant. In Haskell/Purescript, I can just use a function:

Code: Select all

echo = id
Indeed, the function already exists, and I've simply aliased it. I'm trashing the idea of plugins and instead plan on using a library that essentially allows the client to recompile itself (think XMonad) based on a configuration.
Ravenchild wrote: I think the current discussion focusses very much on code. We should continue discussing in a different thread but I am not sure which one.
True. Speaking of discussion, it may be a good idea to apply the same principle of simplification to the rules themselves. At the moment, you have to read like 3 different wiki articles before you can even consider learning how to play. I think Mattaiyah made some headway by drafting quick rules. I'd like to take that to the next level, some how.

Finally, in the spirit of this discussion, I've started, since yesterday, an experiment. The repo for that experiment is [url=httsp://github.com/aspidites/vice-by-example]here[/url], and the accompanying blog is here.

Re: What's the status of this project?

Posted: Sat Jan 16, 2016 05:33
by kurofune
I think that this project is AMAZING and would be very upset if you guys were to throw in the towel. I don't think that the project needs to be scrapped at all, but it could perhaps use a re-envisioning. Somebody mentioned above that it might have been good to bite off smaller chunks. I think that is true for any project and see WTactics as being decomposable in this way.

I googled "open source CCG" and found this website. After reading through it, I have a few questions. I may be overlooking some stuff or flat out misunderstanding what you have going on here. So forgive me if some of this is not completely on point.

First of all, why not let visitors use the cardscape software on the landing page of the website, to crowdsource card creation? First time users would get a tutorial on the rules of the game, immediately, before making their first card. Visitors to the website would be channeled into participating right off the bat. Other users will be able to browse and up-vote cards that they like and contribute to a forum-like discussion underneath each card. They could give suggestions for edits etc. Rules based on up-votes can be put in place to automate which cards are put into which sets. Formats could be created ad hoc, based on the types of games users want to play. Popular formats could be used in online or offline tournaments.

The ViCE software sounds like it will be awesome, but is it necessary to make the project a success at this stage? A simple screen with a chat and some basic functionality, where you can drag and drop cards, search a library, etc, would probably be enough to get online play going, and even this isn't necessary in the first stage, when users could be encouraged to print out their own cards.

As for artwork, why not use historic artwork or photographs in the public domain? There could be a whole expansion that uses Tang Dynasty chinese paintings. Users with artistic inclinations could also submit some stuff on a voluntary basis, but I think that relying on this would create a bottleneck. People could go out and take pictures specifically for their cards. We all have cameras on our phones, why not take advantage of this? There is nothing saying that the game needs to have paintings and drawings with medieval themes. I think that this is part of that box that the CCG industry has stuck us gamers inside of. Don't get me wrong, though, the art that you guys have looks great and more of the same would be badass. In fact, the card with the lesbian elves making out is a really good example of how it is refreshing to break free from the anodyne mould given to us by the industry.

Finally, I am a software/web developer and would like to get involved! I know JavaScript, Java, Clojure and have some SQL experience. What can I do to help?