Monday, June 16, 2008

Video Game Programming

Recently I’ve talked a great deal about programming and I hope it’s not too boring for all you non-programmers. The reason I have coding on my mind is because I’m working on AI Mage (MTG Forge version 2). The main difference between the current version 1 and 2 is the user interface.

Version 2 will have a fully graphic, video game type interface. Cards will be drawn on the screen showing their attack and damage. You will also be able to rearrange cards like in Shandalar. This is an example of how it looks and although you can’t do play any cards yet, it still looks pretty good.
The bottom area is your hand, the middle your play area, and the top is the computer’s play area cards. The colors were pretty random and can be changed later. On the left you have all your important information, all your mana symbols, the number of cards in your library, graveyard, and removed from play. I even included a poison counter for the future. All the icon pictures were shameless stolen from a private version of Magic, Incantus.

The good news is that the user interface is pretty much finished. Everything you see works. If you move the mouse, the large “card detail” picture is updated. All the icons on the left are connected to the rules engine.

I have all the dialogs working. Dialogs are those boxes that popup and ask, “Do you want to erase that file?” click yes or no. You can even stop at ANY phase. Do you want to stop at end of combat, go for it. Next on my to do list is to cycle through all of the phases, because Magic is essentially about changing phases and moving cards.


DCelso said...

In mtgsalvation appears your project.
On the other hand, I think that the desk of magic workstation is more intuitive. You have said something about incantus, The Incantus magic is this?

Incantus said...

Hey Forge,

Your new UI is looking good ;) Are you going to have somewhere to keep the stack?

Nanocore said...

Looks great! Can't wait to take it for a spin

Patrick said...

hey Forge,
the game looks really amasing but I guess that you may implisit the old computergame because it is freeware now. I am not shure wether its legal or not but if it was you could add those cards to the game which should be much easier to prgramm. Another possibility would be to add them into the rpg game which would be amazing fun. If not the whole project is still wonderfull and I thank you for that much work"!"!!!!

drudger said...

Starting to look more like the duel interface in Shandalar. Keep up the good work. :)

DCelso said...

Incantus, are you the creator of youtube application magic3D?

Drudger have you seen the magicworkstation desk?
Here I have put an image:

The diference of shandalar-duel is that there are more area for playing and the image phases are in the middle horizontal line.

Anonymous said...

if you want to the good gui, use c# and wpf

Nanocore said...

C# and WPF? No offense, but one of the great things about this particular project is that currently it is going down the path to be able to be run on multiple platforms (MAC and Linux, and something that I will add is a nokia n800 tablet). Whether it is Java or Python, the platforms will be covered. Forge, please stay the course you are on.

Forge said...

The new user interface seems pretty good. In order to make it look so good I have to do insane little details like draw the text for some icons on the left in white and outline them in black, and then vice versa on other icons. It is nit-picky work making things "look right", but it sure does little a lot better.

About the stack, I like how Shandalar handles the stack and combat. It uses the same component for both, it is sort of a rectangle with cards in two rows. The top row represents either a attacker or a spell that is on the stack. The bottom row represents a blocker, or the targets of a spell.

Forge said...

My goals for MTG Forge were always.

1. Enforce the rules.
2. Play against the computer.
3. Try to make it payable on other operating systems.

I knew Java best so I used that for the current version. I like the idea of Python, so I'm using it for the 2nd version. For the 3rd version I'll probably go back to Java because I miss it already, lol.

DCelso said...

I think that you can do a protocol-command engine like a MMORPG, and after do an interface for management its, it can be in java or in python or both or anyone that know the protocol could do other.

Anonymous said...

This looks just awesome! Looking forward to playing it when it comes out :)

Forge said...

I don't know anything about a protocol-command engine but it sounds cool. I know it is a good practice to separate the rules or engine from the user interface.