Practice Safe Source Control

As a developer, there is nothing worse than losing all your hard work because of a power failure or a hardware issue or some other catastrophic event.  Your source code is your most valuable asset in any project, it should be treated with such respect.  Source control will save the day and it isn’t as hard as it first may seem.

Even if your just a part-time IF author, source control can be your friend.  You don’t want to lose all your hard work that comes out of your creative mind.

What is source control?

If you already know, skip to the next section.  I’ll be brief here anyways.  A source control system is essentially a repository for your source code.  Why do we want that?  Here’s a few reasons:

  1. Protect from hardware / software failures.  If you keep a copy of your source code in a separate folder on your computer, that is a form of source control.  At a minimum this can be valuable if you can do nothing else.  A source control system can add so much more as we’ll see.
  2. Keep a history of code edits.  If you use a system instead of just making copies of your code, all good systems now will keep a history of all changes made.  Why is this important?  It gives you a view back in time so that if you decided to go back to a previous version or if you decide you wish you wouldn’t have moved a bit of code, you can easily go back to prior version.
  3. Allow for easier collaboration.  A source control system where the repository is in the cloud or on a shared server, allows for multiple developers to work on the same system at the same time.  In the easiest case, each developer may be working on different sections (files) at the same time so when you “check-in” to the repository there is no conflicts between the two developers.  Other times, you can be working on different “branches” of the same code, meaning that the developers will have to merge their code changes together.  Most of the time this is easier than it sounds and is handled somewhat automatically by the system you’re using.

What systems are out there?

Octocat

bitbucket

There are quite a few systems available, but I’ll just talk about a few that I use most often, GitHuand BitBucket. These both are fairly popular and work very similarly (in fact I believe BitBucket is actually based on the GitHub code base).  The both work with the popular Git source control system and BitBucket supports the Mercurial system.

Both have free options that work perfectly for independent developers.  While GitHub is more widely known and used, BitBucket offers some nice features that make it appealing as an alternative.  For example, BitBucket offers free private repositories where GitHub only offers public ones for free.  If you are working on a new game that you plan to release in a comp and want to keep secret, BitBucket allows you to create a free private repository that isn’t visible in any searches.

Another benefit to both systems are their inclusion of issue tracking system.  This allows you, testers or general public (if allowed) to enter in issues, feature requests, bugs, … that you can track and determine if you want to include the changes in your game.

Collaboration becomes easier with a system.  Other developers that have access to your code repository can create their own branch of your code, make changes and fixes, and push them back where you as the main developer will be able to evaluate and if you approve of them, you can pull those changes into your main code branch.  All this is optional of course, but does make for some nice collaboration opportunities.

tortoisegit

So what tools do you need to work with these systems?  Well other than signing up for a free account with whichever service you use (I actually use both), the only real tool that I recommend is TortoiseGit.  This tool simply integrates easily with your windows shell and allows you to work with your chosen service.

There are plenty of tutorials out there on installing TortoiseGit and connecting with Github or Bitbucket, that I won’t bother repeating those here.  But if you run into trouble hooking these up, there is plenty of help available.

Note:  I’m a windows guy, so for the Mac or Linux users out there I know there are tools, but have no recommendations.  If you have something to recommend, please feel free to comment.

Summary

Don’t risk your source code and all your hard work.  I know that writing IF is like any other programming task, it’s a labor of love that combines creativity and technical skills and what comes out is something unique and enjoyable.  Keep that safe.

Extras

Another fun thing to use these services for….do searches on Inform 7 and you’ll find not only other games that you can peruse the code for and learn, but utilities and source for some interesting projects that you may not have otherwise known about.

Advertisements

Puzzle Design – Resources

As I’ve recently been struggling a bit with some puzzle design issues (basically my mind is coming up empty on ideas lately), I thought I’d put together some resources that I’ve found that I’ve read (or queued up to read).  I’m sure I’ll add to this over time and I invite you all to offer up suggestions in the comments.

Note this list is more for me to have handy when I need inspiration.

Designing the Puzzle – older article, but the information seems to be very relevant.

Emily Short Puzzles – Emily puts together a nice list of types of puzzles with gaming examples.

Making of Counterfeit Monkey – Emily discusses the making of her game and contains a lot of puzzle design comments.

Coding puzzles – Another article by Emily detailing some concepts of puzzle coding in Inform 7.

Emergent puzzle solutions – OK…one more by Emily sharing some thoughts on a simulationist puzzle design.

Making Better Puzzles – Stephen Granade gives us a simple article on designing better puzzles.

Designing the puzzles of escapade – Great article on how Juhana designed the puzzles in this game.  Great usage of mind-maps.

Puzzles, what are they good for?

This is a nice start to a list.  Please add comments to what you may think is useful.

IF Comp 2013 Recap

Looking back at this years competition I’ve made some observations. I had no game in the comp (maybe next year, I’ve got some ideas that might take me that long to develop if I start now….I’m just that slow), so I was able to be objective with the entries.  I did have every intention of writing more reviews, but just didn’t manage to do more than a few.  But I truly enjoyed most of them and congratulations to all that took the effort to put out something.

Thoughts

Going into the competition, I was at first a little dismayed at the number of web-based CYOA style games.  I’m not a huge fan, I like the old-style parser games with lots of puzzles.  But interestingly enough, despite that, I actually started with the web folder in the downloaded games and started playing those first.  My thought was to just “get them out of the way”, but I was actually presently surprised that a few of them were actually enjoyable.

Still, I looked forward to the parser games and I wasn’t really let down, out of the top 5 in this years results, 3 of them were in my top 5 (I actually didn’t enjoy the winner, Coloratura, as much as everyone else seemed to and I was a beta-tester on the game in the #5 spot, Tex Bonaventure and the Temple of the Water of Life, so I didn’t vote on that one.)

The ones at the bottom, were pretty much what I had down there.  I felt Reels was not great (though, it wasn’t my last choice).  I am surprised that a few placed much higher than expected.  Their angelical understanding, was one I just didn’t get, it was one of the first I played and I see their was an update after I played, but not sure what was changed.  The early version seemed buggy and the story was just too abstract (or perhaps just too deep for my way of thinking at the time).  After reading many positive reviews and considering how high it placed, perhaps I should give it another try.

I also didn’t really enjoy Trapped In Time, the story and implementation was fine, in fact if I was in the mood to read a CYOA book, then this was perfect….I just didn’t think it fit in the theme or spirit of the comp….my opinion and no disrespect to the author who I’m sure spent a lot of time and energy putting this together.   I guess I would have just liked to see the next step and put this into a CYOA system.  I may sit down on a cold winter day and go through this though the way that was intended.

I have some more thoughts in regards to the results based on parser vs other that I find slightly interesting, but may save those for another post.

 

Coloratura

Inform 7 – Paragraph Breaks in Text Substitutions

I’m a bit of a stickler when it comes to formatting of my text.  Not that I get it correct all the time…but it does bother me when I see something out of whack.  As I am continuing to practice my Inform 7 skills and increase my knowledge of the language constructs, I found myself being tripped up with one aspect of paragraph breaks repeatedly….hence this post to try and help me remember this.

One thing I run into enough is just the simple paragraph breaks that follow after hard stops at the end of some text.  (http://inform7.com/learn/man/doc79.html).   This seems easy enough and works the way I expected it too most of the time.

The clock tower is scenery in the town-square.  
The description of the clock tower is "You look up at the clock tower and see the time is [time of day]."

This produces the following results as expected.

>x tower
You look up at the clock tower and see the time is 11:10 pm.

>

Where I tend to run into trouble is when my description becomes a bit more complicated, where I may have nested logic in there so I’ll have to break it out into a new phrase. BTW: examples are really nonsensical for illustration purposes only…better ways to do things like this I’m sure.

The description of the clock tower is "[clock-tower-description]".

To say clock-tower-description:
	if turn count is 2:
		say "You look up at the clock tower and see the time is [time of day].";
	otherwise:
		if turn count is 3:
			say "You really want to see the time again?";
		otherwise:
			say "You've looked at this  before."

That produces the following output

>l
town square
You can see a clock tower here.

>x clock tower
You look up at the clock tower and see the time is 9:01 am.


>x clock tower
You really want to see the time again?


>x clock tower
You've looked at this  before.


>

You’ll notice the extra spacing. between the printed text and the next prompt. To fix that problem is a really easy fix, but wasn’t obvious to me at first.

The description of the clock tower is "[clock-tower-description][run paragraph on]"

Adding the [run paragraph on] phrase is letting the substituted text handle all line and paragraph breaks without the printing of the description adding it’s own.

I’m guessing that even this isn’t the best way to do things, but it is working for me for now.

EctoComp 2013 – Initial Observations

This morning I’ve played through over half of the EctoComp 2013 entries and I wanted to share some of my initial observations on the competition.  

*** Full Disclosure: I am an author of one of the games in the competition ***

Some observations on the games themselves

Being that this is a speed-IF competition, the games are of course very short.  Some are more of the one or two room varieties with a handful of puzzles or tasks….there are a few with relatively expansive maps, though the interaction and descriptions in each are necessarily small.  

For the most part, despite the small size of the games and the short time to write them,  they are pretty high quality games.  Sure there are some grammar issues and some unimplemented objects and most need more atmospheric text (mine included in all of those statements), but most have decent stories and concepts that I feel if expanded upon outside of the three hour window, could actually become pretty great games.  I myself have already begun work on a second release of my game based on some feedback I’ve received already as well as my own notes of things I just ran out of time to implement.

Out of the 24 entries, there appears to be 16 entries in Inform  and one Hugo….about 71% of the games are parser games….which is interesting as by contrast if you look at the IFComp13 where we had 35 entries, only 13 (37%) appear to be the traditional parser style.  I find this interesting especially given the conversation over on the forums in regards to the slow decline of parser games in favor of the CYOA style games.  

Why the discrepancy? I suppose there are many varied and complex reasons and I don’t necessarily discount that perhaps their is a rush of new authors that are attracted to the apparent ease of creating (not interesting in a debate on the validity of my unscientific observations here, I’ll save that for the forum.)  I suppose that the author’s entering EctoComp perhaps are more plugged into the community since the competition wasn’t as well advertised, thus perhaps they have been around a bit longer and are perhaps a bit more old-school.  All just assumptions on my part, I just found it interesting to think about.

The non-parser games were actually well done as well.  Even though they are not my preferred type of game, I found that those I played were actually well done.  Again, perhaps because they are coming from more entrenched authors which lending their experience to any platform would increase the odds of putting out a decent game.

Judging

As I played them and enjoyed most of them I thought about how I would rate them (and if I even would).  Still undecided on if I send in a score sheet, but my criteria for rating is going something loosely like this with weights of the components of the score in this order:

  1. Did I enjoy it?  Was the story, the game play something I had fun despite any other flaws,  If I had fun, it will score well here.  
  2. Would I like to see more?  In other words, will I be looking for an expanded more complete release down the road.  If I want more, it will score higher.
  3. Was it well implemented?  This is hard to do in just 3 hours.  I know I have some unimplemented areas, verbs and objects in my game.  But I’d not be doing justice to the game that made the effort to squeeze in some better implementation or if they structured their text and hints so as to minimize any confusion on the part of the player.
  4. Grammar.  Yes I will include this as a very small component.  But very minor, I don’t expect in three hours to have well edited text, mine was no where near as good as I would have liked.  But I run into any glaring issues that distract from the game, then perhaps a small deduction may be in order.
  5. Extras.  I’m a sucker for extras.  I like that when a game thinks like I do and makes the extra effort to include some basic atmospheric text or an easter egg or two (if I can find them).  To me that shows the attention to detail that I like.  No deductions here if none are included, but perhaps a bonus boost if I see something extras in there.

Not very scientific, very subjective and of course this is just something I came up with to assist me in rating the games.  For more full games, like those perhaps in the IFComp, these would necessarily change weighting and there may be other criteria in there that I would include.

Anyway, I nice crop of games here in EctoComp 13.  Lots of fun and potential for the future.  This was my first release ever, though I’ve written plenty that just need finished, so I was pretty excited to have a reason to release something.  Hope everyone enjoys the games and if you feel so inclined, please vote!