Project #3: IntelliWriter

A typewriter and tab-completion walk into a bar…

IntelliWriter Logo

 

Definition

IntelliWriter is a distraction-free(ish) writer’s tool with a few twists. The first is that, like a typewriter, where you are typing stays in the same place while the document moves as you type. This keeps your eyes from having to travel around as you type. I’m not sure if this is actually a problem, but let’s try it out anyway.

Secondly, IntelliWriter will attempt to dynamically bring up suggestions on the word it thinks you are typing. If you see that the current suggestion is the word you are typing, you can simply press tab and the word will complete automagically. This is similar to word suggestions when typing on a smart phone but with a keyboard shortcut for completion.

Lastly, and this might be a stretch goal for the 24 hour timeline, the document will be continuously saving as well as keeping a history of past saves available. The writer will be able to see the draft from 30 minutes ago as easily as seeing the draft from yesterday without having to manually save off new copies. Again, I’m not sure this is actually a problem but it sounds like it might be cool. Engage!

Previous Work

HanxWriter – Tom Hanks’s typewriter simulator is the original inspiration for the centered-cursor feature.

DarkRoom – A Windows clone of OSX’s WriteRoom, is more-or-less the standard for distraction free text-editing.

Write! – A really pretty tool and the only one I’ve found with a solid auto-complete. It builds the auto-complete options from words you’ve already typed.

iaWriter – Another nice tool with a well thought out flow. Also has a great syntactic highlighting feature (adjectives, nouns, conjunctions, et cetera).

WriteMonkey – Slim, light, portable, auto-save with history, and extensible.

Design and Mock-ups

I’ll start with a white-on-black color scheme with a yellow highlight. There is a grand opportunity to support themes, but that can be a nice-to-have after the big features are up and running. Notice in the mockups that the cursor where you are typing never leaves the center of the screen…

A new document
A new document

 

Typing the first sentence
Typing the first sentence with suggestions

 

A tab-completed word!
A tab-completed word!
Editing mid-passage
Editing mid-passage

 

Work Items

I feel a little better about this list for the 24-hour deadline than I did in the last one. There are a few risky areas but I think I’ll be able to leverage previous work for things like the suggestions dictionary and possibly a historical save engine. …we’ll see!

  1. Feature: Typewriter
    1. Text surface
    2. Text surface configuration (e.g. width, font)
    3. Keyboard event handling
    4. Centered text surface
  2. Feature: Suggestions
    1. Engine
    2. Rendering
    3. Tab-selection and completion
  3. Feature: Auto-save w/ history
    1. Simple auto-save
    2. Version tagging
    3. History engine
    4. History browser
  4. Export to text file

Future Work

  1. Spell-checking
  2. Color themes
  3. Responsive to resolution changes (e.g. on-screen keyboard)
  4. Export to Word and PDF
  5. Document statistics (words, characters, read time, etc…)
  6. Focus mode (dim all but current paragraph)
  7. Cloud storage integration
  8. Markdown support
  9. Xamarin port

 

Project #2: Mars Commander

The game mechanic in Humongous Entertainment’s Moonbase Commander is great. It is a fantastic hybrid of strategy and timing-based skill that has sadly not been explored further. Let’s fix that.

Mars Commander

Definition

Each player controls a hub that can launch out new hubs or any number of other units and projectiles. When launching a new unit from a hub the player is given a rising power meter and needs to press “Launch” when they think the power meter is at a good spot. Moonbase Commander was a relatively long turn-based game for 1-8 players on a local network. This project is a fast-paced real-time head-to-head implementation of a the unit throwing mechanic.

To throttle each player’s abilities, each action will take a certain amount of energy with energy recharging at a standard rate. Players can speed up the recharge rate by deploying certain types of units.

Previous Work

I did some searching around to anything else (besides Moonbase Commander) that had this kind of mechanic in an strategy context with no avail. That’s either good news or something like passing a shrunken head on a stake as I walk onto ancient tribal lands.

Designs and Mockups

I went through the major design themes (Moon, Earth, Water, Space, Living Room) and, quite obviously at this point, landed on Mars. Though, should this go beyond the project, I should reconsider “Living Room Commander”. I’ll be trying out the cross-platform MonoGame  which is an implementation of the Microsoft XNA 4 API. A couple friends and I used XNA 4 to implement Pendulous and I thought it would be good to have some experience in the toolset for this one.

I really like the idea of a head-to-head real-time, so I’m going to set this up sit-down arcade style.

Commander Mockup

Each players sits at opposite ends of the tablet. At the bottom of the screen is their controls with their view of the world in the rest of their half of the screen. To the bottom right the launch button and power meter with the rest of the bottom of the screen showing the selected unit’s status and controls.

Tasks

This list, now that I look at it, is a little intimidating for the 24-hour limit. Bah, games are fun to write anyway.

  1. Render simple ground tiles
  2. 2-player camera with split
  3. Touch-based camera movement
  4. Rendering layers (ground, units, projectiles, overlay)
  5. HUD overlay
    1. Launch button
    2. Aim rotation
    3. Unit status and actions
  6. Units
    1. HUB
    2. Solar array (energy collection)
    3. Anti-air
    4. Shield
  7. Projectiles
    1. Bomb
    2. Missile
    3. EMP/Jolt (EMP off cord, Jolt on cord)
    4. Crawler
  8. Unified command queue (prep for network play)
  9. Fog-of-war
  10. Sounds
  11. Music (optional)
  12. Welcome screen

Future Work

Again, the “future work” category is more to remind myself what I should not be doing with my time even though it would super cool and super fun.

  1. More unit types and projectile types
  2. Multiple elevations
  3. Network play with more players (3+)
  4. AI opponents

Project #1: Who Goes First?

I have spent the last couple weeks on the first Hello, Program project and thought it was time for a status update. In preparing to implement a project, I currently go through five steps in planning:

  • Definition – Document what is my application trying to accomplish and, equally important, what is it not trying to accomplish.
  • Previous work – Someone has already done what you are trying to do. Consider contributing to an existing project if something already comes close.
  • Design & mockups – Choose a theme, both visually and functionally, then open up a paint program to get an idea of what the thing might look like.
  • Implementation tasks – My task list is less about understanding what needs to be done and more about managing my time. Being able to visualize how much work is left does wonders for keeping me from spending an hour doing something that probably doesn’t really matter in the end.
  • Future work – This is my parking lot for what to extend and possible next-steps. This lets me write these types of things down and get back to what I’m supposed to be focusing on.

Here they are for project #1: Who Goes First?.

Definition

The first project idea comes straight from my close friend and talented game designer, Matthew Moore. The pitch is to put a touch device (tablet/phone) in the middle of a table before a board game. Everyone touches the tablet and the application does some fancy randomization animation and picks who goes first. That’s it!

design

Previous Work

For this project I did searches for “who goes first”, “pick player”, and “random select”. I searched the web, Google Play, Windows Stores, and the iOS marketplaces and found five or six applications that try to accomplish the same thing, all of them ranging from tolerable to terrible. No where to go but up!

Designs and Mockups

For games and the entertainment applications, I find it insanely useful to define a theme and make sure everything you do can be related back to that theme. For Who Goes First, I chose a game show theme. I put together a few mockups to see if what I was thinking would translate to the screen.

Who Goes First prompt mockup

Who Goes First selection screen

Who Goes First reset screen

I also include explicitly deciding on the tools and platforms as part of design to keep myself from jumping around in toolsets just because its fun to play with those things. For this project, I decided to use Construct2 for development and target HTML5, Windows 8, and whatever else I can convince it to export to (i.e. iOS, Android, …Blackberry? Really?).

Tasks

Taking a page from agile development practices, I don’t go too far beyond a list in notepad or OneNote.  Here is what my Who Goes First task list looks like today:

Future Work

I have always found keeping the future work list invaluable. Again, I can write it down somewhere and then get back to what I should be doing.

futurework

You can see from the task list that I’m almost halfway through my implementation and each one seems to be taking an average of 1-2 hours. I should be able to have a usable something soon and I’ll see if I can figure out how to post HTML5 here.

–Adrian