Skip to main content

Posts

Showing posts from January, 2015

#30daydeveloper - Day 26 - Tutorials and Love

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! With only four days remaining, I realized I should probably start writing a bit more. This challenge wasn't just done to create a cool game (in fact I had low expectations of being able to complete a game) but more to figure out about myself and my work habits. The full write-up will be delivered at the end of the thirty days, but as you can see from my blog and my almost complete game, things are going pretty well. I love this message. On with the changelog! Quit corner now works, prompting users for confirmation before navigating away to my personal webpage Tutorial corner now works Six levels in the tutorial outlining the basic concepts of the game Repeatable but you can close out by pressing R at any time Added message for restarting the game Fixed a bug with creating enemy balls that wouldn't allow me to properly create multiple balls at ...

#30daydeveloper - Day 25 - Small Bug Fixes

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Just a small update today.  Pressing a key is now the same as clicking the player ball at the beginning (i.e. removes the "drag me" text) Fixed several small bugs and reorganized code On a side note, only five days left in my challenge!

#30daydeveloper - Day 24 - Menus and Fonts

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Menus! Changed the font of the game Added a new favicon for the game Favicon Added game menus Settings - not functional yet Help - not functional yet (may be renamed to tutorial) Start - starts the game Quit - not functional yet Removed HTML button and added a loading gif Phaser canvas automatically starts upon finishing loading On a side note, what do you think of the font? Should I keep it?

#30daydeveloper - Day 23 - Restart

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Today was a bit of a slower day. Game over, try to beat my score? Fixed centering of game over text Added restart game when pressing R after game over Existing balls continue to move randomly after game over Removed ability for balls to change player color Player now can be hit a maximum of ten times of the opposite color before losing Collecting a matching ball increases the player's life count by one Player's size corresponds to the player ball's size (with growing and shrinking animation) Added keyboard support WASD / arrow keys for movement 1234 to teleport to a corner On a side note, only one week left! How much further can I get?

#30daydeveloper - Day 21 & 22 - Game Over

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post !  Hurray, more changelogs! Enemy balls now change the color of the player upon collision This is kind of an annoying new feature, I might take this out Multiplier texts are now in place to inform the player of the score multiplier The player's size grows smaller when hit by an enemy of a different color Game is over when the player is reduced to nothing Game over text appears properly and the game stops running Player's size grows back when collecting a ball of the same color Perhaps the player's size should also increase depending on the multiplier On a side note, do you think the multipliers are fair? Or are some of them too many points for too easy of a task?

#30daydeveloper - Day 20 - Multipliers Multiplying

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Today's change will be in changelog format because I realized that I love writing changelogs and these posts should've been like this from the very beginning. Stopping time now changes the colors of the enemies to white to better visually represent that you can collect them Multipliers are now in place! Currently there is a bonus to your score when: Full inventory (ten) Half inventory (five or more) Three colors only Two colors only All same color Alternating colors You are limited to ten free kills when time is stopped Added particles for each ball color Increased opacity of enemy balls Stopping time no longer resets the color of the player On a side note, still need some way of letting the player know which multiplier was activated.

#30daydeveloper - Day 19 - Cut the Fat

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Oh my god, I think it's actually fun now. I've been playing my own game and it's quite entertaining. Of course it's nothing like what I first envisioned at all. From sound design down to the core gameplay mechanic, this game is nothing like what I had mocked up on the first day. See the inventory on top? Those are the balls I am currently holding. On with today's changes (in bullet format because I am lazy): Removed click to flick mechanic of enemy balls Not necessary anymore given the new gameplay mechanics Removed ball worth Didn't make sense to create an arbitrary incentive to have enemy balls collide with each other Added a ton of new sounds and background music Everything sounds so soothing now. Much different from the upbeat techno trance music I had in earlier versions Added an "inventory" system for ho...

#30daydeveloper - Day 18 - Player Colors

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first post ! So today I added a limit to the time stop ability. You can now only stop time for 200 milliseconds before it goes on cooldown. However, the game still isn't all too fun to play. It was very cumbersome to stop time and to alter the direction of each and every enemy ball to send them to the correct corner. And given the new time limit, it was pretty difficult. So I changed it that once an enemy ball touches the player, it disappears. This solved the problem of a million enemy balls cornering the player and a negative score in the tens of thousands. I also changed the spawn pattern to a random location a set distance away from the center of the screen. But yet, it was still relatively boring to play. The player is now pink, therefore able to collect the pink enemy balls Here's where I created the player color mechanic. Now you can drag the player ball w...

#30daydeveloper - Day 17 - Spawn Animations

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Wow turn rates were really difficult. Who would've thought that I should've paid more attention in high school trigonometry class? But I managed to get turn rates working after a good amount of whiteboarding. The problem essentially was the way angles were being calculated. The ball may be facing -175 degrees, but if the player was 175 degrees, then the logical way to turn was counter-clockwise, but due to the way I was calculating the angle differences, the ball would turn almost a complete 360 degree turn towards the player. My whiteboard scribbling Therefore, I had to calculate out each specific scenario of ball versus player angles. What quadrant are they in? Are they negative or positive? Which direction should I turn towards to get the correct angle fastest? In addition to turn rates, I also implemented spawn animations. Now the balls grow ...

#30daydeveloper - Day 16 - Turn Rates

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Today I cleaned up my code a bit so it's a bit easier to read. Unfortunately because of the nature of this thirty day challenge, I haven't been really keeping my code all too clean. Which is getting to be a problem because of all the stuff I am trying to implement. Perhaps I should have kept that in mind from the beginning. Since yesterday's major changes, the game currently has no real purpose. The core game mechanic of being able to influence enemy ball directions is yet to be set up. But today I took major steps in the right direction. Right now, enemy balls move at a constant maximum velocity at an angle. The angle is determined with each step as the angle between the ball and the player. I also created a small white arrow indicating the current direction each ball is travelling in. White arrows indicate the travelling direction In additio...

#30daydeveloper - Day 14 & 15 - Time Stop

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Okay so I cheated and combined two days into one post because I was lazy yesterday and didn't feel like posting anything. Maybe I should make Sundays my days of rest. Everyone needs to take a break once in a while, right? So since I've realized how bad my game was, I have set out on a journey to make it more fun to play. Today, I created a black and white player controlled ball that you moves with the mouse. In addition, when moving the player ball, time stops for the other enemy balls in the game. I really like the visual and audio effects that are currently in place. When time stops, a large circle expands outward from the player ball and covers the whole game screen. Concurrently, the background music stops playing and is replaced with the sound of a ticking clock. Really cool stuff. Don't judge my score. In addition to the time stop mechan...

#30daydeveloper - Day 13 - Boring

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! This game is terrible! It's so boring and I have absolutely no fun playing it. Even as the creator, it's really hard to muster up any desire to play this game for anything longer than five seconds. Albeit it's still just a prototype and not all the features are fully fleshed out yet, but it's still pretty damn boring. I am getting more and more worried that no matter how much I polish this game, the underlying core game-play mechanic of "dragging balls to corners" is just simply not fun at all. So I definitely need some form of reworking the major game-play aspects. First I disabled the ability to drag or flick the balls. This may seem like a step back considering the amount of work I put into learning how to do this feature, but it makes a lot more sense once you consider my next idea. Next, I enabled a pause time feature. While th...

#30daydeveloper - Day 12 - Navigating Scoring

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Today I didn't have as much time to tinker as I wanted. There is just simply too much I want to do and it's very difficult to keep on a straight track when my mind wanders and I take so many detours on the way. Today, I fixed the mobile version, now the game fits perfectly in my phone screen and it works pretty well for the most part. It's just not as fluid as I'd like it to be, but what else can I expect from a prototype, right? I hope that as I keep working on this, it'll become a more responsive experience. In addition, I also got rid of the timer at the top. I want to experiment with music and spawning the balls to some background rhythm. Then with each interaction create a sound that might all mesh together to create some sick beats. I tinkered with this yesterday when I played with audio, but it just increased load times by over two-f...

#30daydeveloper - Day 11 - Sounds Good!

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Today I toyed around with adding sounds to my game and, I have to say, sound design is really hard. I have no idea what would be an appropriate noise for every single interaction in my game. What noise should the balls make upon collision with each other? What about when they're being sucked into a corner? Should a noise be made when you click on a ball? Does every interaction need a sound counterpart? I have a general sense of what I want my game to sound like (heavy techno, fast beat / minute) but it's really difficult to find satisfying sounds from royalty free websites. Maybe I need to find a sound designer friend who'd want to work with me, haha. In addition to sounds, I fixed mobile touch input. Although it loads very slowly on mobile (most likely due to the large sound files) there is not much noticeable lag. But that might also be due to my...

#30daydeveloper - Day 10 - Gravity Corners

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! So now that the game's prototype is finished, I should start adding bells and whistles to it right? Or should I keep updating the core functionality of the game? Not that the core functionality is all too complex or anything. I once read an article suggesting that the core game play mechanics are the most fundamental key to a game's success. Every game can be simplified down to 20-30 seconds of "core" game-play that is repeated over and over throughout the game. Therefore, if this fundamental piece of the game is not interesting or entertaining to play, then chances are that the game will also be boring. There's only so much you can polish a piece of turd, right? I wonder if this is true. Are there any games out there with lame "core" game mechanics, but yet are very addicting and fun to play? Will adding shiny gadgets and s...

#30daydeveloper - Day 9 - Introducing 4orner!

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Four corners, or 4orner, is the tentative name I've settled on. And I am proud to present the first version that I am proud to call a working prototype. Obviously everything is still largely a work in progress, but this is the first time where I think that my game has the absolute bare minimum requirements to be called a game. 4orner! So currently, colored balls spawn in the center of the screen when the timer at the top reaches zero. Then the player must drag the ball to the corresponding corner to increase their score. Once the ball makes contact with the corner, it'll disappear and the current amount left on the timer is added to the total score. Obviously nothing is set in stone and I have a ton of ideas for more content regarding scores like multipliers or bonuses. So if you've been reading the blog entries in the past, you'd know that ...

#30daydeveloper - Day 7 & 8 - Circular Collisions

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! So I had to ditch the old physics engine (Phaser's Arcade) because I think if I want to do collision detection for objects that aren't just rectangles, I need to use an engine that is a bit more powerful. Hence I spent the past two days learning about the P2 physics engine built into Phaser. With this new engine, I was able to do proper collision detection between two circular objects. Now if you throw the pink ball at the black round corner, it'll detect when the edges of the two circles meet. Before, there was an invisible box that surrounded each circle so collisions would occur even if visually they did not. (Which leads to a bad gaming experience of course). On a side note, try it out at this link and let me know how smooth the collision detection is! On a side side note, sorry I didn't publish a post yesterday! I want to say I forgot, ...

#30daydeveloper - Day 6 - Circular Bodies

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Today was a bit more relaxing after yesterday's mountain climb (not that I finished climbing it). I played around a bit with sprites and graphics objects in the Phaser framework. I don't know if it's the best solution to use sprites when all I am planning for is a simple minimalist graphics-style. But then again, it doesn't hurt to learn new things. Pink circles instead of stars (My favorite hexcode, #E86666, the same color for all my personal projects) On a side note, let's keep today's post sweet and short.

#30daydeveloper - Day 5 - Flick!

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! Flick works! Hurray! Ok, actually it doesn't work perfectly just yet. For the most part it works, except in the cases where I flick the mouse too quickly, then the behavior gets a bit wonky. What I am doing is keeping a historical record of the past 100 milliseconds of the mouse locations on the screen while the mouse is pressed. Then I am finding the deltas of each two points and adding them together to create a velocity for the object. Then I assign that velocity to the object when the mouse button is released. I was able to get the idea for the above method from this post. (Thank you Rich from Phaser forums!) Unfortunately, the method isn't perfect. For example, let's say I move the mouse to the right 500 pixels and then move it quickly a 100 pixels to the left, then the object will still move to the right upon release because the way I cal...

#30daydeveloper - Day 4 - Failure...

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! If you've noticed, I cleaned up my labels a bit more. Namely, I combined the "rants" and "random" labels together. In its stead I created a new label called "technical"--a label about all things technology. I didn't like how bloated my "1min's life" label was getting with all these new #30daydeveloper posts, so I decided to separate it out. Yesterday I left off at the steps of what I thought was a large mountain. I wish that I could say that today, I climbed that mountain and took in the breathtaking vistas of the future. But, alas, today was the day that I knew was coming--the day I did not do any coding. I expected to have at least a few days here and there of laziness or busyness. Thursdays are travel days for me so I am usually on an airplane for a large chunk of the day and am really tired when I get hom...

#30daydeveloper - Day 3 - Mouse Flicking

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! I can already feel my motivation waning as each day passes. But to be fair, just because my motivation for this challenge wanes doesn't mean my motivation to develop is waning. In fact, I've been working pretty hard on the other side project that I mentioned in yesterday's post . But I don't think I'm quite ready to reveal what that is just yet. Anyways, back to my 30 day challenge. Yesterday, I figured out how to get simple collision detection working and learned a bit more about sprites and animations. Today I want to install WampServer so I can test my changes and tweakings much quicker as I don't have to wait for the git push to finish. (Noob alert!) What the game looks like currently Then I want to learn how to handle mouse interactions. That way I can mimic finger flicks and be able to move the stars around as I wish--bouncing...

#30daydeveloper - Day 2 - Phaser Documentation

Hello! If this is your first time reading about my thirty day developer challenge, click here to go to the first  post ! I decided to give up on my challenge... Just kidding! I haven't given up just yet. I think the fact that I am requiring myself to post a blog about my developing progress each day is motivating me enough to actually do the development work. We'll see how long this motivation will last--possibly only until the weekend when I will become super lazy and decide to stop. Hopefully not though. This morning I read a Hacker News post  that really inspired me. I am really fascinated by this notion of "passive income." In fact, it fascinated me to start a different project that may hopefully be successful sometime in the near future. But until then I shall focus on my #30daydeveloper challenge. Today I perused the Phaser documentation to get a better feel for what this powerful framework can allow me to accomplish. Having completed this tutorial on...

#30daydeveloper - Day 1 - War of Shapes

Today marks the first day of a new experiment I am doing. Dubbed the "30 Day Developer" challenge. I am taking the next thirty days to try to fulfill my two new years resolutions . For the next thirty days, I will create a working prototype of an idea I had for a mobile game. Furthermore, I promise that I will... develop for at least an hour each day. blog about the day's events and any related events / thoughts. not give up! Mock up of "War of Shapes" (name pending finalization) The game is very simple (as I believe mobile games should be). Several colored balls drop from a chute onto the middle of the screen. The player then used his/her finger to swipe the colored ball into the matching colored corner. The game is meant to be played at an incredibly fast pace (think Super Hexagon ). I also envisioned techno-trance music roaring in the background as the user madly swipes at his/her phone. The game will be developed using the languages I am fam...

Resolution 2015

I don't think I've ever carried out a new year's resolution to fruition. Not that I really cared or really tried, but I guess it's just something that we as a society decide to do each year. So I figured I do it again, but maybe this time, I blog about it so I am held semi-publicly accountable to my resolutions. When I first started this blog back in high school, I used to really enjoy posting . Therefore, my first new year's resolution will be to recapture that enjoyment of blogging . When I publicly launched my newly redesigned website and blog , I felt a sense of pride and accomplishment. Something I created with my own two hands and plastered on a slice of the internet for anybody to critique or admire! Therefore, my second new year's resolution will be to create something on the internet . I don't think blog posts count as "something on the internet" because words are just words. I can type trivial nonsense about my daily life as a blog...

New Year, New Me, New Website

Happy 2015 everyone! And a great new year deserves great new things. What originally started out as a small side project to stream-line my personal website turned into a giant overhaul of the entire design. Though I struggled with motivation throughout the whole process, but I am very proud of the outcome. Hopefully with my new website, I can kick off the new year with a fresh attitude and a happier outlook on life. While I've done some initial testing for compatibility, I don't have access to all the different form factors of the modern tech world. Namely tablets and Apple devices (the Safari browser). So if you are browsing my website and notice something a bit off, then please email me a screenshot so I can troubleshoot. Also if you've been to my website recently, please make sure to hit the refresh button so you don't have the old version still cached in your browser. But if you happen to be feeling nostalgic, you can see what the old version looked like at thi...