August 2009

You are currently browsing the monthly archive for August 2009.

I’m happy to announce that in the last 15 days, Wagic’s latest release has been downloaded between 15′000 and 20′000 times (this includes statistics I could get from my own blog, and other sites such as psp-hacks, qj, and mininova).

The number of visits on my blog has also increased incredibly in august owing to this release, making this month the second highest in my statistics. The highest number of visits is still April, when the laughing man exploit was announced, and trust me,  it will be difficult to top. Interestingly, until now, the second one was the month of May, when a few sites mistakenly announced that I had hacked ofw 5.55 :)

Oh, I also have real information: I updated the “create your own cards” page with the latest information and abilities available in 0.8.1



Alek, webmaster of the Dark-alex.org site, announced yesterday that their forums would be closing soon. Just after that, the forum was actually closed, and cannot be accessed anymore.

Dark-Alex.org has been an incredible source of help for all PSP players around the world for more than a year, and it is a sad day for sure.

For all lost souls, I opened a General PSP Discussion thread in the Wagic forum, if you want to talk with us about anything related to hacking, homebrews, etc…

source:http://dark-alex.org/

Edit: Alek explained that the forums where closed for cost reasons, and that the rest of the Dark-Alek site is still functional.

I updated the list of cards in wagic 0.8.1, you can find it here. Wagic now supports more than 3000 cards out of the box.

Remember that if you want to add more cards, or sets that are not included in the default release, the forum has thousands of extra cards!

Have fun with Wagic :)

Here are a few language updates for Wagic 0.8.1:

Wagic 0.8.1 in French/ Wagic en Français

Ce patch traduit les menus et la plupart des cartes en Français pour Wagic 0.8.1.

http://wololo.net/files/wagic/wth081_patch_fr.zip

Le patch ne contient pas une traduction pour toutes les cartes, mais si vous voulez des mises à jours ou les images en français, jettez un coup d’oeil au forum dédié sur PSPGen:

http://www.pspgen.com/forums/wagic-the-homebrew-traduction-des-cartes-t169181.html

Ce patch n’est pas “officiel”. Les rapports de bugs concernant la version française du jeu ne seront pas lu, ou seront traités avec une priorité très faible. Si vous voulez avoir en permanence la toute dernière version de Wagic, apprenez l’anglais ;)

Merci aux membres du forum de PSPGen qui ont rendu ce patch possible :)

German Translation update

Aco posted an update for the german version a few days ago, check it out.

Spanish Translation:

cilindr0 kindly posted a Spanish version of the language file. Get it here.

How To install the translations?

The french file is a full patch, its installation process is explained in the Readme. For the other ones, copy the txt file into your WTH/Res/lang folder, and rename it “_lang.txt”. Next time the game starts, it should be automatically using the translation.

Remember that German, French and Italian translations are already available in the “standard” Wagic 0.8.1 release. Just look at the Readme in the Res/lang folder of your WTH directory on your memory stick.

I’m sure you’ve all been looking forward to this release. Well at least I was :)

Usual thanks go to leungclj,Dr.Solomat, Abrasax, superhiro, and J for their help.

A Strategy game with 3000 units, more than 20 opponents, unlimited replay value…for free

For those who still don’t know yet (have you been living in a cave for almost a year?), Wagic is a fantasy card game in which you battle as a sorcerer with spells and creatures. If you think this is like Magic PSP station, you’re close, but Wagic is way more powerful than MPS. In Wagic, the rules of the game are fully enforced and you play against your PSP. Yes, it is a fully working strategy game with an AI and more than 3000 units.

In Wagic, you start the game with a few cards randomly selected, and a few credits that will help you to create your first deck of cards. As you progress in the game and win battles against the AI, you will earn credits to improve your army, unlock new cards and new game modes for more challenge. Wagic easily provides several dozen hours of gameplay, and if it’s not enough for you, it is highly customizable as you can create new decks for the AI, and add your own cards to the game (check the Final fantasy, Naruto, Star wars,… mods on the forums!)

Wagic is available for the Sony PSP, Windows, and Linux. It is open source so there’s always a possibility for it to be available on other platforms in the future.

If you look good enough, you can find French, German, Italian and Spanish translations for Wagic, I’ll make a post about this later.

Changelog

Ok, now that I’m done with the obligatory self pimping section, let’s go to the changelog. As with every Wagic release, we are not only releasing bug fixes, but major new features and enhancements as well, here they are:

  • More than 1000 new cards. Yes, you’ve read correctly, Wagic has now more than 3100 cards to play with, of which more than 30% is entirely new. Wagic allows you to play with cards from the following expansions: 10the Edition, Shards of Alara, Alara Reborn, Conflux, Champions of Kemigawa, Eventide, Exodus, Fallen empires, Future sight, Ice Age, Invasion, Legends, Lorwyn, Magic 2010, Mirage, Mirroding, Merquadian Masques, Odyssey, Onslaught, Portal, Ravnica, Revised, Shadowmoor, Tempest, Times Spiral, Urza’s Saga… and this is not counting the user created sets on the forums at http://wololo.net/forum than can add thousand other cards to your collection
  • New Rules. Wagic now supports the new Magic 2010 rules, including the new combat rules, and the end of manabun
  • Various rules improvements: Damages don’t use the stack anymore, Spells with invalid targets fizzle,…
  • Two new game modes to unlock: Evil Twin (in which the AI plays with your deck), and Random mode (you and the AI play with random generated decks). Stay tuned on http://wololo.net/wagic to learn how these modes can be unlocked, and don’t forget that you can also unlock the extra difficulty mode and the Momir Basic mode!
  • Expansions now need to be unlocked (by winning games) before you can buy them in the shop
  • New parser keywords, including: doesnotuntap, counter, @movedTo
  • Parser huge improvements for triggered events, “lord” cards (think Slivers), discard, draw, life, damage, deplete, protection and more
  • Player’s deck improvements: no more 5 decks limitation, and you can now name your decks (using the same format as the AI decks) to make them easier to find.
  • Added a “premade decks” system for new players who want to play directly without creating their own deck
  • AI improvements: The AI can now use mana abilities from non “basic land” cards. The AI can also use “may” cards such as gravedigger and clone.
  • New AI deck: Soldiers
  • Shop improvements: hit “square” to refresh the shop cards (no need to quit and re-enter the shop like crazy to update the cards). Boosters’ price decreased. Mythic rares added to boosters.
  • Game flow improved, the game now does not offer you to counter your own abilities and spells by default (this can be changed in the options menu, but I’m sure you won’t need it :) )
  • Lots of individual card bugs fixed, too many to tell!
  • Memory usage improvements and memory bug fixes

Thanks for your support!

If you’ve been following this project for a while, you know that each new release is worth it, but allow me to do a comparison this time:

Duels of the Planeswalkers was recently released for the XBOX360. It features around 300 cards and costs around 10 dollars. Wagic now allows you to play with 10 times more cards than a commercial game. If you enjoy Wagic, please consider doing a donation :)


I’m reposting this video of a previous version of Wagic. If someone can make a cool video with the latest version, please do not hesitate to share it!

Download

In the download section, as usual. Enjoy!

Note that the archive contains both the PSP and the windows version. Please check the readme for explanations on how to install the windows version!

When creating a Magic the Gathering simulation (or any other collectible card game), one of the first decisions one has to make is how to store the Data for the cards. It is a decision that needs to be taken in early stages of the development, yet it has such a huge impact on the future of the game that it shouldn’t be taken lightly.
This information will of course tell the game what the card does, when it can be played, what it’s effects are, etc…, so it is obviously very important.

There are several MTG computer simulations out there, and we all went with different choices.

Firemox

Firemox’s cards are coded in XML. Firemox was designed to be extremely flexible and allow several kinds of games, but as far as I know it never supported anything else than Magic the gathering. Their XML files looks overly complex to me, especially since the “flexibility” is still limited by the possibilities of the engine behind.

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<card xmlns=”http://sourceforge.net/projects/firemox”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://sourceforge.net/projects/firemox ../../validator.xsd”
name=”Angel of Light”>
<rules-author-comment>riclas</rules-author-comment>
<init>
<registers>
<register index=”white” value=”1″/>
<register index=”colorless” value=”4″/>
<register index=”power” value=”3″/>
<register index=”toughness” value=”3″/>
</registers>
<colors>white</colors>
<idcards>creature</idcards>
<properties>vigilance flying angel</properties>
</init>
<abilities>
<ability ref=”cast-spell”/>
</abilities>
</card>

Incantus

Incantus is coded in Python, and the cards as well. Using a scripting language for the data is a pretty clever way of doing things, especially when it’s the exact same language you’re using for the engine. It’s not tood difficult to read (although not as easy as I would expect), and extremely flexible since it gives you control on the rest of the code.

name = ‘Mogg Fanatic’
cardnum = 219
expansion = ‘10E’
type = characteristic(‘Creature’)
supertype = no_characteristic()
subtypes = characteristic(['Goblin'])
cost = ‘R’
color = characteristic(['R'])
text = ['Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.']

play_permanent(card, cost)

in_play_role = Permanent(card, Creature(1, 1))

@activated(card, txt=text[0])
def effects(source):
payment = yield SacrificeCost()
target = yield Target(target_types=isCreatureOrPlayer)
source.dealDamage(target, 1)
yield

MAGic MAchine

Magic Machine apparently uses an encoded string to represent the cards, but my attempts at retrieving any useful information on Magic Machine’s card format didn’t give anything. The game itself only works on windows and requires admin rights to be installed, the databases I could find where password protected, and the help forums are in italian and don’t give much info on their format. It seems quite flexible though, and MagMa is the freeware with the biggest card database around here (but Incantus will soon have more, and Wagic is getting closer). The fact that it requires an editor seems a bit problematic to me, but if it gives enough motivation for players to create cards, it might be good.

Duels of the Planeswalkers (XBOX360)

The recent XBOX360 game “duels of the Planeswalkers” also uses XML to represent their cards. Unlike the xml in firemox, it is very readable:

Of course, this is a commercial game, so it’s not like you could create your own cards, which sort of ruins the point of even talking about their representation…

MTGForge

MTGForge has a mix of hardcoded cards and cards using a small set of keywords (http://www.slightlymagic.net/forum/viewtopic.php?f=26&t=701). Recently the set of keywords recognized by MTGForge has been growing rapidly. Here is what Birds of Paradise look like in MTGForge:

Birds of Paradise
G
Creature Bird
0/1
tap: add W
tap: add B
tap: add U
tap: add R
tap: add G
Flying

Wagic

MTGForge was the initial inspiration for Wagic, so I initially went with hardcoded cards, and it was clear to me that at least the “data” part had to be stored outside of the code, as external data files, one for each expansion. They key in allowing people to add their own cards was that the format has to be easy to read and understand, so I went with simple text files. I think the first release only allowed some basic abilities (such as “vigilance, flying..) and maybe mana sources (“auto={T}:Add …”).
The possibility to add your own cards in Wagic is probably the feature that had the most success so far. Wagic was initially planned to handle around 300 cards and focus on the AI. But in the last months, more work has been made on adding new cards (and allowing people to add more) than on the rest of the game.
Here are the cards previously mentioned for other games, the way we represent them in Wagic:
Birds of Paradise

[card]
text=Flying (This creature can’t be blocked except by creatures with flying or reach.)  {T}: Add one mana of any color to your mana pool.
abilities=flying
auto={T}:Add{G}
auto={T}:Add{R}
auto={T}:Add{U}
auto={T}:Add{B}
auto={T}:Add{W}
id=129906
name=Birds of Paradise
rarity=R
color=Green
type=Creature
mana={G}
power=0
subtype=Bird
toughness=1
[/card]

Angel of Mercy

[card]
text=Flying (This creature can’t be blocked except by creatures with flying or reach.)  When Angel of Mercy comes into play, you gain 3 life.
abilities=flying
auto=life:3
id=129465
name=Angel of Mercy
rarity=U
color=White
type=Creature
mana={4}{W}
power=3
subtype=Angel
toughness=3
[/card]

Mogg Fanatic

[card]
text=Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.
auto={s}:Damage:1 target(creature,player)
id=134748
name=Mogg Fanatic
rarity=U
type=Creature
mana={R}
power=1
subtype=Goblin
toughness=1
[/card]

Angel of light

[card]
text=Vigilance,flying
name=Angel of Light
rarity=R
type=Creature
mana={4}{W}
power=3
subtype=Angel
toughness=3
[/card]

And here is a more complex card, that will work with the upcoming engine:

[card]
id=189909
name=Mold Adder
mana={G}
type=Creature
subtype=Fungus Snake
power=1
toughness=1
text=Whenever an opponent casts a blue or black spell, you may put a +1/+1 counter on Mold Adder.
auto=@movedTo(*[black;blue]|opponentStack):may counter(1/1)
rarity=U
[/card]

Overall I think it looks pretty simple, even for very complex effects.

All these methods have advantages and drawbacks. XML (firemox, duels of the planeswalkers) offers some structure and flexibility, but I think it fails in human readability, and flexibility could be achieved more easily with scripting languages such as python or lua. Magic Machine’s proprietary system looks flexible, but is clearly unreadable if you don’t have access to the card Editor, which to me would represent extra work that I am not ready to do. Plus it is always possible to have an editor yet a readable output. A scripting language (for example Python for Incantus) is probably the most flexible solution, and readability feels quite good to me.
The hybrid solution chosen by MTGForge and Wagic (some hardcoded cards, and a few keywords) is quite easy to code and easy to read in early stages. Newcomers can create basic cards in a few minutes with a text editor, while “experienced” coders can add cards in the code and recompile the game. Overall it works quite well, but after a while it shows its limits when you try to add new cards with more complex mechanisms. What were initially simple keywords become confusing strings that don’t always do what you want…

I’m happy with Wagic’s current system but I am not sure it can be extended infinitely. If I were to start again, I would highly consider a hybrid between a scripting language such as lua and parsed keywords.

sources

http://mtgrares.blogspot.com/2009/04/plaintext-creatures-and-cardstxt.html

http://mtgrares.blogspot.com/2008/01/magma.html

http://www.wizards.com/Magic/Magazine/Article.aspx?x=mtg/daily/feature/43c

http://www.firemox.org/mtg.html

http://www.slightlymagic.net/forum/viewtopic.php?f=27&t=557