Blog

RSS

.gitignore: permit only certain paths with negation

May 15th, 2014 (edited November 3rd, 2022)

Today I was trying to create a .gitignore file for a project that has to live in the same directory as a number of different folders. I wanted the git repo to only include folders that start with the string heroscape, while excluding any other folder.

The gitignore man pages point out that you can negate a pattern by putting a ! in front of it. I didn't notice at first that this does not ignore anything that does not match the pattern. Instead, it re-includes any previously ignored paths that match the negated pattern.

So to achieve what I wanted, I had to do the following, first ignoring all folders, then re-including folders that begin with "heroscape".

*/
!heroscape*/


Permalink

Dawn: Infinite Runner Game

May 11th, 2014 (edited November 3rd, 2022)

Between the Ludum Dare, school, and everything else, I've been turning out a lot of small projects this month. I recently participated in a competition on The Game Creators. The competition, inspired by Flappy Bird, presented one goal: make the most addictive infinite game possible.

My entry, titled Dawn, also draws inspiration from the classic Canabalt. It's a sidescrolling runner in which you play a man who must jump, smash, and fly his way through a scrolling obstacle course as the days pass by.

Dawn Screenshot

This competition was focused on addictive potential, so I implemented a few different ideas in an attempt to grab the attention of players of the game:

  • Online Highscores: they give the player something to shoot for. He can see what other people have done, know that it's possible, and attempt to prove himself better than them.
  • Day/Night Cycles: My idea here was to give the player a concrete sense of progress - more visceral goals to shoot for than the elusive high score.
  • Feel: Polish. If the game simply feels good to play, I reasoned, people will want to play it more! Key elements of this in Dawn include particles when smashing through walls and a good set of character animations that makes you feel awesome when you crash through those girders. At the suggestion of Justin Britch, I took a minute to implement a simple animation at the game end: quickly ticking up the user's score from 0, rather than just displaying it. This gives the score a sense of weight and grants the player extra satisfaction at his achievement.

It remains to be seen how effective these strategies were. Clearly Flappy Bird didn't need many of these things to become what it did!


Permalink

Ludum Dare #29 Complete

May 11th, 2014 (edited November 3rd, 2022)

A few weeks ago, I participated in the 29th Ludum Dare. It has been a while, but not many posts, since I last participated in the Dare. The theme for this one was "Beneath the Surface".

I worked with Justin Britch on this one. We met just after the theme was announced to brainstorm. I really liked this theme - it evokes mystery and exploration, provides an easy setting (underground or underwater) to start with, and could simultaneously be tied into gameplay elements. While we thought it would have been a lot of fun to make "Ben Eath, the Surf Ace", we ultimately decided that we really wanted to go after the mystery, the thrill of exploration, fear of the unknown, and such themes. We also knew that we wanted to attempt to introduce some sort of narrative into the world.

Thunder Fish game work in progress.
The beginnings of the conversation system.

The design was ambitiously scoped for a jam, and I'm happy I was able to turn out so many features.

Thunder Fish game finished conversation system
More conversation.

The Good: Dedicating time during the development process for polish worked well for the game. When polish gets left as a task for the end of the jam, there's often no time to actually do it. I didn't leave a feature until it was in a state it could stay in.

I also didn't run into too many momentum-killer problems. I've worked on several smaller projects using HTML5 and ThreeJS over the past few months, so I knew some of its quirks and was able to work continuously without getting stuck on strange bugs, even though the codebase for Thunder Fish pushed way past the size of my previous HTML games. Familiarity is key for jams, and it definitely pays off in the ability to continue grinding out features.

Learned: Yet again, I completely failed to allocate time for audio. Fortunately, I was already in the Jam category for this one, so I pulled some free music from NGXmusical in the last hour. Sound effects could have improved the feel even further, though.

You can play The Legend of the Thunder Fish on the web!

Also some of the other Dare games, here: Ludum Dare 29.


Permalink

What is Flatricide Pulgamitude Anyway?

March 1st, 2014 (edited November 3rd, 2022)

I recently released a small game called Flatricide Pulgamitude. This game is an experiment for me in pseudo-multiplayer game development. By that, I mean "I really like games you can play with other people, but I don't want to have to manage a real-time game server". Therefore, I set out to make a game that you could play with others online with only some PHP scripts and a MySQL database.

The result of that is a game in which you wander a strange abstract world built by people who have come before you. You can't see other people in real-time, but you can explore their work and build your own for others to find.

So why the strange name? The other impetus behind this project is a class competition to get a page to the #1 spot in Google Search for the term "Flatricide Pulgamitude". To that end, I'd appreciate it if you could share a link on your own site!

You want to check it out? Just click on this pulgamitude (whatever that is):

Pulgamitude

Permalink

Keeping cmd windows open with /K

January 29th, 2014

I like using .BAT files to run common tasks like compiling Java code or starting my NodeJS server. It's very convenient to just execute a .BAT where you've already written out all the proper parameters rather than typing out an entire call every time you need it. This does cause a problem, though - if any of the programs that execute from the .BAT returns an error code, the command window will immediately close. This makes it impossible to debug those programs.

I tried adding the pause command at the end of each file, but to no avail - the command window exits immediately when a program returns an error and doesn't execute the rest of the file (which is responsible of it, admittedly).

The solution was to use a parameter to the cmd program itself:

cmd /K bat/mybat.bat

The /K parameter keeps the window open even if the .BAT stops executing. I simply copied all my .BATs to a subdirectory and created wrapper bats using this line.


Permalink


Previous Page
88 posts — page 7 of 18
Next Page