Difference between revisions of "Synthesizer"

From RogueBasin
Jump to navigation Jump to search
(Changed my mind about deleting myself from roguebasin. Sorry. -graspee.)
 
(8 intermediate revisions by 2 users not shown)
Line 6: Line 6:
|updated = 2015 (7drl)
|updated = 2015 (7drl)
|language = [[C#]]
|language = [[C#]]
|platforms = Unity 5, so lots but only Win and web released
|platforms = Unity 5: win, lin, smackos and web released.
|genre = none/unique
|genre = none/unique
|site = http://pangoempire.wordpress.com
|site = http://pangoempire.wordpress.com
Line 33: Line 33:


Another unusual feature is "effects". These are coloured squares on the floor which have various effects depending on their colour, for example double damage, or convert damage to healing. If you or a mob attacks when standing on an effect they get the benefit of that effect. This was inspired by various virtual instruments (VSTs) that use balls bouncing round a grid in order to make procedural music. Nova3 is a good example of one. The effects move at different speeds and bounce off walls, playfield edge and other effects.
Another unusual feature is "effects". These are coloured squares on the floor which have various effects depending on their colour, for example double damage, or convert damage to healing. If you or a mob attacks when standing on an effect they get the benefit of that effect. This was inspired by various virtual instruments (VSTs) that use balls bouncing round a grid in order to make procedural music. Nova3 is a good example of one. The effects move at different speeds and bounce off walls, playfield edge and other effects.
All the sound effects in the game except one are generated by usfxr. The aim was to have the player's and the mobs' basic attacks sounding like the waveform they are using. This has been implemented but isn't that successful.


== Normal features ==
== Normal features ==
Line 43: Line 45:
* The player transitions to a new level on going through the exit.
* The player transitions to a new level on going through the exit.
* There is no [[FOV]]. Walls simply block movement.
* There is no [[FOV]]. Walls simply block movement.
== Assessment ==
* I got nearly everything I wanted to do finished except for resolution options and music for the title screen.
* Overall I'm extremely happy with the game I created and I'm really proud of it. In 2013 I was entering 7DRL for the first time and my game, despite having a gimmick I still think is good, lacked a lot of features; in 2014 I again was pleased with the gimmick but I didn't get everything fleshed out and finished off the way I wanted; this year I finally managed to do everything on my list that mattered, although I was worn out with the mental effort at the end of the week and I estimate I had put in about 100 hours.
* My procedural audio system didn't work as well as I thought it would. It needs work to generate better noises for attacks. Some reviewers didn't even realize it was there. Other people commented that the sound effects for things like game start and game over were too loud.
* The game did turn out to be as complex as I thought it would be, and it did put some people off, but others liked the game for it, so I'm happy overall. I feel the instructional video and web page cover how to play the game well and anyone who puts the time in can learn how to play the game.
* I think the tactical gameplay worked out well and fairly balanced although the type of mobs you get and their placement at the start is random and can really help or hinder the player.
* I think having a set number of levels and a score might have worked better than the infinite levels- "how far can you get" mechanic, which always seems a little lazy.
* There was a danger that the player could get a really good waveform for their attack and/or force the mobs to get a zero damage waveform, which unbalances the game. Because of this I made the waveforms reset every few levels, which I think worked well to eliminate this source of unbalance.
* There's an exploit though where you can boost your hp up to massively high numbers if you can be bothered to repeat the same actions over and over. This is something which would be looked at if I developed the game further.
* Also the jelly type mob which has a certain chance to "split" suffers from the problem that the more times it splits and so the more of it there are on the level, the greater the chance a jelly will split, so the number of jellies can spiral out of control a lot faster than I would like and create a situation the player just can't escape from because jellies are "born" as fast as they can be killed.
== Fun Facts ==
The feature where the glitechs (mobs) can overwrite the level exit, forcing you to kill all the mobs to respawn an exit came about through a combination of a bug and testing. I was testing how fast the player could keep diving into the exit, worried that the player would never enter combat and just rush for the exit each turn, since the measure of success is level reached. A bug caused the mobs to overwrite the exit if they moved on top of it and I realized it wasn't that easy to just dive, dive, dive when they could do this so I left the behaviour in and added a new exit spawn on killing all the mobs.
Broom is mentioned numerous times in promotional material for the game but unlike [[Sucker]] he does not appear in the game.
Moop ("moop is bear") was originally a daily silhouette on twitter. This is a daily sprite drawing exercise on twitter where you are given a silhouette and have to draw pixels inside that outline to create the drawing it suggests to you. It's part pixelart practice and part Rorshach test.


== Versions and platforms ==
== Versions and platforms ==


Sucker is written in [[C++]] with the [[SDL]] library (2.0.1). A binary is provided for Windows only. Source code is available on github at [https://github.com/graspee/SDL-sprite-based-roguelike/tree/Sucker]
Synthesizer is written in [[C#]] using [[Unity]] 5. A binary is provided for Windows, Linux, MACOS and there is an online version. Source code is not yet publically available.


== Game related links ==
== Game related links ==


* [http://7drl.org/wp-content/uploads/2014/03/sucker-7drl-version.zip Game binary download]
* Full instructions on the web: https://pangoempire.wordpress.com/2015/03/15/synthesizer-full-instructions-wip/
You need to have installed the Microsoft Visual Studio 2013 redistributable. (x86 version I assume but try 64 bit if it doesn't work still). Most modern game players have this installed anyway as most steam games install it.
* Instructional video:https://youtu.be/yy37WbU62qw
* Author's Let's Play video: https://youtu.be/OD9maSTu86Q
* [http://7drl.org/wp-content/uploads/2015/03/synthesizer-2015-7DRL-by-graspee-7DRL-deadline-build.rar Game binary download]
* [http://7drl.org/wp-content/uploads/2015/03/synthesizer-2015-7drl-deadline-build-linux.zip linux - untested]
* [http://7drl.org/wp-content/uploads/2015/03/synthesizer.2015-7DRL-deadline-build-MACOS-X86.zip smackos - untested]
* [http://thebroominstitute.itch.io/synthesizer-7drl-2015 play online]
* [http://7drl.org/wp-content/uploads/2015/03/synthesizer-2015-7DRL-web-player-deadline-build.zip web version as a download]

Latest revision as of 11:42, 3 June 2015

Synthesizer
7DRL
Developer graspee
Theme Audio Synthesis
Influences Real life synthesizers, Michael Brough games
Released 2015
Updated 2015 (7drl)
Licensing some kind of free
P. Language C#
Platforms Unity 5: win, lin, smackos and web released.
Interface Keyboard, redefinable in unity launcher
Game Length infinite, highest level reached is measure of success
Official site of Synthesizer


Screenshot

d4JnDrM.png

About

Synthesizer is a 7 day roguelike game created in a 168-hour window as part of the 7DRL 2015 event.

Inspiration and aims

Having recently been drawn into the world of audio synthesis and fancying myself as a bit of a top music producer kind of pangolin and encouraged by my fictional friend: broom, I decided to make a roguelike that incorporated a lot of ideas and themes from the world of audio synthesis. I realized from the start that the problem with this would be that fans of audio synthesis might be critical of the way I had applied the ideas of synthesis to the game, and liberties I had taken in doing so, while people who knew nothing about audio synthesis might be confused and turned off by the ideas in the game. Nevertheless I had to try.

Another influence was games by Michael Brough. I was amazed at how games like 868 hack had non-deterministic damage and tiny, non-scrolling maps and yet managed to present the player with a deep and complex playing experience with tactical possibilites. I decided on an 8x8 playfield, actually bigger than 868 Hack's 6x6, but matching the size of the Novation Launchpad and similar MIDI controllers.

Unique/rare features

The game is designed to look like a synthesizer and the game's features all revolve around that conceit. Sometimes that is contrived and I'm not happy with it, for example the player's hp being called "master volume". It just doesn't fit in well. Where the features do work in my opinion are the time system, which is a grid of "micro turns" or beats which considers all events happening in the same beat as occurring simultaneously, and the deterministic way damage is determined for you and the enemies, which is via waveform style graphs that undulate up and down meaning you have to time your attacks on the beats to avoid doing damage to yourself.

Another unusual feature is "effects". These are coloured squares on the floor which have various effects depending on their colour, for example double damage, or convert damage to healing. If you or a mob attacks when standing on an effect they get the benefit of that effect. This was inspired by various virtual instruments (VSTs) that use balls bouncing round a grid in order to make procedural music. Nova3 is a good example of one. The effects move at different speeds and bounce off walls, playfield edge and other effects.

All the sound effects in the game except one are generated by usfxr. The aim was to have the player's and the mobs' basic attacks sounding like the waveform they are using. This has been implemented but isn't that successful.

Normal features

  • The levels are 8x8 and don't scroll. They are inspired by real world devices like the Novation Launchpad.
  • The graphics in the playfield are 16x16 sprites with no animation. Sprites both larger and smaller are used to draw the interface to resemble a real world synth.
  • The text in the game is by a font by me, graspee. It's called "Wednesday" and was designed one time we were having work done on the house and the internet went down for a week.
  • There are six different type of mob in the game, called glitches. Four of them have unique behaviour while the other two are the traditional "fast but weak" type and "strong but slow" type.
  • There is always on a level: an exit, a random number of patches (basically upgrades both you and mobs can use), random number of walls, random number of effects (see special features).
  • The player transitions to a new level on going through the exit.
  • There is no FOV. Walls simply block movement.

Assessment

  • I got nearly everything I wanted to do finished except for resolution options and music for the title screen.
  • Overall I'm extremely happy with the game I created and I'm really proud of it. In 2013 I was entering 7DRL for the first time and my game, despite having a gimmick I still think is good, lacked a lot of features; in 2014 I again was pleased with the gimmick but I didn't get everything fleshed out and finished off the way I wanted; this year I finally managed to do everything on my list that mattered, although I was worn out with the mental effort at the end of the week and I estimate I had put in about 100 hours.
  • My procedural audio system didn't work as well as I thought it would. It needs work to generate better noises for attacks. Some reviewers didn't even realize it was there. Other people commented that the sound effects for things like game start and game over were too loud.
  • The game did turn out to be as complex as I thought it would be, and it did put some people off, but others liked the game for it, so I'm happy overall. I feel the instructional video and web page cover how to play the game well and anyone who puts the time in can learn how to play the game.
  • I think the tactical gameplay worked out well and fairly balanced although the type of mobs you get and their placement at the start is random and can really help or hinder the player.
  • I think having a set number of levels and a score might have worked better than the infinite levels- "how far can you get" mechanic, which always seems a little lazy.
  • There was a danger that the player could get a really good waveform for their attack and/or force the mobs to get a zero damage waveform, which unbalances the game. Because of this I made the waveforms reset every few levels, which I think worked well to eliminate this source of unbalance.
  • There's an exploit though where you can boost your hp up to massively high numbers if you can be bothered to repeat the same actions over and over. This is something which would be looked at if I developed the game further.
  • Also the jelly type mob which has a certain chance to "split" suffers from the problem that the more times it splits and so the more of it there are on the level, the greater the chance a jelly will split, so the number of jellies can spiral out of control a lot faster than I would like and create a situation the player just can't escape from because jellies are "born" as fast as they can be killed.

Fun Facts

The feature where the glitechs (mobs) can overwrite the level exit, forcing you to kill all the mobs to respawn an exit came about through a combination of a bug and testing. I was testing how fast the player could keep diving into the exit, worried that the player would never enter combat and just rush for the exit each turn, since the measure of success is level reached. A bug caused the mobs to overwrite the exit if they moved on top of it and I realized it wasn't that easy to just dive, dive, dive when they could do this so I left the behaviour in and added a new exit spawn on killing all the mobs.

Broom is mentioned numerous times in promotional material for the game but unlike Sucker he does not appear in the game.

Moop ("moop is bear") was originally a daily silhouette on twitter. This is a daily sprite drawing exercise on twitter where you are given a silhouette and have to draw pixels inside that outline to create the drawing it suggests to you. It's part pixelart practice and part Rorshach test.

Versions and platforms

Synthesizer is written in C# using Unity 5. A binary is provided for Windows, Linux, MACOS and there is an online version. Source code is not yet publically available.

Game related links