GDR Forum Index
Podcast Podcast
Dev Dev Logs
Search Search
RSS RSS
Register Register
Log in Log in
Reply to topic GDR Forum Index -> Game Developer's Refuge -> Snakes without Brakes - browser game - now with teleporters! Page 1, 2  Next
View previous topic :: View next topic  
Author Message
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Fri Sep 16, 2016 3:55 pm    Post subject: Snakes without Brakes - browser game - now with teleporters! Reply with quote

All levels now available @ www.snakeswithoutbrakes.com!



A damned web-based puzzle game. One hell of a game!

So far, a little bit more than 30 levels in the oven. Damned hex of the overly challenging levels, my design is suffering, but they are some damned fine levels, challenges worthy of the most heathenous foes.

Speaking of vexations, the hell of feature creep tried to entangle me today. A terrifying creature, the creeper, but he whimpers at the mercy of the great terror, defying the web, embracing temptation, and incorporating the new ideas without the downfall of dismantled codebases or ruined timelines.


Edited by Diablo on Wed Oct 12, 2016 4:01 pm; edited 6 times
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Sun Sep 18, 2016 4:04 pm    Post subject: Reply with quote

I added two new programmatically complicated plot devices yesterday. Damned satisfied with how they turned out both syntactically and synthetically, however the resource cost involved in implementing these new implements meant that I barley had any mana remaining to summon new levels, only got a couple levels out, damned good levels nonetheless. Sunday offered me a modestly fruitful mana potion, as the level count climbed modestly. Soon vermin, I will wrap base level production stage and move forward.

Notwithstanding the potential arrival of bug issues concerning either the newest implements or older implements' implemental interactions thereof, core gameplay programming is complete. The interesting status of a browser game, though, is that it can change very dynamically. Each visit to the page essentially downloads the latest patch, making the addition of any number of new implements virtually unimpeded.
View user's profile Send private message Visit poster's website
timothy.goldsmith
Newbie

Joined: 19 Sep 2016
Posts: 1

PostPosted: Mon Sep 19, 2016 4:26 pm    Post subject: Reply with quote

Attention: L. Diablo,
and others to whom it may concern,

I am writing to you on behalf of People for the Ethical Treatment of Animals (PETA). As a lifelong advocate of animals' rights, I forthwith have taken an immediate position of interest in the development of this videogame ("the game").

Before I begin, I will provide the fullest disclosure as required by governing law: I descend from a prolific lineage of snake handlers. For numerous generations, my line has marched at the forefront of snakes and the rights and privileges thereof. Consider this a sworn testimony in fulfilment of all contractual bylaws in the realm of disclosure.

Urgently, I have reviewed the available material for Snakes without Brakes, and I have compiled a modestly extensive list of potential unalienable rights violations. As you provide more information and documentation in regards to this project, I will dutifully update and revise this list as it pertains to your treatment of the snake population at large.

Understand, Mr. Diablo, that any failure to adhere to the documented standards and rights of snakes may and will result in aggressive acts of activism, and I shall endeavor inexhaustibly to shine a terrible and staggering light upon any injustice you bring upon the snakes within this game.

With respect,
Timothy Goldsmith VII
Snake Activism Division
People for the Ethical Treatment of Animals
_________________
www.peta.org/donate thank you
View user's profile Send private message Visit poster's website
0xDB
Developer

Joined: 26 Dec 2005
Posts: 1666
Location: Your consciousness.
PostPosted: Mon Sep 19, 2016 10:04 pm    Post subject: Reply with quote

Welcome to troll account #1 vs. troll account #2. Boring.
_________________
0xDB
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Tue Sep 20, 2016 3:43 pm    Post subject: Reply with quote

Quote:
Understand, Mr. Diablo, that any failure to adhere to the documented standards and rights of snakes may and will result in aggressive acts of activism, and I shall endeavor inexhaustibly to shine a terrible and staggering light upon any injustice you bring upon the snakes within this game.


Damn you, Goldsmith! You're blighting my thread! In any case, of law or otherwise, what may or may not happen to the snakes duringi development, testing, and beyond is not within my control.
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Tue Sep 20, 2016 3:47 pm    Post subject: Reply with quote

I entered in the depths of hell, otherwise known as windows, to make a short recording of the basic gameplay. Damned chain of conversions, from using one product to record a (terribly oversized) avi, to another to compress the avi to a viable size, to another website that converts avis to gifs, but for illustrative purposes, I consider it acceptable.

Damn this gif! Continue onwards for better quality samples later in the thread!
video1b.gif


Edited by Diablo on Wed Sep 28, 2016 4:43 pm; edited 1 time
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Tue Sep 20, 2016 4:06 pm    Post subject: Reply with quote

As this is a development log, I wish to go into a little bit of technical detail on file formats.

By the way, damnation!, I left out the one line of code localStorage.setItem that would have saved my completion data for each of the levels. I have wrapped initial level production, and I had planned on using that data to mete out difficulty ratings for each level, and thereafter to determine optimal level sequencing and/or additional level creations to balance the difficulty wave.

The brunt of recent development centers on the level select dialog. Let's take a quick look at this:



I am very pleased with the turnout for this dialog. Tonight's serving of charred humans will taste better than ever. However, populating this dialog mandated that I commit to creating a level index of some sort.

Individual levels in the game are saved as plain text JSON files. The format is terrifyingly straightforward: title, intro message, snakes[], gems[], you get the idea. When time came to put together a master record of levels, I created a small function buildLevelIndex() that loops through all possible levels. (This was easy enough, as the level names are 0.1.json, 0.2.json, ...) After retrieving each file via an AJAX call, I parsed out the title, difficulty, etc. and saved it into an overall list, that tracks all of the game's levels. levels.json, or something like that.

When the user requests the level select screen, a single AJAX call retrieves that master list, and then uses it to populate the dialog itself. Each level has a "record key," which is used by the population routine to query localStorage for previous completion data on that level. If the record data exists, then those columns are successfully datafied.

Each table column across each row also contains a simple rel attribute for sorting purposes. Consider the difficulty column; the text string is converted to a simple integer by a reverse lookup. The user chooses to sort via the dropdown, the dialog removes all table rows, sorts them using a custom .sort() function that compares the appropriate column's rel attribute, and then the dialog re-parents the rows in the properly sorted order.
View user's profile Send private message Visit poster's website
Sirocco
Moderator

Joined: 19 Aug 2005
Posts: 9454
Location: Not Finland
PostPosted: Wed Sep 21, 2016 2:44 pm    Post subject: Reply with quote

I like how you've reused some (or all) of the UI from your recent Lode Runner game.
_________________
NoOP / Reyn Time -- The $ is screwing everyone these days. (0xDB)
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Wed Sep 21, 2016 3:51 pm    Post subject: Reply with quote

Sirocco wrote:
I like how you've reused some (or all) of the UI from your recent Lode Runner game.


I specifically remember getting a tip from you on positioning numerical values in the corner, it works damned fine, I threw it into my bag of tricks. I need all the hellp I can get with this stuff.
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Wed Sep 21, 2016 4:19 pm    Post subject: Reply with quote

Not a hell of a lot of to update on in this iteration of the devil log. I've re-completed most of the levels for the difficulty rating project, but I still need to finish them off. Additionally finished tuning up the level select dialog, hooking up the sort order dropdown and respecting existing preferences when loading a different level set.

In lieu of meaningful developmental progress, I'll defer to the topic at hand, look and feel of the game.

The visuals of the game are clearly minimal. Originally I was simply using color fills. The "dark" parts of the level did not exist in the first iterations of the game, I believe adding them makes creating more interesting shapes of levels, instead of having perfectly square levels every time.

When a level is loaded, each wall tile is assigned a random rotation and opacity deviation, within a narrow bound for obvious reasons. This helps to mitigate the monotony to an extent, perhaps introducing also a feeling of chaos into the arena. I apply a simple pattern of greyscale deviations to the floor tile.

My primary motive for adding spacing between each grid tile is aesthetic. In conjunction, though, I expect it to make the gameplay easier to parse as well, particularly when trying to count the distance you need to travel with your snake.

Adding as much damned animation as possible was a priority here. Almost every object in the game has some element of idle motion. The weaving of the snakes helps them to stand out to the player, avoiding some potential "where is waldo" conflicts. The motions of the assorted puzzle elements hellps them to stand out as well, ensuring the focus is on solving the puzzle rather than looking for the puzzle.

Speaking of accursedly important visual concepts, the border that appears around the snakes is mandatory. This was an interesting programmatical exercise, although it obviously amounted to a simple directional check (previous left, next down? it's a curve).
View user's profile Send private message Visit poster's website
0xDB
Developer

Joined: 26 Dec 2005
Posts: 1666
Location: Your consciousness.
PostPosted: Thu Sep 22, 2016 12:57 am    Post subject: Reply with quote

Sirocco wrote:
recent Lode Runner game
Synapses fired. It all makes sense now.
_________________
0xDB
View user's profile Send private message Visit poster's website
Sirocco
Moderator

Joined: 19 Aug 2005
Posts: 9454
Location: Not Finland
PostPosted: Thu Sep 22, 2016 4:15 am    Post subject: Reply with quote

Quote:

Adding as much damned animation as possible was a priority here. Almost every object in the game has some element of idle motion. The weaving of the snakes helps them to stand out to the player, avoiding some potential "where is waldo" conflicts. The motions of the assorted puzzle elements hellps them to stand out as well, ensuring the focus is on solving the puzzle rather than looking for the puzzle.


This is one of the little "secret sauces" to making a game look polished. Animate anything and everything, but not to the point where there's visual fatigue from looking at the screen :D
_________________
NoOP / Reyn Time -- The $ is screwing everyone these days. (0xDB)
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Fri Sep 23, 2016 4:31 pm    Post subject: Reply with quote

Hello, minions. I am in a rather pleased mood, as a result of some development geared toward mobile users.

Yesterday, I commenced upon the righteous path of sound effect work. I do not require too very many sound effects for this game, this is good because my workflow via bfxr.com looks about like this:

Code:
press randomize 20 or 30 times until I hear something "kind of good"
fiddle with all the damned sliders until i make it at least 30% worse
battle cry for increase change of critical mutation
mutate a few times, get a result worth exporting to wav


I figured I'd share a screenshot of some of the new sound effects in action:



As illustrated, I insist upon having a small number of variations to combat aural fatigue. I do not want the download size of the game to become excessively large, so I do not have 20 versions of each sound. It is a damned balancing act. And as usual, I am taken aback and the overall enhancement of the gameplay experience, that you get just by laying a few damned sfx on your game.
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Sat Sep 24, 2016 11:40 am    Post subject: Reply with quote

This morning I sorted out the remaining issues with mobile controls. The chief demon, was that I needed to disable the ability of the user to change page scaling, it conflicts with the position: fixed that I employ for the menu and status bars at the top and bottom of the screen, disrespectfully.

Drag and drop control of the snakes themselves also needed some custom tooling here. On a desktop browser I rely on the mousedown, mouseup event to determine when you have selected and released a snake. Because I do not use the click event explicitly, you can drag the snakes in a single click, rather than clicking once to select a snake and then twice to move the snake. It is very much like working nothing but half days, in a way, which is perfect. However, a mobile device did not cooperate, did not trigger mouseup in the same way after a finger drag. (I think it might have sent the mouseup event to the original table cell clicked, but I'm not certain.)

Enter, then, the touchstart and touchend mobile events. The touchstart is the tablet equivalent of a mousedown (in my ledger, anyhow), and it behaves as expected. I attach a touchstart callback to each cell, and if you have touched a snake, then it becomes eligible for movement, either by the laborious second click, or by a drag and release. Consternably, however, the touchend event is directed to the widget on which the touchstart event occurred, without any regard to how far you have dragged before releasing.

To resolve this, I had to get a little bit dirty. I listen for the touchend event on the "snake is here currently" cell. When received, I request cell references for each non-diagonally adjacent table cell (NWSE), and I calculate the absolute screen coordinates of each of those cells. From there, I need only perform a simple collision check between the "mouse position" (in this case, the absolute screen location of the touchend event) and those 4 neighboring cells. This approach is not quite as elegant as I would like (preferably I would receive touchend event on the destination), but it's not my call.
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Sat Sep 24, 2016 5:46 pm    Post subject: Reply with quote

I don't recall when I added damned screen wrappin to the game, but it was a pretty early decision. You just have to make sure to use a general purpose getCellByOffset(dx, dy) function that automagically takes the out-of-bounds index lookups and moves them to the first/last index.

I mentioned previously that darkness didn't exist in the first iterations of the game, it made a great addition to be sure, but it also introduced visual ambiguity in regards to , am I going to screen wrap there, or what? It's black as hell, that must be the edge of the level, but it won't let me screenwrap, what the hell? You can only screenwrap at the literal edge of the level, and darkness is just as much of a wall as a wall, but it's unfair to expect a player to so easily discriminate that which the level making sadist sees as so much obvious.

Thus I have introduced screen wrapping guides, which will visually cue players, hey, i can screen wrap there, eliminating the unwanted visual ambiguity, and at the same time giving them the visual cue, reminder that screen wrapping is indeed possible. No need to make a secret about it, screen wrapping is not designed to be an easter egg.

View user's profile Send private message Visit poster's website
Sirocco
Moderator

Joined: 19 Aug 2005
Posts: 9454
Location: Not Finland
PostPosted: Sun Sep 25, 2016 8:13 am    Post subject: Reply with quote

I remember playing Pac-Man for the first time and thinking how utterly novel it was to be able to wrap to the other side of the screen. It, too, made no secret of this mechanic :D
_________________
NoOP / Reyn Time -- The $ is screwing everyone these days. (0xDB)
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Tue Sep 27, 2016 4:26 pm    Post subject: Reply with quote

Damned close to putting out some playable levels on this project, humans. I considered rushing something out today, but Baal talked me out of it. The mark of his firebrand still stings a little bit.

I've been spritzing up the UI. I really needed a non-generic font, I will tell you this though, misery is when you go to 1000000freefonts.com and cycle through page after page of insufferable font hell, wondering cursedly to yourself, who would ever use these, you can't even read the damned letters. I eventually settled on one that works alright, it is not completed reviled. I also experimented with slightly askewed elements for a little bit of flair, it gives the screen a little bit of life and personality, and I think it also makes it look more like "i am important, read me!" than a more orderly counterpart.

View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Wed Sep 28, 2016 4:41 pm    Post subject: Reply with quote

Damnation! Level 1-9 are now ready to play!

http://www.snakeswithoutbrakes.com/ - play in your web browser, now!

This first level set introduces the basic concepts of the game, where you must use the snakes to collect all of the gems in each level.



tested desktop browsers include:
chrome (best performance, the javascript engine is better I guess)
firefox

tested mobile devices, browsers include:
amazon kindle, silk
a larger tablet in chrome, IIRC
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Thu Sep 29, 2016 3:51 pm    Post subject: Reply with quote

v0.9.01 now online

Code:
snake controls now allow you to click any cell in the direction you want to travel
 
slightly altered 0.4, changed title, rewrote level intro message to better explain that darkness is like a wall, not dangerous
 
increased opacity of overlays to reduce conflict with the noise presented by the level itself, in the background
 
added special thanks and changelog sections to help menu
View user's profile Send private message Visit poster's website
Sirocco
Moderator

Joined: 19 Aug 2005
Posts: 9454
Location: Not Finland
PostPosted: Fri Sep 30, 2016 4:24 am    Post subject: Reply with quote

Great presentation, and it's a nice and clean web app. The aesthetic from your previous games comes back into focus (I have no complaints there).
_________________
NoOP / Reyn Time -- The $ is screwing everyone these days. (0xDB)
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Fri Sep 30, 2016 2:13 pm    Post subject: Reply with quote

Sirocco wrote:
Great presentation, and it's a nice and clean web app. The aesthetic from your previous games comes back into focus (I have no complaints there).


Thanks, human!
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Fri Sep 30, 2016 2:15 pm    Post subject: Reply with quote

A new level set is available!  Level set 1.1-1.9 introduces spinning blades that kill snakes who run into them, and also pushable blocks, the snakes can push them around the level.



These levels are a little trickier than the warmup levels, but most of them are still not too hard.  Not until the last one, anyway......... :)

If you played 1 or more of the previous level set, the game will try to automatically start you on the first level in this new set, you can still go back to the others using the "levels" menu.  (Also try this menu in case the code doesn't properly detect that you already beat one or more of the previous level set.)

Like last time, the levels are playable at snakeswithoubrakes.com!
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Sun Oct 02, 2016 4:07 pm    Post subject: Reply with quote

I have been getting some damned helpful feedback on this game.  One of the main areas of contention has been the sections of darkness, where some humans might think of the dark as a dangerous thing, or something that functions differently than a wall.  It's certainly something I wanted to work on.

To make the level layout easier to figure out at a glance, the places you can and can't go to or screenwrap to, I'm working on adding explicit perimeter walls at the edge of the majority of the play area.  I've got a screenshot of the before and after of one of the levels, the addition of the various transition tiles makes it look a little cleaner, but more importantly it also makes it much more obvious as to where you can and can't go to.

View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Tue Oct 04, 2016 3:45 pm    Post subject: Reply with quote

Another damned level set is here!  This level set (2.1-2.9) adds two new objects, arrows and tunnels.  A snake that collides with an arrow block is forced to change its direction, which can lead to terrible hell for snakes, and tunnels will only allow a snake to move through them on one axis, otherwise the snake hits the side of the tunnel and stops.



There's also some gameplay additions and fixes.  Holding down ALT will highlight all of your snakes so you can identify them more easily, and also, if you click on a snake at the very edge of a level, you now get a move target on the edge of the level you can screenwrap to.  Before you had to move the mouse to the other side of the level to complete the screenwrap, that was a hassle.  Last but not least, every level has been revised to include better wall markings, with new corner walls and half walls, so you know exactly when you can or can't screenwrap to a certain location.

All sales are final, and everything is now live at snakeswithoutbrakes.com!
View user's profile Send private message Visit poster's website
Diablo
Contributor

Joined: 19 Nov 2015
Posts: 336
Location: :( :(
PostPosted: Sat Oct 08, 2016 11:34 am    Post subject: Reply with quote

Thanks for coming back, humans, there's another level set ready to play!  In these damned levels, you meet the new fragile block, which is a block that will fall apart when your snake runs into it.  You also can meet the multicolored snakes, they're snakes with 2 heads, except each head is a different color!  What the hell! Not only that, but there are also special color converters on some levels, and your snakes will change colors as they pass through them.



If you have played the game before, then you will be automatically started on the newest level set you haven't tried yet, and you can also use the level select menu (on the top of the screen) to pick whichever level you want to start on.

The levels are online now at snakeswithoutbrakes.com!
View user's profile Send private message Visit poster's website
Reply to topic GDR Forum Index -> Game Developer's Refuge -> Snakes without Brakes - browser game - now with teleporters! Page 1, 2  Next

Use this link to get a Sign-On Bonus when you get started!

All trademarks and copyrights on this page are owned by their respective owners. All comments owned by their respective posters.
phpBB code © 2001, 2005 phpBB Group. Other message board code © Kevin Reems.