It is currently 27 Apr 2024, 06:57
   
Text Size

Please Read: Keeping Things Organized!

Continuing Development of MicroProse's Magic: The Gathering!

Moderators: BAgate, drool66, Aswan jaguar, gmzombie, stassy, CCGHQ Admins

Re: Please Read: Keeping Things Organized!

Postby Incantus » 24 Mar 2009, 22:26

Huggybaby wrote:I know for a fact that even some of the coders are frustrated with the way things are, it's no secret, it's been posted. What needs to be changed is clear. So we asked for someone to come up with a plan and we're still waiting to hear some ideas, since ours don't seem to be good enough. We can't lead and we're waiting to follow.
That's the thing - it should be self organizing. That's one benefit to using a wiki (especially a versioned one). Those coders who are frustrated - they can take matters into their own hands and give the wiki a little organization (and then sticky a locked topic pointing to an introduction for newbies).

The main problem with the Manalink project is that since none of the people hacking on it are the original authors, it's likely that nobody feels the right to step up and assume command.
Incantus
DEVELOPER
 
Posts: 267
Joined: 29 May 2008, 15:53
Has thanked: 0 time
Been thanked: 3 times

Re: Please Read: Keeping Things Organized!

Postby Bog Wraith » 24 Mar 2009, 22:42

jatill wrote:I really don't understand what the issue is, so maybe you can try to explain it once more. If people can't find the most recent update, why doesn't the mod make the very top thread (in the announcements section I guess) just be a link to the latest stable version? Isn't that the first place people look? I don't really care how you define latest version, and neither do the lurkers you're talking about. Anything less than a couple weeks old is going to be huge for them.
But that is what I implemented here at this site that is different from the old isn't it?
I prepare a new sticky and replace the old one so folks know which one contains the latest updates.

The problem lies in that whenever a minor update is released by someone who is submitting one for the first time, or is doing so with just a few card additions, but it turns out to be messing with coding that has been done already, or just by someone who does not have the experience level in programming but is very enthusiastic and well meaning, but is still learning his way and it causes other problems like writing code in other's assigned addresses and the like. You know what I'm talking about jatill because I've seen you comment on this.

And guess what. I agree with you! This is why I wanted some of you vets to come to an understanding as to just who is qualified to post a new update based on a consensus that these updates would be done properly, without causing any problems, short of the bugs we all expect, and that the coders know their area that they can work in within that programming area.
Anyone else who would contribute would have their files placed in the current sticky and have you guys vet it to see if it would pass your agreed stipulations. I would move any posts like this into the current sticky and wait until one of the lead members posted a new update, and then sticky that as the new one and move on from there.

I don't want to stifle anyone's excitement or desire to learn from your marvelous tutorials that you provided as a resource for them, but these are contributions that I think would best be checked for any potential problems by folks like you. I mean, if your not qualified to do this, then who is?

Also, these sub additional updates Do cause the game to become unstable at times at worst, or cause previously working cards from past updates to malfunction at other times.

Look, huggy doesn't need or want me to speak for him, but I again implore you to try & understand what it is like for us to have to continuously hear from the "silent majority" of members as to WTF is going on here as far as trying to figure out what they need. Obviously, they aren't finding everything or they wouldn't be sending us PM's all the time.
The art files are just as big, if not a bigger problem and Mathy & I are getting these things out, but we can still do better in getting it all in one place.

This is my fault and I take the blame.

I'm trying to rectify this and hope that I can get help from one or both of the people I've discussed this with via PM's!

In the meantime, please, everyone take a step back and consider the intent and not the words that are being used. And please, again, try to understand what Huggy & I are dealing with with these members here who are asking us for help, and we can only do so much.
Please be patient, everyone. We've done a hell of allot in the 4 weeks we've been here. It's still a learning process for all of us!
'Twas in the bogs of Cannelbrae
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
User avatar
Bog Wraith
Global Mod 1 (Ret)
 
Posts: 1108
Joined: 28 May 2008, 22:40
Location: Shandalar
Has thanked: 425 times
Been thanked: 153 times

Re: Please Read: Keeping Things Organized!

Postby LoneFox » 26 Mar 2009, 10:04

Looks like there are two mostly unrelated issues:

1. Installing the game is hard for inexperienced users.
A lot of stuff is needed to make the game work. First, the original game must be installed. Then latest update on top of that. Card art comes in separate package. Finally, some versions of Windows require hacks and kludges for the game to work at all. There are a lot of files around here, some are outdated, some are optional, and some are alternative to each other.

This can be solved by writing a step-by-step tutorial that includes list of files to download, instructions where to extract them, and what else is required for different versions of Windows.

2. Development is badly organized.
Most of these problems are already mentioned either here or in other threads, but I think it is a good idea to collect them all in one place:
  • "Teenager Project Syndrome": inexperienced developers are making decisions about big things that affect everyone and designing API without much understanding about API design. We are not alone with this, it is very common in new open source projects.
  • Lack of version control makes it very hard to track what is going on, and to fix/revert bad changes that have gotten in. It also disrupts reverse engineering work, because it is hard to know if some function in the exe is in its original form or if it has been changed by us.
  • The concept of "active developer" causes time pressure: there are other people in the queue waiting their turn, so I have to get my release ready fast. This encourages releasing untested code. Also, it makes it hard for multiple developers work simultaneously, because then there is a lot of extra merging work.
  • Lots of copy-pasting is still going on, duplicating existing bugs and adding new copy-paste errors. Currently the main reason to this is the way card data is stored.
  • Everyone is making their releases in slightly different way. Directory structure may be different, card art may or may not be included, shandalar.exe may or may not be included. Many releases have included object files and/or random executables from build system. Current (20090323) release is missing several files that are required to compile the source. This is a minor problem for developers, but also contributes to part 1 above.
  • What is the goal of this project? Add as many cards as possible? Make it a copy of Magic Online including equal number of bugs and rules problems? Or is it to create a well-balanced, (eventually) cross-platform environment for both constructed and limited play, with simple and elegant rules and without any of the mistakes and pokemonization WotC has done in recent years?
(Dodges an Incinerate someone cast on that last item. :D )

And here is my opinion how these could be solved:
  • Put the source code in subversion repository, with only a few main developers having write access to it. The big question is of course where this would be hosted. In theory I cound host it myself, but I don't like the idea of giving other people any access to my system (because my private stuff is on the same machine), and there would be at least one long downtime (of several weeks) per year when I'm on summer holiday.
  • We need some way to store exe modifications in source code form. There is already such system (I used it for my first release), but it does not work on Windows. Optimally there would be a version of the exe in the repository and all changes to it would be applied during build. Committing changes to it would not be allowed at all, possibly prevented by repository configuration, assuming svn supports that.
  • Write instructions for people who want to contribute but don't have access to the repository. This should include tools used (should we standardize on camelbox?), standard way to make a patch, and how and where to submit it.
  • Get rid of manalink.csv, store all card data in one file and use a script to update cards.dat and the exe. Store only the fields that are different from defaults and let the script add default values. This would be quite similar to how the targeting code I added a couple of releases ago works. Full reverse engineering of cards.dat file format and the card data in the exe is required for this to work.
  • Make releases with a script that creates a directory structure, copies included files there, and packs all into a zip file. Developers that maintain this script should know the common practices used when releasing software (see the Software Release Practice HOWTO).
  • Card art is best handled separately, for copyright reasons. The game is copyrighted by Microprose and they don't appear to care what we do with it, so this isn't a problem. But card art is copyrighted by WotC, and they are known to be hostile. If we don't include their stuff in releases, we can respond to any threats from them with "Sorry, not our problem!" for first time and with middle finger for second.
LoneFox
Programmer
 
Posts: 71
Joined: 08 Mar 2009, 13:43
Has thanked: 0 time
Been thanked: 7 times

Re: Please Read: Keeping Things Organized!

Postby mathusalem » 26 Mar 2009, 10:36

Get rid of manalink.csv, store all card data in one file and use a script to update cards.dat and the exe. Store only the fields that are different from defaults and let the script add default values. This would be quite similar to how the targeting code I added a couple of releases ago works. Full reverse engineering of cards.dat file format and the card data in the exe is required for this to work.
Argh ! no please ! I'm translating this game and the CSV file is the only easy way that I can edit stuff (not to maention , I'm nearly finished). without the CSV, I won't be able to upgrade my french version. I can play in english, but some of the people I destine this to can't. Please be nice with my little nephews.
User avatar
mathusalem
 
Posts: 459
Joined: 24 Feb 2009, 21:00
Has thanked: 6 times
Been thanked: 4 times

Re: Please Read: Keeping Things Organized!

Postby jatill » 26 Mar 2009, 12:14

Re: LoneFox's stuff.
I agree on pretty much everything. I'm just not sure how many of these issues are actually addressable in an open-source project. Maybe they all are, I just don't have the experience to know. But I definitely see two goals tugging us in opposite directions, 1) get many people contributing, and 2) conforming to rigid standards. I learn towards (1), which is partly why chaos has ensued. I'm also unwilling to take on the role of release manager, since I'm just here to have fun, not to manage people. Maybe that's a post you'd prefer?

Next, I created a new script deploy.pl that gathers all the files and puts them in the right place. I had code to auto-zip them too, but it was using winzip, and that does not maintain directory structure. Do you know of an alternative that does, and has a command line interface? I was thinking 7z, but then people might have a hard time opening the files. It's a simple batch script, I'm sure it would be improved upon. Which files were missing from the last release for compiling? I'll add them to my list.

Finally, I hope I wasn't the main target of your "teenager developer" syndrome. I have 15 years professional software development experience, including API design. It's just been 10 years since I've written in C, so I don't know C conventions. (I can't tell you how many times I've gotten compile errors for typing 'and' instead of &&.... dang perl habits). Even if I was, no insult taken. I understand the frustration of seeing things done badly when you know the better way.
jatill
DEVELOPER
 
Posts: 2118
Joined: 24 Feb 2009, 16:35
Has thanked: 5 times
Been thanked: 17 times

Re: Please Read: Keeping Things Organized!

Postby LoneFox » 26 Mar 2009, 16:09

mathusalem wrote:Argh ! no please ! I'm translating this game and the CSV file is the only easy way that I can edit stuff (not to maention , I'm nearly finished). without the CSV, I won't be able to upgrade my french version. I can play in english, but some of the people I destine this to can't. Please be nice with my little nephews.
Good point. One thing I forgot from that list is handling customizations that are not meant to be part of release. The build system should have an easy way for adding such things. People may want to add their own sealed environment by replacing some of included sets with their own, or change size of boosters, or add their home-made cards. It is useful for development too, because then big experimental changes can be made optional at first (so released exe does not include them, but if you want to help testing experimental stuff you can compile it in yourself).

jatill wrote:But I definitely see two goals tugging us in opposite directions, 1) get many people contributing, and 2) conforming to rigid standards. I learn towards (1), which is partly why chaos has ensued.
Those aren't completely opposite. Too much destructive chaos drives away those people who understand why such chaos is bad, and they tend to be the same people who can contribute most.

jatill wrote:I'm also unwilling to take on the role of release manager, since I'm just here to have fun, not to manage people. Maybe that's a post you'd prefer?
Maybe. I don't know yet how much I want to commit myself into this project.

jatill wrote:Next, I created a new script deploy.pl that gathers all the files and puts them in the right place. I had code to auto-zip them too, but it was using winzip, and that does not maintain directory structure. Do you know of an alternative that does, and has a command line interface? I was thinking 7z, but then people might have a hard time opening the files. It's a simple batch script, I'm sure it would be improved upon.
Camelbox includes zip.exe. Something like
Code: Select all
system "zip -r manalink-$version.zip manalink-$version";
should do the trick.

jatill wrote:Which files were missing from the last release for compiling? I'll add them to my list.
ManalinkEh.mac and subtypes.h, possibly others. Missing the latter is partially my own fault, I should have mentioned it in release changelog. I put all creature types there because there are so many of them, they would have made manalink.h uncomfortably big.

jatill wrote:Finally, I hope I wasn't the main target of your "teenager developer" syndrome. I have 15 years professional software development experience, including API design. It's just been 10 years since I've written in C, so I don't know C conventions.
I didn't mean any particular person to be "main target". However, current implementation of hybrid, when fully done, requires 15 copies of almost identical code (one for each two-color pair and one for each color/colorless pair). I hope you understand without explaining why this is bad.

jatill wrote:(I can't tell you how many times I've gotten compile errors for typing 'and' instead of &&.... dang perl habits)
I try to keep my perl quite C-like to avoid this problem. Still, I sometimes find myself using unless in C...
LoneFox
Programmer
 
Posts: 71
Joined: 08 Mar 2009, 13:43
Has thanked: 0 time
Been thanked: 7 times

Re: Please Read: Keeping Things Organized!

Postby jatill » 26 Mar 2009, 16:35

I didn't mean any particular person to be "main target". However, current implementation of hybrid, when fully done, requires 15 copies of almost identical code (one for each two-color pair and one for each color/colorless pair). I hope you understand without explaining why this is bad.
Yeah, this makes me sick too, which is one reason I didn't implement the rest of hybrid. Don't even look in momir.c unless you want your eyes to bleed (or want to offer help! :) ) At the time, I couldn't think of good ways to abstract the code. If you have ideas, please share. If you can turn a group of 5 contiguous address into an array, I think that would work. Is that trivial in C?
Last edited by jatill on 26 Mar 2009, 17:01, edited 1 time in total.
jatill
DEVELOPER
 
Posts: 2118
Joined: 24 Feb 2009, 16:35
Has thanked: 5 times
Been thanked: 17 times

Re: Please Read: Keeping Things Organized!

Postby jatill » 26 Mar 2009, 16:58

I added this to my deploy.bat to make it autozip. Thanks for the suggestion. Any ideas how to make the filename today's date instead in a .bat?

c:\camelbox\bin\zip -r c:\camelbox\bin\magic.zip c:\magic\zips\magic -x magic.zip
copy c:\camelbox\bin\magic.zip c:\magic\zips

Maybe I should add a call to WWW::Mechanize to auto-upload my file to savefile, and post a new link in the forum too ;)
jatill
DEVELOPER
 
Posts: 2118
Joined: 24 Feb 2009, 16:35
Has thanked: 5 times
Been thanked: 17 times

Re: Please Read: Keeping Things Organized!

Postby LoneFox » 26 Mar 2009, 17:28

jatill wrote:I added this to my deploy.bat to make it autozip. Thanks for the suggestion. Any ideas how to make the filename today's date instead in a .bat?
Code: Select all
C:\camelbox\bin\date +%Y%m%d
outputs the date. It needs full path, because Windows has its own date command too. I don't know how to capture output of this command into a variable in Windows shell.
LoneFox
Programmer
 
Posts: 71
Joined: 08 Mar 2009, 13:43
Has thanked: 0 time
Been thanked: 7 times

Re: Please Read: Keeping Things Organized!

Postby Bog Wraith » 26 Mar 2009, 19:28

Allot of good points made by all here. I'm glad to see these discussions taking place!

The card pics quality of images, to change them all to HQ versions, is something that I will be addressing over the coming Summer, whether by myself, or hopefully, with someone's help! In the meantime, We'll try to pool all the art into one area for easier access. Even if it is posted with a current update, I will get the link for it copied into a new thread I will make when I have time that will be a sticky for ONLY new card art.

I won't be able to get to this until after next week, but it is on the top of my priority list!

In the meantime, I will copy any update's links into the Graphic Update thread's sticky!


In the meantime, I look forward to reading more of your great feedback gentlemen! 8)
'Twas in the bogs of Cannelbrae
My mate did meet an early grave
'Twas nothing left for us to save
In the peat-filled bogs of Cannelbrae.
User avatar
Bog Wraith
Global Mod 1 (Ret)
 
Posts: 1108
Joined: 28 May 2008, 22:40
Location: Shandalar
Has thanked: 425 times
Been thanked: 153 times

Re: Please Read: Keeping Things Organized!

Postby jatill » 27 Mar 2009, 13:41

LoneFox wrote:I don't know how to capture output of this command into a variable in Windows shell.
Took my whole dept to figure out how to set a variable :/ But works like a charm!

Code: Select all
del /s/q c:\magic\zips\magic\src

copy c:\camelbox\bin\cards c:\magic\zips\magic\src\cards;
copy c:\camelbox\bin\functions c:\magic\zips\magic\src\functions;

copy c:\camelbox\bin\ManalinkEh.asm c:\magic\zips\magic\src;
copy c:\camelbox\bin\ManalinkEh.dll c:\magic\zips\magic\src;
copy c:\camelbox\bin\subtypes.h c:\magic\zips\magic\src;
copy c:\camelbox\bin\ManalinkEh.mac c:\magic\zips\magic\src;
copy c:\camelbox\bin\ManalinkEh.ao c:\magic\zips\magic\src;
copy c:\camelbox\bin\manalink.h c:\magic\zips\magic\src;
copy c:\camelbox\bin\manalink.lds c:\magic\zips\magic\src;
copy c:\camelbox\bin\yasm.exe c:\magic\zips\magic\src;
copy c:\camelbox\bin\make.exe c:\magic\zips\magic\src;
copy c:\camelbox\bin\build.pl c:\magic\zips\magic\src;
copy c:\camelbox\bin\deploy.bat c:\magic\zips\magic\src;

copy c:\magic\Magic.exe c:\magic\zips\magic;
copy c:\magic\text.res c:\magic\zips\magic;
copy c:\magic\ManalinkEx.dll c:\magic\zips\magic;
copy c:\magic\ManalinkEh.dll c:\magic\zips\magic;
copy c:\magic\Manalink.csv c:\magic\zips\magic;
copy c:\magic\cards.dat c:\magic\zips\magic;

c:\camelbox\bin\zip -r c:\camelbox\bin\magic.zip c:\magic\zips\magic -x magic.zip
c:\camelbox\bin\date +%%Y%%m%%d  > tmpFile
set /p myvar= < tmpFile
del tmpFile
copy c:\camelbox\bin\magic.zip c:\magic\zips\%myvar%.zip
jatill
DEVELOPER
 
Posts: 2118
Joined: 24 Feb 2009, 16:35
Has thanked: 5 times
Been thanked: 17 times

Re: Please Read: Keeping Things Organized!

Postby jerkan » 06 Apr 2009, 10:21

First of all, I'd like to thank you all for your work updating this game. I am a programmer and I know how hard is programming in assembler (I still remember :? )

I agree with LoneFox that a version control is mandatory in this project in order to keep things organizated. As a user, I asked to myself which was the latest release of 'new' cards. I just can't found it because there are too many and every release is different.

If I understood well, you guys work on exe files. If so, then version control wouldn't be a nice solution because you are working on a 'final' file instead of working in several source files. Not an easy solution.

Anyway, I enjoy a lot these programming related discussions so keep on :wink:
User avatar
jerkan
 
Posts: 9
Joined: 06 Apr 2009, 09:13
Has thanked: 0 time
Been thanked: 0 time

Re: Please Read: Keeping Things Organized!

Postby MageKing17 » 30 May 2009, 16:30

jatill wrote:Any ideas how to make the filename today's date instead in a .bat?
No. You're better off just making a Python script or something.

A batch file can refer to %DATE% to get the current date, but formatting that text without calling another program (or, say, Python script) would probably be a pain in the ass (and you have to format it, because it contains slashes).
User avatar
MageKing17
Programmer
 
Posts: 473
Joined: 12 Jun 2008, 20:40
Has thanked: 5 times
Been thanked: 9 times

Re: Please Read: Keeping Things Organized!

Postby jatill » 10 Jun 2009, 13:43

What's up with the ugly motif change? I can barely even see the 'new post in thread' icon.
jatill
DEVELOPER
 
Posts: 2118
Joined: 24 Feb 2009, 16:35
Has thanked: 5 times
Been thanked: 17 times

Re: Please Read: Keeping Things Organized!

Postby EviL_CLonE » 11 Jun 2009, 01:04

Me either
EviL_CLonE
 
Posts: 143
Joined: 24 Feb 2009, 16:54
Location: Buenos Aires, Argentina
Has thanked: 1 time
Been thanked: 0 time

Previous

Return to ManaLink 3.0

Who is online

Users browsing this forum: No registered users and 51 guests


Who is online

In total there are 51 users online :: 0 registered, 0 hidden and 51 guests (based on users active over the past 10 minutes)
Most users ever online was 4143 on 23 Jan 2024, 08:21

Users browsing this forum: No registered users and 51 guests

Login Form