Useful Tools

Talk about Severance Blade of Darkness modifications and maps here. No tips or tech support questions please, use the forum above. Note that the game is rated 18 so some content may be unsuitable for younger readers.

Moderators: Ade, prospero

Gorgon2
Whelp
Posts: 40
Joined: Wed Aug 07, 2002 5:16 pm
Location: United Kingdom

Useful Tools

Postby Gorgon2 » Wed Aug 09, 2006 11:22 am

All the essential tools to develop stuff for BOD are well known or documented in other places. However, as a computer programmer, one thing that became clear to me early on in my career, is that a person's productivity can easily be improved by the addition of a few other tools.

The point of this thread is to illustrate other tools (preferably free ones) that can help/improve life for all you modders out there as essentially you are doing development equivalent to programming.

<u><b>1) Search Tools</b></u> - Windows Search/Find, especially in XP, sucks. It regularly misses files it should easily find. Alternatives include:

<b>Agent Ransack</b> - this little gem not only runs umpteen times faster than Windows Search when looking for a file, but also performs a GREP type search where you know that a bit of text is in a file but you don't know which one. This'll find it for you. Check it out for free at:
http://www.mythicsoft.com/agentransack/

For the Borland Delphi or C++ Builder users out there have a look at <b>GExperts</b>. This incorporates a GREP search and a host of other useful tools to make life easier for you. Open source and free at http://www.gexperts.org/

<u><b>2) Text Editors</b></u> - let's face it Notepad and Wordpad are distinctly limited. No formatting, no sorting, no multiple documents, etc. There are hundreds, if not thousands of alternative text editors out there, many free, many shareware.

My personal favourite is <b>Textpad</b>. This is shareware and can be found at http://www.textpad.com/. It has a host of features including user recordable macros, decent file searching and management, multiple documents open at one time, code templates, bookmarks, context colour highlighting, the list goes on. If you haven't ever tried anything other than Notepad and Wordpad, I strongly urge you to give this and/or other text editors a try. You'll be amazed how much more productive you can be using a powerful text editor over the basic Windows options. It's up to your moral standpoint whether you pay for the licence after the 30 day evaluation period or uninstall if you don't like it.

Another highly rated text editor is <b>UltraEdit</b>. Again this is shareware, but it ceases to function after the trial period unlike Textpad which just displays a nag message every now and then.

Any search of Cnet Download.com, TuCows, or similar sites will throw up a load of other Text editors, all with more functionality than Notepad and Wordpad. Good luck finding one which suits you.

<i><u><b>Note</b></u></i> - Before you read the next two sections, these are definitely getting into programming/developing territory, but if you're messing around with Python scripts, or creating new content files (images, textures, etc), you <i>are</i> programming/developing. I'm assuming that you all take regular backups of your work. You do, don't you? If you don't, start now and save yourself a lot of pain when that file you've sweated blood for the last month to create gets screwed up/deleted. Windows/hardware screwups happen no matter what Microsoft and PC manufacturers would like you to believe.

<u><b>3) Backup/Archive/Source/Version Control</b></u> - Or how to take backups usefully. To my mind there are two types of backup.

The first is the actual existence kind. This is where you make sure there is a copy of your work in another place in the event of disaster. Depending on how vital this is, this can be as simple as copying to another folder on your hard drive all the way through to copying it onto removable media and placing in an offsite fire proof safe. In between options include:

A second hard drive in your machine. This covers you in the event of a single drive failure but not in the event of the whole PC catching fire/getting trashed/stolen.

Another option is to copy it onto removable media regularly. It's hard to find any PC without some sort of disc burner in it now and CD-R's are dirt cheap so no excuses.

Depending on your circumstances, if you've got PCs networked together, copying to another location on the network is also a valid idea as the chances of a whole network getting toasted are a lot slimmer than a single PC.

The thing to remember is that applications can always be reinstalled/downloaded again but your data/content is personal to you and only you can save it.

The second type of backup is the change backup where a copy is kept to revert to if changes made go wrong.

The simplest way to do this, is to take a copy the folder your files are in, either zipping it up or just copying it. You'll soon find that a single copy is not enough as some errors/conflicts don't show up until some time afterwards by which time a single copy (1 UNDO effectively)backup is not going to save you.

So now you take a new backup each time and save each one so you can revert. This is an improvement as you now have the ability to compare different versions over a time period and trace where faults have occurred. (With the use of a Visual Diff tool (see section 4 below) this becomes even easier). The downside is that you're either copying all files, when you may have only changed one or two out of potentially hundreds, or doing a manual selection of those to archive which is always prone to mistakes.

This is where a version control or archive control system comes in.

Very simply put, it's an application which saves only the changes for you. You set up an archive which is an essentially a copy of the files at the start point. From then on the version control can store any changes you make on top of the base line of files. Note that with most of these systems, they store the actual changes, not a complete copy of a new version of a file. It is then possible to find out what state any file was in at any given time by building the file from the original with all applicable changes.

For most modders on this board, they will be working alone and essentially will only benefit from a single user archiver/version control system. As such, I can heartily recommend <b>Keep-It</b> from http://www.keep-it.com/.

I sometimes make site visits and have to make code changes on site as part of my job, where I do not have access to our version control system. I discovered this little beauty just before my last visit and it was a life saver allowing me to keep track of what I had changed and when. Once this is installed you simply select some folders or files as appropriate in My Computer/Explorer, right click, and SendTo Keep-It Archive. If no archive exists it creates a snapshot of your files, otherwise it updates the archive with what's changed. To review changes, doubleclick the archive which brings up a selection of snapshots to choose from at whatever times you took them. Entering a snapshot shows you what files changed in that snap shot, how many changes there have been to a file etc.

This is a really a very neat archiving tool rather than a version control system but should be a perfect fit for most individual modders requirements, particularly when used with a decent Visual Diff/Merge tool. Best of all it's free.

A full version control system is a bit more involved. In these systems, a user will have highlighted to them which files are different in their work folder from those in the archive and be able to just update those they choose. You should also get revision numbers generated for every file, have the ability to label a selected set of files as those in a particular build or a system and a host of other features. For most BOD modders this is going to be overkill but if you are doing something commercially this is a worthwhile exercise. Most tools in this category on Windows at least cost money, normally on a commercial basis, although there are some shareware offerings. A rare free one is <b>FreeVCS</b> (now called <b>JediVCS</b>). This is very powerful, but it is not intuitive to set up and use. Otherwise the open source community often uses <b>CVS</b> or <b>SubVersion</b> but you'll probably need a Linux box and a fair bit of knowledge and time to sort these out.

<i><u><b>Note</b></u></i> - To any Object Orientated Programmers, no grief about OO principles not being followed in any examples please, I'm just trying to create an example whenever I write some screwed up code.

<u><b>4) Visual Difference/Merge Tools</b></u> - If you've been doing this for more than a few minutes, you've almost certainly come across the situation where a change you've made to a file stops it working. This isn't a problem if the change you've just made is a blantant one line problem eg. setting an orc up so his third hand holds a gladius. In Delphi code which I'm familiar with, this would be something like:

Orc.ThirdHand.Hold(aGladius);

This is crap because an Orc doesn't have a ThirdHand and so it goes bang when you try to use it. (Am I giving you ideas, Pro? I'm getting visions of the many armed statue with the swords from the Tomb Raider film).

What gets more difficult is where you change something which has a knock-on side effect but you don't see this until you've made several more changes to the current file/and or other files.

In this case a visual difference tool is a life saver. By comparing your back up versions (you are backing up aren't you) side by side and highlighting the differences, it makes it a lot easier to spot what is causing the problem as you can see what has actually changed and ignore the rest which hasn't. Ploughing through a 3000 line script without this trying to spot which of the 500 lines you added since the last working version has blown it all up is a lot harder.

Again there are a load of these out there on both free and shareware packages.

The best <i>freeware</i> one I have come across is <b>WinMerge</b> at http://www.winmerge.org. This not only compares files but can do directories as well, so two different backup folders can be compared if required. With a plugin it can use the compression utility <b>7-Zip</b> to compare inside archives on top of this. Also, as it's name implies, it supports merging, so that when comparing two files, bits of code can be moved from one file to the other.

This can be particularly useful in the case above at times. Rather than having to rewrite the 500 lines you've added, you can just merge back in the working line you chopped out before. Also if two modders have been working on the same file and compare notes, this can help resolve any conflicts. Modder 1 for example has coded combos for the four armed orc above. Modder 2 has also introduced some new stuff into the file for the four armed orc. Using this a user can see if the other person's changes effect the code they have written and merge the two together as appropriate so all the new code ends up in one file.

If you do a load of web development and other things where a tool like this would be of use over FTP an other mediums, check out <b>Beyond Compare</b>. It's a limited shareware trial I believe, but it is very, very good.


<i><u><b>Note</b></u></i> - A fuller and admittedly spurious example hereby follows as to where visual diff and archive tools can save your arse:

Suppose you created a four armed Orc a month ago get the ThirdHand thing above to work. All appears to be fine since then. Then you try this orc in a situation where he has to hold a certain weapon. The weapon will only activate if held in the second hand. When taken, the weapon might have an appearance method something like:

SuperWeapon.AppearInTakersLastHand(Taker);

where the Taker in this case is the four armed orc.

Now assume that weapon has a check in its attack method that checks what hand it's held in:

If Holder.SecondHand.Holding(SuperWeapon) then
SuperWeapon.ExtraDamage = true
else
SuperWeapon.ExtraDamage = false;

Holder here would be the four armed orc. As an aside, this is poor programming as it assumes that the second hand is always the last rather than running a check on how many arms the holder has but it illustrates how easy it is to write code that appears as though it will always work and then comes back to bite you in the arse when something different is tried.

Now your code for the SuperWeapon has worked fine for a year, and the four armed Orc has been behaving for a month.

By using your version control, you can revert to previous versions of files relating to either the Orc or the Superweapon until you find which you have to have to work or if any work. Using your visual diff tool, you can now examine the difference in the files to see what makes onework and another fail.

<i><u><b>Note</b></u></i> - As most of this was typed offline, I've given links where I've got them. Anything I've not given a link for will probably come up using Google in the top couple of results. Hope this illustrates the use of these tools and this helps someone gain from this,

Cheers, Gorgon90.



Stickied.
Locked (if you need this unlocked send me a pm, thanks -caravel)
Spammer's post and other posts below <b>removed</b> (he had us fooled!)
Added 08/08/06 from other post:-

Regular to me means often enough to make going to a backup because of a crash/problem, only slightly painful, warranting only a couple of choice words, rather than painful to the degree that the offending PC goes through a window from several stories up.

Using an archive tool/version control tool as described you can save a copy every time you make a change relatively painlessly and it's a lot easier to go back to a file from 10 minutes ago than 10 days ago...

Return to “Severance BoD: Modding Community”

Who is online

Users browsing this forum: No registered users and 2 guests

cron