Well... Not much happened in terms of development... but lots have been happening on the Magic front? Exile... and no more combat damage stacks?
Well, that's one of those things... we'll see how I go about exile, as it's only cosmetic, but it's nice being able to do cosmetic.
Anyway, so I am now trying to convert my code to git. Not just because, but also just because. I want to learn git, and DA is a good place to learn it on, and networking (with my starting over from scratch the whole time) would work really well with git.
I'm getting ready for some more coding, but I am hoping to get a wireless network adapter for my PC soon, and this will ease my network coding. I also now have a 2nd pc (laptop) to my disposal which also will make coding easier.
Unfortunately though July is a new financial year, and quite a lot of prep will have to go into my budget for work. Hopefully not too long after that, I'll be able to add some code to my brand new (now not existing) git repository.
Labels: Networking, Procrastination, Programming
Ok... So the last commit had some networking code in the release notes, but I have a feeling most of that will be lost. I have never truly felt comfortable with the solution I had, in terms of elegance and scalability, and network effeciency etc.
I asked myself, how can I get it right? Well, I decided I needed to look at as much of other people's network code as I can get. Unfortunately I've not found a great deal, but I did find Almindor's (the guy who wrote lnet, which I use for networking) Lentilwars code. This has some elegant solutions to some problems I wasn't sure how to get through. The other piece of code is called DataPacker - written by Theo Lustenberger, which will be able to compress the data I send (zip), and make it easy for me to incrementally "decipher" the messages that was sent.
So generally I have hope to get the networking fully going, but for now it's still far off. I'm trying to get at least 30m of programming in a day. Obviously some days it'll be more, and others will be less. But 30m of DA focus a day... (even if it's more research).
Labels: Networking, Programming
Unfortunately, revision 102 is not the big network release I'd hoped it would be. I'll talk more about networking after the revision 102 parts. (seperate post)
I fixed a bug that was reported on the Bugs part of the wiki (thanks for whoever added that), Also, while testing my next export for excel stats, I found that loading a deck didn't display in the titlebar, and also requested you to save, even though you didn't change anything. So those are fixed too.
I was playing around with Magic Set Editor, and found their statistics to be pretty cool. So I suggested that they maybe fork that part of the project to create more of their nice statistics. I was told no go. For me... the thing about stats is that it's not so easy to program graphs etc. and I already know an application which is pretty good at it... Excel. So I've created an excel spreadsheet which can handle the stats. And added a function in DA to export the stats to a little text file.
So now, via Excel, you can have Mana Curve + Type graphs, or Color + Type (the two I have in by default)... but it's Excel Pivots... just use the data available. You can analyse however you want. I added a column called "mana source" which looks for "add" and "to your mana pool" to check for mana sources. This might be crude, and could sometimes be wrong, but it's a start. Obviously this will not work so 100% if you're using a non-english database. --- Which is kind of a hole...
Revision 102:
C : Lots of "template" code
C : Split the NetSend and NetReceive codes
Fix : Delete from SB button now deletes from SB and does not add to SB (rev 100 fixed the code).
Fix : On deckopen, the filename is now displayed in the deckeditor.
Fix : Loading a file (in deckeditor) no longer makes it dirty. (doesn't prompt for save if you exit without changes)
F : Export tab delimited data to Excel for deck stats (note, it drops it to the folder where the .exe is installed)
F : Added DeckStats.xls to the installs to help with stats (I made it not use macros, for security)
Labels: Deck Editor, Feature, Networking, Revision
I was contacted today an admin of the people over at http://www.slightlymagic.net to create a forum for DA... Which can now be found at: http://www.slightlymagic.net/forum/viewforum.php?f=49
In addition he told me about this link: http://forums.mtgsalvation.com/showthread.php?t=56796
But for now I will not add DA there, because net play is not featured. Hopefully as I said in the slightlymagic forum... it'll be here "real soon".
Labels: Community, Networking, Promotion
Now that Facebook has changed pages to be like profiles... You can now upload your screenshots onto the Daring Apprentice page. Obviously, you need to be a member, and you must not abuse it with screenshots of yourself! Just screenshots of the game.
My brother is a level 2 judge, and he has used screenshots in a rules questions posed to other judges. So maybe if you want to ask that tricky rules question, or discuss a play situation... Like would you attack here? Or how would you assign blockers?
Enjoy!
Well, this post is all about how I am programming the networks, and hopefully, how I think I am being "smart". Hopefully it doesn't all backfire into my face.
First of all... the way that the server and the client will be "sending" messages will be very, very similar. Thus, if the messages what they send will be similar, so will the messages they receive. The BIG difference comes in how they respond once the message is received.
For instance. The Client will request "DrawCard","Library" (Because I want the commands to look similar I added Library... Library is actually "Implied" with "DrawCard".) Then the server will send a reply "DrawCard","Forest"... In this case the "implied" position (the hand) is not used. So the message sent was the same, but the server will respond differently than the client will...
So what I've done to help me code cleanly, and hopefully smartly, is I've used the Lazarus feature of "including" files. So my generic send code can be used (NetSend.inc) for both the server and the client... both have "command","parameter" sending, it's just that the client is saying "DrawCard","Library", whilst the server is saying "DrawCard","Forest"... but they both use the exact (letter for letter) same code.
Even the receiving (NetReceive.inc) code can be reused, up to the point where the *interpretation* of "DrawCard" needs to happen. That then is seperated into the server's code, and the Client's code.
It does mean though that I'll have some "dead" commands on both sides... like "RequestNewTable"... the Server won't be sending a table request back... It does something else. This is few and far between though, so hopefully not too many dead alleys in my code.
Looking forward to hopefully be able to do some connecting to tables, and talking away soon. (And after that... who knows? Drawing and playing cards!)
Labels: Networking, Programming
If anyone who's using a newish version of DA, can email me a screenshot (where the opponent hand is inside the main window) I'll much appreciate it. Or you can just replace it on the wiki directly.
Thanks!
Labels: Community
Hi all,
I want to apologize that February is (likely) not going to make it. However I am going through all the code at the moment and noticing where I can improve. So in a lot of instances it's a rewrite (well, not complete) of the existing code. It is because the old code was geared at getting single player working, but now I need slightly more abstract code to deal with multi player and single player.
For instance, as it is at the moment, creating a token, and playing a card doesn't use any of the same code (it's pretty much copied and pasted and then modified). However for internet play, it would be much cleaner if I could just have
"Playcard('Atog',X,Y,Facing)"
and
"Playcard('Saproling token',X,Y,Facing)" (the problem is that DA doesn't "know" Saproling token, but it knows Atog).
But that's not how it works at the moment... and that's the type of thing I need to fix. Basically playing a token will tell DA (not forever, just for now) that Saproling token, is a 1/1 green card with the name "Saproling token".
So far I've therefor implemented the "hand" actions, and looked through the "zone" actions, but they all indirectly reference stuff that falls in the "in-play" actions, where I've not yet got.
I am not going to put a target date down (again), but know that I am working on DA almost daily at the moment, so we'll be getting there sooner rather than later.
Labels: Programming
This is a revision has some fixes, shows some of the work on the networking, but also, includes a Conflux patch. Hopefully it works great, and everything is hunky-dorey!
Let me know if any bugs came out of this revision.
Revision 101:
F : Multiple users on one installation is supported now (different settings per user) - to be tested on linux
F : A pointer is added for multiplayer games (not visible in single player) to point at blockers etc.
Fix : You can now shift cards up and down when viewing a zone.
Fix : Searching for "Gold" and not "exclude unselected colors" will find all the gold cards
F : Added an application icon.
C : Send messages of the whole "hand" window, excl life actions.
M : Conflux is now included. PLEASE TEST, as I do not supply it. Let me know if there is funnies!
Labels: Networking, Revision, Search
I was on the #Lazarus-ide channel on the Freenode server the other day, talking about open source projects and so forth. Some of the other people commented that in terms of open source, it's usually not the "best" programmers that can pull off the marvels of open source, but the most dedicated.
With that I realised that the networking is probably not that hard, I should just start. So really good news is that I've been busy! Nothing that will affect the users much at the moment, but in time, everything will slot together nicely.
My strategy for tackling this task is to do all the "sending" code first, and then follow with the receiving code (which I think will be harder, but if the sending is finalized, the receiving should be much easier).
My progress so far:
* I've added building blocks for sending code (which will probably be reused in the server).
* I've implemented most of the sending of actions in the "hand"
Labels: Networking
http://daringapprentice-fr.wikispaces.com has been launched!
I am very excited, and it's really a sign of a growing community!
As a side note, revision 100 was released (ages ago) as a bugfix release. Although there were still quite a few bugs left, which will be addressed in 101.
I haven't done much, but I fired it all up again, and I'll be going through each procedure with my "network" hat on... changing important bits, and adding the "if soloplay then ... else ... NETWORK CODE!" :-)
Anyway, so I'll check when and where I can do some programming, and after 10 Feb I'll be able to go on with a lot more time than I have at the moment.
I'll be preparing the client first, and then write the connection and the server code... so there'll be new revisions with really almost nothing new.
Although I am working on the pointer that will be visible for both players... which should be added to the one of the next revisions. You'll probably not be able to use it, as for solo it's pretty useless.
So not *too* much longer hopefully. :-)
Labels: Networking