March 29th 2015 · Read More · No Comments
I caught a cold on Thursday and was knocked out for most of Friday. Still, I managed a decent amount of work on “Can’t Stop Shooting” over the last few days, and got the game into a pretty decent state.
It’s a game. Which is to say, there is a level, it has a goal, and you can win or lose. On Saturday I created a level editing workflow: create the level using rectangle blocks in Inkscape; run through a python script to turn the SVG into a plist (an XML format used by Swift/Objective C for storing data); import the level into Xcode, and add it to the list of levels accessible through the menu using another plist. The ability to create levels in Inkscape reaped immediate rewards: for most of this month I had just two random blocks in the level to test collisions and laser bouncing; now I have an actual level that can be navigated, and can easily create more.
I also fixed the multitouch movement model, and added a push if there’s an explosion and you’re near to it. No burning things yet.
All in all, I’m pretty pleased with how I went this month. I made an iOS game and learned a lot, and there’s lots to do and it doesn’t seem hard at the moment (mind you, I haven’t had to do any optimising yet).
The code is very prototypey. It needs some fairly major refactoring, and I never did get the hang of how MVC was supposed to work with the SpriteKit way of doing things. There are lots of hardcoded constants that need to be configurable if this is going to work for devices other than the iPhone 5s.
Back to real work tomorrow!
March 26th 2015 · Read More · No Comments
Hmm, missed a few entries there. Monday and Tuesday were, as expected, a total write-off. I did manage a bit of work on Silent Shinobi, adding a damage system. I’m concerned that it’s too complex, but it does good things in distinguishing the Ninjutsu skills (which, in my game, are Fighting, Hiding, Acrobatics, and Spying.)
I did a good chunk of work yesterday on changing the control system to a “turn & accelerate” thing, but actually I spent most of my time doing graphic design because I enjoy that too. I replaced the default space ship with a UFO style thing of my own design, added a shadow, and designed the steering wheel and accelerate button. I was particularly happy with the latter:
The “turn and accelerate” model is now working, more or less, though it doesn’t cope with multitouch very well yet.
I also appear to have gone a bit steampunk.
Today: finish the movement model, add an acceleration push from explosions, add win condition to level (which I think will be “get to a specified area”), have multiple levels.
Next stuff to do in general: add burning, and allow objects to be damaged by nearby burning things.
March 21st 2015 · Read More · No Comments
I got the HUD working and I added a nice metal plate background texture to make it easier to see when you’re moving. The issues with the HUD (which took all day to solve) turned out to be the way the code was scaling the default image area. I simplified the code and got it all going.
This weekend I don’t expect any progress at all: Von & Jen are in Melbourne for a weekend off, and I’m looking after the girls with Dad. We did a trip to the Opera House for baby proms (much enjoyed by the girls) and now we’re waiting for Dad to show up.
March 20th 2015 · Read More · No Comments
I didn’t make much progress on “Can’t Stop Shooting”, mostly because I was working on Silent Shinobi. A good piece of advice for game design is not to get bogged down in graphic design – just whip up quick prototypes using pencil and cardboard and playtest lots. If the game is fun without the pretty graphics, it’ll be fun with them.
I’ve never been able to do that, unfortunately. In principle my card graphics code (svg + python) can be used for lots of different games (hi Steven!). I spent a lot of yesterday getting the graphics of the latest incarnation nice and pretty, knowing that I’d probably change it all again later. It is pretty, though.
Anyway, I did get the pause functionality working properly. It’s possible to pause individual nodes in the scene (thus pausing animations), and setting the PhysicsWorld speed to 0 means it doesn’t update the physics.
Today I’ve been trying to get the HUD working, but I’m struggling with misbehaving anchor points and view sizes. Still not sure what I’m doing wrong. I’ve got the health bar working, at least. Crikey this bit is fiddly.
March 19th 2015 · Read More · No Comments
Okay, much less excuse yesterday, but I still didn’t manage much thanks to procrastination. I implemented a faulty pause button for “Can’t Stop Shooting”. It stops all my code from doing things like exploding stuff but doesn’t stop the physics engine from moving the ship (technically it doesn’t stop you from shooting so +1 for theme, but it stops damage from happening). I’ve gotta do some reading to work out what to do about that.
I don’t feel too bad about it because bumming around the house playing Rocksmith and eating chocolate was definitely part of my mission statement, but I’m keen to do something today. First up though: Silent Shinobi. The card size is still a little too large and I have to nerf the permanent ninjutsu cards to try and make the final challenge actually challenging.
March 18th 2015 · Read More · No Comments
Yeah, I didn’t get any actual coding done, as expected. I did a bit of thinking about the concept of “Can’t Stop Shooting”. How is the game going to be fun?
The central idea of the game is that you can’t stop shooting, and that your constant shooting is causing problems. One possible problem is that your laser bounces off things and comes back to hit you. Another is that you hit things that trigger game elements to cause you problems – for example, an explosion may cause damage to nearby objects, or a thing that gets hit becomes an enemy (or it gets killed, and its friends become enemies) and starts shooting back.
The last one is a tricky case, and may result in the game not being fun if I handle it poorly. For example, I don’t think I’m the person to make a game with little people that you can mow down and cause police and army to show up and OMG destruction. Grand Theft Auto and the like have done that, and I’m not keen on the moral aspect, even with the players saying “Oh dear, I’m sorry, it was an accident!” – it would still be my level design that puts people in harms way (and done badly it would be hit-over-the-head political commentary). Also it may be a bit of a bummer.
My current plan is to keep the game either abstract (easier to design!) or themed as outer-space or microbes – perhaps a journey through someone’s body, for example, trying to destroy cancer but not healthy cells.
March 17th 2015 · Read More · No Comments
Yesterday I got collisions going (it was pretty easy; SpriteKit has a physics model and it was just a matter of setting bits and option flags) and generalised the explodey codey so that everything explodes now, including the ship.
I also added a border around the edge of the play field and made it 100% reflecting, which turned out to be quite deadly: it’s now very easy and common for you to be hit by your own laser while flying around.
Next up: not expecting much progress today (it’s a day with both girls at home), but if I get time I’ll turn the tech demo into a basic game: create the start screen, add a HUD, add a bunch of random blocks, and give a score.
March 15th 2015 · Read More · No Comments
Blocks will now explode when they have been sufficiently lasered. That is all.
March 15th 2015 · Read More · No Comments
I got a little time to work on the game yesterday, and fixed the laser coding so it can reflect off a set number of items. Looks pretty good. I probably don’t want more than six reflections in practice, but I might go higher if I implement refractions.
Next up: I doubt I’ll get much time to work on the game today, but if I do, I think it’s time to explode some blocks. Each block absorbs and reflects some of the laser energy according to the type of block. They’ll change colour until they’re white-hot and then explode. They might cool down if they’re not being currently hit.
Oh, I should probably add some more blocks so there’s a bit more fodder.
March 13th 2015 · Read More · No Comments
Not much progress on “Can’t Stop Shooting” today. I had a band lunch, and spent much of the day working on Darths and the new version of Silent Shinobi (version 6.1ish) and then playing it tonight with Von & Paul & Hannah. Again, an easy victory for the Ninjas, and some good notes for the next version.
I did realise one important thing with “Can’t Stop Shooting”: I need to have a control scheme that has the movement direction potentially different to the laser direction so that you can move and pick up a powerup without shooting it. Philosophically, I want the game to only harm you through the actions of your laser – so, nearby explosions are ouchy, hitting yourself is Just The Worst, but bouncing off objects shouldn’t hurt you. In game story, you’ve sat down in an alien spacecraft and accidentally turned it on, and you don’t know how to turn off the laser.
So I think I’ll try out a control scheme similar to asteroids: you can fire rockets to go faster in a direction, and you can turn. Firing rockets could be a two-finger tap, perhaps.