Cyberpunk Roguelike – Inventory

This is a smaller update than last time. I just had some time to add some basic inventory management.

cr_inventoryIn this gif you can see the hero open their inventory and loot the dumpster, which adds items to the inventory. It’s simple, but it’s a step closer in solidifying my context-sensitive menu which involves passing functions around through the class tree.

At the moment I’m looking into switching languages. I’m realizing how big this game could possibly be and I’d like to take advantage of threading. I’d like to be able to publish a web demo, but I’d rather not use Unity since it limits what I can do with C#. I’m looking into OpenTK with C# right now, by next week I’ll have some results.

 

Cyberpunk Roguelike – Movement and Actions

It’s been about a week since my last post. That seems like a good amount of time to space these out, so let’s make this a weekly thing. In the current build of my cyberpunk roguelike, I’ve added player movement and a basic looting action.

The first player action: looting a dumpster
The first player action: looting a dumpster

Here you see the player (@) looting a dumpster object which has a bag and a piece of food in it. Enabling this action required quite a few subsystems to be created. Objects are the basic entity in this game, but now they can have traits. In this case, both the player and the dumpster have an inventory trait. Traits have actions associated with them, and inventory has the “loot” and “stash” actions which exchange items from the player and the object’s inventory.

All of these interactions occur through a generic list of actions represented in the UI as a list to the left. This list is dynamically populated by the actions in a sort of complicated navigation between the relationships of the actions, traits, and objects involved.

So far I’ve been enjoying the challenge of keeping my architecture ‘generic.’ I feel like this is a challenge of any traditional rogue-like where the designer would ideally like to have as much variety as possible without making it too difficult to add unique and interesting items and objects. I’m planning on not only having a variety of objects in the game world, but a variety of interactions. This is why I’m going with a generic, context-sensitive list of actions to choose from, rather than mapping a set amount to the keyboard like Rogue and Nethack do.

To summarize, here are the changes since the last post:

  • Player movement
  • Collision
  • Doors
  • Basic UI structures
  • Trait and Action classes
  • Inventory trait
  • Loot action

And here’s what’s coming up

  • Player inventory actions
  • Item information on interaction
  • A better looking dumpster, and hopefully some other items as well.

Cyberpunk in Unicode (Weather and Lighting)

Lately I’ve been cooking up a little weather and lighting engine in HTML5 using the PIXI renderer. I’ve been going for a cyperpunk city-scape feel. Here’s what my test scene looks like now:

cr_rain3

Some people call this ASCII art but I’m cheating a bit, using some characters not even in Unicode. It’s more about evoking the style than the accuracy.

I’m planning on using this engine for a rogue-like game set in a cyberpunk mega-city. I’m still working the design out in my head so right now I’m just trying to make something pretty. I’ll be updating this blog as I work on it and end each post with the new features. Here’s what I have so far:

  • A 3D world of blocks a la Minecraft rendered in 2D ASCII-like art
  • Colored lights that are easy to add to scenes
  • Factory class for basic buildings, sidewalks, and neon signs that are also easy to add to scenes
  • Rain effect (clips through buildings at the moment)
  • Room structure for interior/exterior separation.

And here’s what’s coming up next:

  • Line of sight (In the works. Turns out this is difficult)
  • Character movement
  • Doors

 

My HTML5 Environment

About a week ago I started exploring options for making a web game. In this post I’m going to go over what my criteria was, the various options I explored, and why and how my current environment works. At the end of this article, I go in detail on how to set up my workflow, which could be helpful if you’d be interested in doing something similar.

 

cr1
My game a week in

 

This was my criteria:

1. The environment can publish to web

Hosting games on the web is the best way to get people playing, and it’s even better when you can show it on the web on their own phone. I know I always feel a twinge of doubt about downloading an executable, but few are wary of web games and don’t mind trying them out. The big three frameworks/engines for publishing to web are Unity, HTML5, and frameworks driven by variations of Actionscript (like Haxe). I’ve programmed in actionscript for over eight years, but, as a Computer Science student, I really felt like leaving that comfort zone and improving my skills with JavaScript and/or C# (HTML5 and Unity’s respective supported languages). HTML seemed especially good in this respect since it does not require the user to install web plugins.

Continue reading My HTML5 Environment

Creating A Proprietary Scenario Editor in Javascript

Recently I’ve been building an adventure game engine that works as a mix between the SNES’ Clock Tower game and Phoenix Wright. In my last game, Canvasser, all the dialogue was hard-coded in the game, and it became kind of nightmarish to work with at times. In this adventure game, which will have more dialogue and other writers working on it, I knew I had to make a scenario editor to make all our lives easier.

I looked around for different frameworks that I could build an editor in, and ended up using a page hosted here on my website. In the game, the scenarios are XML files read in by the Actionscript that the rest of the game is coded in. The editor page reads in working XML files with PHP, then builds the page based off the XML with Javascript.

A preview of the Scenario Editor

I ended up going with Javascript because I’m fairly unfamiliar with other GUI editing programs and I knew JS could do what I needed fairly easily. I tried Qt, and while it’s powerful, it felt like I’d have to do absolutely everything by hand. With JS I was easily able to throw in checkboxes, text inputs, drop down lists, expand/contract buttons, all organized in an unordered list format without having to deal with positioning or defining my own classes. I ended up using the FileSaver library to save the XML files generated, but I didn’t need to use any libraries beyond that.

Saving/Loading is a bit wonky, because in JS you can only download files, not save them (as far as I know). I’m considering using a library that embeds a flash file into the page to allow for traditional file saving.

Overall I’d strongly recommend this approach for proprietary scenario editors. It gets the job done, and is flexible enough without giving you too many options.

Canceling Canvasser 2033!

A little over a month ago, I published a blog post detailing my plans to make Canvasser 2033, a futuristic canvassing game with robots, and sequel to Canvasser. I made a playable prototype that I threw online (which took about two weeks to make in my free time), and planned to continually update it with user feedback.

After posting it and seeing the response I got from friends and other indie devs, I realized that the enthusiasm wasn’t there. At that point I decided it wouldn’t be worth it to continue working on it. From the outside, this can look like a failure, but I feel like this was a fantastic use of two weeks of work. Not only did I get to practice ‘selling’ a new game idea, but I was able to implement a basic conditional AI system for the first time.

Basically, I got to try a bunch of new things, as well as come to terms with the fact that a Canvasser sequel just isn’t in demand right now.

Continue reading Canceling Canvasser 2033!

Announcing Canvasser 2033!

The next installment of the Canvasser series has entered development! Canvasser was a game about asking people on the street for money to support an important cause, and 2033 takes that concept 20 years into the future, with robots!

Hasty promotional pixel art!

In Canvasser 2033, you will be controlling robot canvassers who bombard civilians with their smiles and clipboards, doing anything they can to get money for your cause. You will be able to program their AI with a flexible system reminiscent of Final Fantasy XII. You will be able to upgrade your robots over time and change their appearances. And you will be a part of a compelling story that tackles the ethical issues of the future.

I am about two weeks into development, so we’re in the early stages right now. However, you can play the current alpha version of the game here. I would like to get people involved immediately to help make this game the best it can be, and I encourage you to give me honest feedback on your experience.

Continue reading Announcing Canvasser 2033!