Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

About this blog

Developers blogs, 

Entries in this blog

Android Release!!: Week 22 of #8WeekGameDev. FlipTiles:Runner

Released Android Version Today! Yeah.  It is free, go get it here on the android store.
 Mainly I feel relieved as this week 22 of an 8-week project, but still pretty happy with how things went. The iPhone release is coming but Apple is much slower at reviewing and approving each step than Google (business days vs hours or seconds)  The promo videos and screenshots were the last things to be done.
 On a Mac, iMovie will not create movies of the resolution that Apple wants and apple wants, up to three videos in three resolutions each.
 Same with up to 8 screenshots.
 Google also wants screenshots and a YouTube video but these are pretty standard and easy to make. I used DaVinci Resolve 15 (free, available on OSX and Windows) to edit the videos and take stills from the videos for the screenshots. It also can change the playback speeds of parts of clips, this was useful for showing lots of features in my party management screen but only taking a few seconds of Apple's allowed 30-second clip. Apple wants screenshots over 2048 resolution and DaVinci Resolve 15 does not handle formats that large so I made 3/4 resolution movie, choose my still and scaled them up in PhotoShop. The videos I made with Unity Record package from the package manager. It is a preview package and you should not make builds with it installed. I could not make Android or IOS builds with it installed and had some strange bugs that only occurred after playing a lot with recording on. Although they could be real bugs, I would advise not making any builds with it installed. If you turn both stills and video record on at the same time the gameplay is very slow, but its time delta and movie frame rate will be fine.  For this was a handy feature since I am not that good at my game and I wanted to show high levels when the game has lots of enemies on the screen. the slowed time let me get all features in one take before dying.

Tutorials: Week 16 of #8WeekGameDev. FlipTiles:Runner

Sorry, not a tutorial on game design but tutorials in a game. This Week was spent making the tutorial for FlipTiles:Runner The first Tutorial introduces the Party Management screen and changing party leader. This has 4 steps. 1) Press the party management button to change screens. 2) Select a new Character. 3) Assign as party leader 4) go back to the main screen to play or Press Help. Followed by on how to change the theme, which changes the board. This almost the same as the change leader tutorial but has a ne etra step of selecting a new theme before selecting a new character.
A small popup to let people know about the three speeds of play.
A couple of large panes to block players view of theme they cannot play yet, with instructions on how to get access to the themes.  The first one is explaining that a theme cannot be played until you have a character in the theme.  The second on blocks the player from seeing characters in a theme until they have a character in the previous theme. Although it does not look like much, getting the logic right to show the messages when the players had played enough and to keep showing them until the player took the actions, took a while to get right. I did not force players to take the action if they did not want to, also if the had already taken the action I did not show the messages. For example, after playing twice I show the change leader tutorial, but if the player changes leader after playing once the tutorial will never be shown. Also if after changing character the player does not play with a new character the tutorial shows again.

Toys: Week 17 of #8WeekGameDev. FlipTiles:Runner

Everyone loves toys. So I made a toy theme. Not much coding this week, only one new feature and it was just an extension not a completely new feature. 
I added Avatar Rewards for getting over 100 on a level.  First Toys. The main change is using straight lines for the corners, not 1/4 circles. This makes playing much easier. I guess we are better at following straight lines than curves.
After passing 100 rows of tiles I added an avatar from the next theme as a reward. Going from top to bottom the images below show. 1) First placement, the new avatar is hidden behind score and buttons. 2) Better placement. 3) Some avatars are too small. 4) Adjusted size. 5) Testing Avatar comes up from below.
Finally, I made a screen in the editor to show all the Avatars and their powers in one place.  This made reviewing settings much easier. In this screenshot Dwarf theme avatars are missing.

More ships: Week 15 of #8WeekGameDev. FlipTiles:Runner

Sorry for the lack of updates for the weeks.  I will try and catch up over the next week ( and hopefully release the app in the next 7 days) also. This weeks topic is more ships. Before working on Line Ships I cleaned things a bit by adding black semi-transparent backgrounds to buttons so progress markers behind do not make the buttons hard to see. Top of the image is what was like, the bottom is the more readable version.
Made the theme image for ships on the party screen.

 I changed the materials for lots of ships to make them brighter. The original asset was going for a darker look but my scenes don't have a lot reflected light so a brighter base makes the ships stand out.
I found a bug in the drawing of green edges on tiles to show where new tiles will come on. When a 3x3 group of tiles was flipping some edges would be marked green. It looks cool but is a bug.
Found and squashed another small bug with Personal best rewards being given at the start of levels instead of when a new PB is made. I gave a 5-minute presentation at Tokyo Indies and found out.
  When I am coding and designing time flies.
  Now when blogging time flies - although I still managed to get behind on the blog.
  Talking in front of an audience time crawls.
  The title of my talk seemed to be the highlight.
  "Week 15 of an 8 week project" got a laugh dry humour seems to work. I also got a few new playtesters

Progress: Week 14 of #8WeekGameDev. FlipTiles:Runner

This is Week 14 of an 8 (maybe 16?) week game dev. This week was more work on giving players a feeling of progress in the game. Also, some cleanup of animation for ships. Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner. iPhone Beta is available on  TestFlight at 
  https://testflight.apple.com/join/IJDl9FXC Ships now change attitude(up/down facing) as well as right/left facing. Also, the ships angle of change is on their long axis, as opposed to humanoids who just spin on their long axis. This means sudden changes to direction look jerky. So I had to change the movement interpolation code and add some smoothing to facing changes. Later I realized that smoothing humanoid's turning made them look strange, moving sideways in the middle of sharp turns. So I made turning smoothing amount a variable. Now humanoids turn a bit slower than before but it looks more natural. I added billboards to give a feeling of motion and to give progress rewards. Simplified score down to just the distance board moves forward so players can see how far they have gotten. Started with just putting a billboard under the board to see how it looked.   Next, I added signpost on top that goes away when the player reaches the sign. The color also changes to show this point has be reached. When player reaches this point again in another session the sign will already be showing the reached color.   Bonuses are now shown and diamond rewards are given for making certain distances and avatar being used. For example, the first time a player reaches each of these distances, 20, 80, 125, 350 playing with an avatar from the peasant theme you get a one diamond reward. You also get the rewards the first time you reach these distances with each of the other themes ( Polyhedral, Chess, Ships, Dwarf ). Similarly, there are bonus based on Avatar, play mode (slow, regular, fast).

 All this is set in the editor inspector.
There are also four personal best progress billboards, one avatar based, one theme based, one play mode based, and an overall best.  The distance for these is increased each time the player achieves them. I had some problems getting the timing right on the angled board. They are triggering to late in the gif below. Also, at the End the week there was still a problem that they make buttons unreadable when they pass behind them. I spent a lot of time fiddling with UI scalers settings to get this right, because I did not understand how they worked at first.
Made a promo image and promo video for the upcoming Tokyo Indies event. Also, the video at the bottom was made for the talk. It covers playing many of the themes in a row. I have gotten into the habit of tweeting every screen change. I have added taking a screenshot of whatever I am testing, moving it to the week's folder and renaming the file, to workflow. Then going through the folder and scheduling tweets of the images, when I need a to rest my brain from thinking about some complex code logic or what order a set 3D rotations should be applied in to get the correct result. Hopefully, I can build my Twitter reach and get more playtesters, and more players at launch. I don't think my twitter campaign will have much effect on this game's launch but maybe the next or the one after. Check out @AntHillPlan to see what I am doing.    As always thanks for reading to the end, and any feedback to the blog or the beta app is appreciated.  Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner. iPhone Beta is available on  TestFlight at 
  https://testflight.apple.com/join/IJDl9FXC   Entry Actions  Report Entry  



Feedback: Week 12&13 of #8WeekGameDev. FlipTiles:Runner

This is Week 12& 13 of an 8 (maybe 15) week game dev. User feedback week, also started on another theme and tested PlayFab. I started the week by simplifying things and removed the strategy and slow game mode. Then user feedback came in.  The game is too easy, the game is too hard, no feeling of progress, not sure what is happening.

- Too hard and too easy,
 Added back a slow mode so players have a range of choices. 
- No feeling of progress, 
 Added shifting the whole board down when the player is near the top edge. Giving the feel of forward movement. Also, it means if a player is good when they reach and stay near the top, the board moves downs which brings them quickly to harder sections of the board and speeds up play a little. 
- not sure what is happening
  added new intro instructions. Also added red and green edges to show where the player should go and where to avoid. In the ship theme show about the player has to move down not the usual direction of up.  Change GameOver screen to make score bigger and easier to see.  
I started on Toy Mall as a hard theme. All the paths look very similar. This makes it harder to trace out the path ahead of the avatar. 

Another Hard theme I made is space ships. The player needs to move down instead of up, so habits from the other themes must be changed. Also, the tiles are angled 45º. I did this just because I thought it enhanced the 3D effect, but it also makes it harder for me to see which diagonal flip I want to use. If I had realised the 45º would make things harder I might have done it in a separate theme first. Lastly, I installed and setup PlayFab. I want to use their leader boards. Google and Apple both have leaderboards but then I have 2 API to deal with, more differences between builds to track and players are in separate leader board sets. Also, I am not sure if googles leaderboards work for non-Google Play android store builds. PlayFab has 25 leaderboards for free. It also has resettable leaderboards. I can then use a single leaderboard for daily challenges. For example, I can have a contest for the highest score playing the Druid avatar one day and then reset the leaderboard and have a challenge playing the Chess White knight.  For now, I just wanted to check that PlayFab works OK with Unity 2019b and that I understand how it works.
  As always thanks for reading to the end, and any feedback to the blog or the beta app is appreciated.  Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner. iPhone Beta is available on  TestFlight at 



Game Over: Week 10&11of #8WeekGameDev. FlipTiles:Runner

This is Week 10 & 11 of an 8 (maybe 14) week game dev. Game Over is this weeks' major feature. Also, a new theme, some sounds, and I learned about Google Instant Play.  Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner. iPhone Beta is available on  TestFlight at 
  https://testflight.apple.com/join/IJDl9FXC First Game Over:

This includes how you died, diamonds picked up, the score for this character, and game mode (regular). Also, your various best scores. This was not my personal best or my best regular game but beat my previous best in the Peasant theme and with a Druid. If internet connection is working there will be a button beside the diamonds you can push to double your diamonds. It is now possible to double diamonds by watching ads. So far that is the only monetization I have. You can double up to 3 times in a row (8x) there is a duration timer on the "watch-> 2X" button and when it is over the message goes away and you receive your diamonds I added a chess theme to show off the 3D effect better. Also added sound FX when things happen. Here is the enum public enum Key {         GatherDiamonds,         Fall,         Killed,         BumpScore,         WallKilled,         EnemyKilled,         WallBounce,         EnemyBounce,         PowerRotate,         PowerSpecial,         PowerAreaRotate     }
Basically when dying, killing, using a power, scoring or picking up diamonds there is a sound FX.
I also added a heartbeat in the background with this asset.  In the regular game, it starts slow around 50 bps and then increases with the avatars speed up to about 130. Definitely increases the tension when playing.  Read a bit about Google Play Instant (GPI). The instant app needs to be under 10MB initial download with another 15MB of downloads after OK. Played around a bit and I think I can get what I need in Unity engine around 7MB plus some amount for GPI SDK leaving me a couple of MB for the game. I think I could fit the initial level in 2 MB. The additional 15 MB would cover pretty much the whole game. Currently, the game is 45~50MB but that includes 13MB of unneeded Unity Engine and textures at 2Kx2K size also no texture atlassing or any other special compression. That would probably add a week or two to do it properly including using all the features GPI SDK. If I had known about GPI at the beginning it would have been much easier to remove unneeded Unity packages before coding. When the game is complete I will see how I feel. Maybe I will launch on Apple and non-Google Android stores first, then try to make a GPI version. As always thanks for reading to the end, and any feedback to the blog or the beta app is appreciated.  Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner. iPhone Beta is available on  TestFlight at 

Clean Up: FlipTile Runner Week 8&9

This is Week 8 & 9 of an 8 week game dev. Already past scheduled completion time. Time to re-assess my plan. Looking like 12~14 weeks is more realistic. Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner. iPhone Beta is available on  TestFlight at 
  https://testflight.apple.com/join/IJDl9FXC Spent most of my time doing things that did not get finished earlier or should have been done earlier. Release beta for Android on Google Play. Got some good feedback quickly. The player felt frustrated by bouncing at the top of the screen.  So I will make the visual and audio rewards as well as scoring points for doing it. Also will try shifting the board down very fast when they reach the top tiles. Which board tiles were dangerous was not clear so I want to add green edges at the top and red edges at the bottom. This will take some thinking since the board can be placed on an angle and move at a different angle, making it tricky to define the top and bottom edges. All these are for future weeks as I just added them today to my list. Things that did get fixed up this week were new wider dwarf paths so dwarfs can fit on the path and not hit their heads going under arches. Some other new tiles so themes look different from each other. And played around with other tile ideas. Added 2x2 tile flipping. The code to flip NxN rectangles of tiles was already working but the code to generate icons was not written. This also meant handling change where the center of the flip was compared to the character. Finally, data structures to store this in JSON friendly classes and allow input of all these options in Unity IDE was needed. Please check out the Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner and let me know what you think.



Feature Creeps: Week 6&7 of #8WeekGameDev. FlipTiles:Runner

This is Week 6&7 of an 8 week game dev. A link to blog post covering this weeks development. Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner . iPhone Beta is available on  TestFlight at 
  https://testflight.apple.com/join/IJDl9FXC   This weeks goal was monetization code and UI, the reality was feature creep took up most of my time. Not going to make 8 weeks, more like 9 or 10.  It started with a simple change. Cross tiles would look better if one track arched up and the other arched down. That did look cool I thought, but with the straight on orthographic camera, you can only see the arch when the tile is flipping. OK, I'll just move the camera to the side a bit and turn it back towards the board. Not really working. Instead, I'll leave the camera still and angle the board. Yeah, that looks good. But now a rectangular board does not fit on the screen. So I need a new board generator that adds all tiles that are on screen and only tiles that are on screen. This broke board shifting, destroying tiles at the bottom only, and adding tiles as a row at the top. It also broke bouncing at the top. I have not fixed this yet because what is top is not clear. Instead, I made it bounce everywhere for now. I will try to find a better solution next week. It also broke empty tiles as an obstacle. I also made the board angle and size dependent on the theme of the leader. Since my little feature of arches had already taken over the week, I might as well finish it. So I made the direction of the board shifting a variable and added an indicator at the top. I also explored generating tracks at runtime using Mega-Shapes. An asset for generating tracks from splines and lots of control from code. I ran out of time before this second feature creep could get very far. I did get some work done on a diamond currency system. You can collect diamonds and buy new random characters. A new board layout with 3 characters on screen at once for choosing a random character. I wanted to show the new character on the party selection screen. But working with setting UI controls at runtime from code is still a pain. I go it to work but needed lots workarounds for cases like objects awaking the first time and clicking on them from code in the same frame. I ended up making sure stuff had woken up before trying to click on it from code. This needed a new messaging system to display messages to the player. The messages above are showing, gift in 4 seconds, the "Get Gift" message with button, 11 diamonds to go (until you can spend them) the "Get Character" message and button. You get free diamonds every 4 hours of real time. This means tracking real time during and between plays. C# sucks saving timestamps. If you want timestamps to always work you want them all in the same base time, say UTC. MS documents show you how to convert to and from ISO 8601 are wrong they read the ISO string for UTC and ignore the Z so treat it as local timezone.  Use "r" format. it uses "GMT" in the string, not Z, and DateTime.parse handles this properly. All your DateTime objects will kinda get UTC.  Lost about 5 hours because I assumed MS docs would not be buggy and almost every google search just told me to do the same thing as the MS docs. 
  Unity 2018.3 has nested prefabs and variants which is nice for making a skinnable flexible UI.  This lets you make more component prefabs such as a TextMeshPro prefab so the sprite asset only needs to be added once. Or my green outline on buttons - so I can change all buttons at once.
I wish I had realized this week one.  I was using crtl-D out habit to copy prefabs for the power cooldowns.  Crtl-D does not make a variant just an unlinked copy. Variants inherit from their base prefab so it makes changing all power cooldowns much easier. So I spent time on this also. Please try out the game on TestFlight, feedback is always welcome.  



Help 3x3: Week 5 of #8WeekGameDev. FlipTiles:Runner

This is Week 5 of an 8 week game dev. A link to the PC browser version is here. This week I added 3x3 tile flips and help screens.
The new 3x3 flip looks like this in action.
Latest iOS beta version link on TestFlight  https://testflight.apple.com/join/IJDl9FXC  Android bete at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner . There were lots of edge cases to think about in the design and code. Such as flipping tiles off the board area and flipping nonexistent tiles from off-board to on board. I just destroyed tiles when the flip moved a tile off-board. For moving time from an off-board area on to the board I made the new tiles empty. Also handling moving from one tile to another inside the 3x3 flipping area, while bouncing off edges on the permitter of the 3x3 area. The icons for the 3x3 flips have a red "you are here" dot in their centers and faint grid over them. This will be more useful if I add 2x2 or off center flips later. The flipping code is generalized to NxN but only fully test for 3x3. Similarly off center flips have been coded but I have not tested all edge cases yet. The generation of cooldown icons and buttons is not automated yet. Since making all off center 3x3 and 2x2 powers would mean an addition 88 icons I do not want to do that by hand.
The power balance system I mentioned last week is done. The red lines show how much a cooldown is increasing and the yellow mark shows that a power is at its original fastest cooldown. If a beginner is just having trouble staying alive this won't have much effect, but once a player is living past 20~30 flips using all the powers about equally become important.  
The power/cooldown game object is getting more complex.  The help screens use TextMeshPro to add icons as new glyphs. TextMexPro is included in Unity as a package, so it is not as integrated with the rest of Unity as the rest of UI but it is free and works well. Also, the documentation is separate.  It feels like I did not add many features this week but, learning how to make icon glyphs and then making them was time consuming. Same thing with all the edge cases in generalized NxN flipping code. Thanks for reading. Please try out the game on Kongregate, feedback is always welcome.



Party Power: Week 4 of #8WeekGameDev. FlipTiles:Runner

Latest iOS beta version link on TestFlight  https://testflight.apple.com/join/IJDl9FXC This is Week 4 of an 8 week game dev. A link to the PC browser version is here.
This week's focus is on new powers and a party system.   The top 2/3 of the screen is the same. At the bottom, there is now a 5 member party. On the left is the leader, who will be on the board. The next 4 members allow you to use their powers. If the members are in the same theme as the leader their powers will take twice as long to cool down. If they are from a different theme they take 4x as long to cool down. In the upper part of the display solid grey characters are already in the party so can't be added to the party. Solid black still means unacquired. The arrows are used to add a character to the party.
  new powers are
  U-turns - turn a character around but not the tile.
  kill & break - remove enemies or walls when colliding
  ghost - pass through enemies and walls.
  2x  & 3x - multiple the score.
  slow & fast - change the speed of the avatar
  At the top of the screen, I added active power icons. Powers like Speed, 2x or ghost that have a duration. I used the same cooldown design as powers.  No green box means it cannot be pressed. I sped up the slow mode from 5 to 7 speed.
Added bouncing off the top of the screen as mentioned last week this keeps the game interesting at the beginning.
I added a fix for playing on a Mac browser. Unity only uses 1/2 resolution on mac retina out of the box.
  WebGL Retina Tools 3.2 What I learned from playing this week:
I need FX for kill & break.
I need a pause and help function.
I got an idea for balancing power use. Every time a power is used it will take longer to cool down. When all powers have been used the cooldowns move back towards their original speed. Please try out the game on Kongregate, feedback is always welcome.



Graphics: Week 3 of #8WeekGameDev. FlipTiles:Runner

Latest iOS beta version link on TestFlight https://testflight.apple.com/join/IJDl9FXC This is the third of a weekly series on about a casual mobile game I will try to develop from start to release in #8WeekGameDev. This weeks PC browser demo is up on Kongregate here . This week I worked on graphics and avatar selection. I added many avatars and a system to choose them. I also changed the tiles. For the avatar selection screen, I have grouped the avatars into themes. Each theme has a number of avatars in it. Currently, themes are only used for grouping avatars. Next weeks work will be implementing features related to themes. The avatars with a solid black material have not yet been acquired yet. Also a feature for a later week. Getting the the picker UI to work with 3D models was not bad I just put the canvas on a camera, not in screen space. The overall structure of the screen code is pretty messy. I learned a lot about what works and what does not, so it will be cleaner if I need to something like this again. Setting the picked item from code was pain and I did not get it working very well. The problem is the order things run in. Most code runs in Awake(), Start(), Update(), LateUpdate() or PhysicsUpdate(). UGUI code does not, it runs in its own set of UGUI calls and you should not do somethings in UGUI code like destroying GameObjects. Also emulating UGUI events like clicks is not well documented. ExecuteEvents.Execute(button.gameObject, new BaseEventData(eventSystem), ExecuteEvents.submitHandler); I found is on Unity Answers https://answers.unity.com/questions/945299/how-to-trigger-a-button-click-from-script.html?childToView=1604638#comment-1604638
It is the second answer and works on all UI objects, not just buttons. Different avatars have different powers. Some powers are new and others duplicate the existing powers. Having a second button with the same power means not having to wait for cool down. For animation I only used basic idle, walk, jog, and sprint animations. I use separate animations for male and female characters but the female walk is pretty exaggerated. There is a problem with this combo of model and animation. When walking, the moving foot's toes go lower than the stationary foot's sole. So they go underground, maybe this can be fixed in the avatar setup, by switching from using heels to toes.  It is not really visible at the scale I am using so I doubt I will fix it.   The new tracks took a bit of setup because the old code for tiles could also change the colour of the tracks in 1/8th sections at runtime. This is not needed in this game but being able to make tiles with different graphics, easily at design time is needed. I did not have curved models for tracks so used Mega-Fiers (mesh modifiers) to bend some models 90º. The original models were low poly so I also used Cheetah3D (OSX modeler) to split some triangles so the models would bend nicer. I had the camera at 45º orthogonal but switched to 30º because the avatars look better from the side than the top. This squashed the tiles vertically, so increased the board to 15 rows from 10. 15 rows play tested better because it lets you make a mistake and then recover.  I changed the colour of the tile outline to pink from green. I am planning on having green squares used only for buttons. All of the graphics stuff is try and see. My goal was to get something up now and see how I feel about it over the next week or four.   I added three manager objects. AvatarManager to manage avatar data. PartyManager to manage who is in the party, only one avatar so far.
ScreenManager, to manager switching between gameplay and party management. I will also need a screen for acquiring new avatars. I added lots more icons. The came from icons8.com  They were black on transparent pngs. I inverted them in photoshop and am resizing them to powers of 2 for IOS compression. I added stats to track which avatar is used in each game. Yeah, I love my stats, even though I will probably never use most of them. What I learned from playing this week.
Bouncing at the top would keep the game challenging at the beginning
A play balance stat on avatars would be useful. For example, rouge is fast and has good power, so setting a balance attribute to -2 would reducing scoring by 2 for each row dropped off the bottom and each edge bounce.
Slow game mode might be too slow
  Some links The avatars are from Synty Studios 
        PolyGon Fantasy Characters
        Polygon Dungeon
Avatar animation from EveryDayMotionPack 
The tracks from   Tile and Bridge Pack  I bent the curves with Mega-Fiers - Mesh modifiers inside Unity. I increased the triangle count with  Cheetah3D  (a Mac 3D modeler)  because the original work was very low poly which is great for straight sections on a mobile but they need about 4 more triangles to bend nicely.
The avatar selection side-scrolling UI used Picker for UGUI 
The new icons (everything except the old powers ) were from icons8.com Please try out the game on Kongregate here, feedback is always welcome.



Bad Guys: Week 2 of #8WeekGameDev. FlipTiles:Runner

Latest iOS beta version link on TestFlight https://testflight.apple.com/join/IJDl9FXC This is the second of a weekly series on about a casual mobile game I will try to develop from start to release in #8WeekGameDev. This weeks PC browser demo is up on Kongregate here and a youtube version of the blog here. This week I added obstacles and three separate play modes to the game. Bad guys: There are three types of obstacles added.
1) Enemies that move along the track and when they hit you, you both bounce off each other. The basic code was straight forward. Some checking for what direction a pawn (player or enemy) is hit from. If hit from behind it does not affect the pawns movement. Also, there some working sizing colliders and checking to make sure pawns passing each other on two arcs on the same track do not collider. I did not make the enemies kill players as that would be a sudden death, which not the play feel I am going for. I am going more for a Tetris feel, where if you make a mistake you can recover if you don't panic and it is early enough in the game.
2) Walls are enemies that don't move. Very simple subclasses and setting speed to zero.
3) Empty tiles are tile without paths on them. no special code was needed for this, which was nice. For the obstacle generation I use random selection based on the idea of putting chits in a bag and choosing one. I put the chits back in the bag after each draw. For example, in slow mode, the bag starts with 6 chits for "none", and nothing else. So when I draw a chit for the first row I always get "none" and there are no obstacles. Then each time a new row is added I add chits to the bag.
 0.1 wall chits
 0.2 enemy chits
 0.01 empty chits
So for the second row of added tiles, none is still the most common chit but there a chance of an obstacle being placed on a tile. By the time the  10th is row added about 1 wall will appear in each row. By row 20 half the tiles will have enemies. The bag would contain
4 - none chits
2 - wall chits
4 - enemy chits
0.2 empty chits
This basic list of outcomes with the chance for each (FreqPair) is code from an old project so did not take much work.
I made the class serializable so I can change it in the inspector. [System.Serializable]
public class FreqPair{
        public string name; // e.g. wall
        public float freq; // e.g. 2
} I also made some extra code the limits the number of empty tile in one row, or else you could have all empty tiles and there would be no way past that row. Judging difficulty and playability is a difficult problem. So decided to put off the decision. I made three modes of play.
1) Fast - Fast movement but obstacle frequency increases slowly.
2) Slow - Slow movement but the frequency of obstacles increases quickly.
3) Strategy - each time a button is pressed the game advances one turn. During the turn the tile flips and the player and enemies move for a set amount of time then stop. All buttons are disabled when the turn is running. Also, cooldown counters for buttons were changed to advance one unit each turn. I added the 8th symmetric transformation (identity) which does nothing but does cause a turn to run. My inner mathematician was happy to see all 8 members of the group of symmetric transforms on a square represented. For each mode of play there is a  GameSettings object and obstacle generator object. This lets me set the player's, start speed, acceleration, max speed. The cooldown time of buttons. Also to set frequencies of obstacle separately for each mode in the inspector. I add the mode being played in each game to the analytics. Also, I added separate high scores for each mode to the Kongregate version. This should give me an idea of the popularity and difficulty of each mode. I enjoy the slow mode the most, it is busy enough that I have to stay focused and plan ahead, but not so fast that I panic. Fast is too fast for me but in general, I suck at this type of game, so I wanted to set the difficulty level too hard for me.  I think I may have screwed up the strategy turn length and made it too difficult. I added a green outline on the tile you are on so you know which tile is going to flip even when you are near an edge. I found out it was frustrating trying to judge which tile you are on. The green outline made the game much more enjoyable for me to play. I added a new avatar and made enemies. Now you can see why I buy artwork instead of making it. This avatar and enemies are just enough to let me see that they are turning to follow the tracks on the tiles. So I know if my code is working. Please try out the game on Kongregate here, feedback is always welcome.



Concept: Week 1 of #8WeekGameDev. FlipTiles:Runner

Android beta at https://play.google.com/apps/testing/com.ryuuguu.FlipTileRunner . Latest iOS beta version link on TestFlight https://testflight.apple.com/join/IJDl9FXC This is the first of a weekly series on about a casual mobile game I will try to develop from start to release in #8WeekGameDev. I will put weekly playable (PC browser) demos up on Kongregate https://www.kongregate.com/games/AntHillPlan/fliptiles-runner-v0-1-beta  and a youtube version of the blog https://youtu.be/pPWbntsVibo. The game will include monetization and analytics etc.  I am taking a lot of my ideas from Crossy Road, an endless Arcade game that is simple but well executed. It is free to play and it does not monetize by making playing the game annoying. Players watch a few ads and you get new characters faster, pay money to get some limited access characters. To get this done in 8 weeks and hopefully be profitable, I will be making many design decisions based on cost. Mainly cost of coding for time and cash for graphics assets, and the ability of features to bring in some revenue. I am starting with prototyping game mechanics, after game mechanics are fixed I will decide on graphics. I am using Unity V2018.3 and Photoshop for most things. Minimum Payable Game 0 (MPG 0) 
  This version is not actually playable it is just a concept.
  The board has tiles with paths on them and an avatar moves on the paths. The tiles slowly scroll down and are destroyed at the bottom edge, new tiles being added at the top. The code for tiles and avatars moving on them was from an old project. Below is an expanded outline of my development notes for the first week.
MPG 1 - Rotate Tiles under the avatar

The ideas that the player can change the tiles is on.     a) Rotate tile under self
      static icons (made in Photoshop) at the bottom for 7 of the 8 rotations that put the tile back in its original position. 
    Design decision -  What happens when the player hits edge while a tile is still rotating? 
        Should the player bounce or wait. Going with wait because it is easy to code and bouncing would probably be frustrating when playing. Start moving after rotating is finished and paths reconnect.
   b)What happens player hits the edge of the board, bounce, die or wait? 
   - going with wait because I could not decide which is better and wait was default code behaviour. I might want to change this later.
     Also, this gives me another option to change the difficulty. I could add new edges as curves that always lead back to the board. Then at higher difficulty have the edges tiles lead off the board.
  c) Make all sure various speeds of things are adjustable easily in code. So they are changeable in the inspector in Unity while the game is running.
      -rotation cooldown
      -player speed
      -acceleration of player's speed as time passes.
      The tile scrolling speed is proportional to player speed, make that ratio adjustable.
      I choose to have time to move along one section of track the same even though curved sections are shorter than straight sections. I think this will make it easier to judge how fast to make player speed and tiles scroll down speed. Also running faster when going straight compared to turning should look OK.   d)  cooldown
      Design decision - to reduce a player's choices and force a player to use more types of transforms.
      Using radial fill for cooldown & highlighting outline when done,  because it is easy to code and intuitive for players to understand.
      Buttons are inactive if the avatar is on a rotating tile. I thought coding for rotating an already rotating tile might get messy and I don't think it will add much to the game.
  f) board size variable
        I made sure it was to change the board size while testing. I just change in the board size in the inspector and move the camera.   g) Make a minimal playable game - finally, make sure I have something playable to put on Kongregate to get some playtesting. Also playing the game myself is important for coming up with new ideas and keeping my motivation up.
     -add death
     -add Score
     -add restart
     -random center 3 tiles - there following a pattern before.
     -put max speed at 29 - above 30 I was getting glitches in play.
     -extra score for waiting at the top (change to anywhere?) This was not needed to make it minimally playable, but I wanted to reward players for being able to go up faster than the tiles scrolled down. Also when players get better they can flip tiles around and the top score extra points by hitting edges repeatedly. I considered speeding up the scrolling when a player was near the top but that seemed like more work to code. I made the base score for surviving one row of scrolling 10 and the bonus for hitting an edge 9 just to give more interesting final scores.
    I also integrated Scoring into Kongregate's high score system. I added analytics events for each rotation used and game start and end times. I don't know if I will ever use these but it was pretty easy to add. 
    If you bother to read down to the bottom here, you should check out the PC browser demo here https://www.kongregate.com/games/AntHillPlan/fliptiles-runner-v0-1-beta .  Also if you give me 5 stars I will be happier It may even help me makes some money on this project.



Sign in to follow this  
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!