Play Brickout here!
Of course, I can make games like this for you too. If you’re interested, please get in touch with me by clicking here or e-mailing me directly at:
cartrell@gameplaycoder.com.
Thanks,
– C. out.
Helping you bring your games to life with game programming.
Of course, I can make games like this for you too. If you’re interested, please get in touch with me by clicking here or e-mailing me directly at:
cartrell@gameplaycoder.com.
Thanks,
– C. out.
Hey!
Brickout is finally ready for first release! Yeah!!
Only thing is… I need to figure out how to add a portfolio that my current theme can use!! Or, maybe switch themes. Welp, let me figure that part out.
In the meantime, here is a video play through, although I didn’t get very far, haha!
On to the next game project! Thanks for staying with me!
Of course, I can make games like this for you too. If you’re interested, please get in touch with me by clicking here or e-mailing me directly at:
cartrell@gameplaycoder.com.
Thanks,
– C. out.
Hey there.
Polish can easily be overlooked when developing a game. It’s that last 10 percent or so where you smooth out the rough edges, focus on the intricacies of mechanics or functionality, and sharpen up audio, visuals and feedback. Polish is what can turn a bad game into a good game, and a good one into a great one, all else being equal.
A bit of progress has been made to add polish to Brickout. Let’s demonstrate what’s done so far.
Added particle effects to broken bricks.
Getting into Phaser’s particle system wasn’t too difficult. I created a simple graphic that represents a broken piece of the brick, and used that as the particle. Every brick has its particles that match its own color.
Extra Impact to Bomb Explosions
When a bomb explodes, it now produces a screen flash and tremor.
This one was a lot of fun to add. The flash made use of Phaser’s graphic primitive functionality. In this case, I used a colored rectangle that fills the entire screen.
The tremor was super-easy. Interestingly enough, there is a “shake” method on Phaser’s Camera object that you can call, and specify the intensity and duration of the tremor. In previous games I’ve made for clients, I’ve always had to do this manually, and I was expecting to do that here. Thankfully (or unfortunately, if you’re a crazy coder (: ), that’s a task I’m relieved of for this game. (:
There is also a “shattering” sound that is played if the bomb happens to clear any bricks within its blast area.
Saver Blocks Gradually Appear Instead of All at Once
When the saver bridge is forming itself, it now does so once brick at a time. So, you’re not out of the woods yet, and you can still lose a ball while the bridge is forming!
Also added particles to broken saver bricks as well.
Adding Labels to Identify the Item Collected
When you collect gems, an animated label will briefly appear. For some items, such as the bomb or saver bridge, this is not necessary.
Alright! Let’s see this shit in action! 😀
Now, more work to do!
– C. out.
Hey what’s up!
The gameplay is pretty much done. Now it’s time to start polishing up the mechanics and effects. The next steps are:
– Adding particles to broken bricks (This means learning how to use Phaser’s particle system. Cool!)
– Adding a screen flash to bomb explosions. In addition to the a screen tremor, let’s add some impact to those bombs. (User of Phaser’s Graphics – draw primitives, specifically, the rectangle)
– Saver blocks appear gradually instead of all at once (Use of Phaser’s Timer system)
– Adding labels that say what power up item was just collected
– Adding particles to broken saver blocks
– When bricks are cleared with Color Match or Color Blast:
a) gradually destroy the blocks instead of all at once
b) add a screen tremor effect
c) add sound effect (different from the normal brick breaking)
– When serving the ball into play, give the player more control over where it goes. I plan on “sliding” the ball across the paddle, thus giving the player the opportunity to “aim” the ball. Check out this video:
– Adding game over when all lives (balls) are lost.
That should do it. After this, I’ll add a few more levels, and play around with balancing the items (rates of occurrence, duration and intensity of effects, and such [for game balance/feedback purposes]), do a bit more play-testing, then that should be it.
Almost there guys! Thanks for staying tuned, and comment if you’ve any questions on anything.
And for the record, yes, the game will be freely available to play on the site, as well as the source code being released.
Take care,
– C. out.
Hey guys,
As I mentioned earlier, I recently completed the Android Basics Nanodegree program offered by Udacity. During the course, I decided to create a side project, completely independent of the course material. The project not only uses some of the concepts from the course, but also expands on concepts beyond the scope of the course. This is where the real fun is, because these are uncharted waters that present unique challenges.
This project I’m working on – besides Brickout, which is an HTML5 game using Phaser – is a called Thunderjack. It’s Blackjack, but with my own spins on it, mostly just some over-the-top theatrics, and playing around with some of the rules. (:
The awesome Thunderjack!
I’ve been working on this for a few months now, reinforcing my knowledge of Android Studio, Java, and Android development. One caveat I’ve found is, Android Studio is not the most ideal IDE for building an Android game, at least not one that fits well into your typical layout schemes such as Linear, Relative, or Constraint. For the record though, I went with the Constraint layout, mainly because of it’s guides functionality, which can use percentages of the screen, which makes designing a responsive app much easier.
One problem I ran into was trying to fit all the blackjack elements on the display. They include:
1). Three lower player hands
2). Three upper player hands. Each hand can split, so you can play up to six hands at a time
3). Positioning the cards so they cascade atop each other, but still able to see what the cards are
3). Betting chips
4). Dealer’s hand
5). Results (bust, win, etc.)
6). Text for displaying credits, and score of each hand
7). Action buttons (hit, stand, etc)
8). Turn indicator arrows (whose turn it currently is)
As you see imagine, the underlying constraint layout is quite massive! And it’s Landscape orientation only; ain-no way in the hell all this was gonna fit on a Portrait orientation, and still be easy to see, especially on phones.
A peculiar issue I faced was a performance issue that took me a while to track down. It was due to rendering of TextView objects inside the TextView, probably because of all the re-calculating that goes on under the hood. This presented a big problem, because it meant that I would have to scrap the entire Constraint layout! But the constraints allow me to establish that responsiveness across various device sizes! Sigh… shit. Time to get creative…
I didn’t scrap the Constraint layout. Not exactly. What I did was:
1). Start again with a blank constraint layout.
2). Examined each visual element (text, button, image, etc), and cloned it
3). Placed the clone element on the blank layout in the same position of the original element
4). Deleted the constraint layout
5). The blank layout becomes the official layout that is shown.
While this created a lot more work, it also allowed me to re-created the layout with all the responsiveness, but without all performance hit of the constraints. I believe I can get away with this, because of its static nature. Other than the cards, which all move to predetermined positions on the layout, there aren’t any dynamic elements on here. In other words, nothing needs resizing or repositioning.
Another challenge is use of sound effects.
The Android Basics course does talk about use of the MediaPlayer.
As you know, games often play multiple sounds at once, and it seems that MediaPlayer can only play one sound at a time.
So, I found a class called SoundPool class that allows you to load up several sounds, and is designed for smaller sounds. This seemed to be exactly what I was looking for, until I found that it has no notification callback support for when a sound has finished playing, which is also a functionality I need. MediaPlayer however, does have this.
So, the approach I’m taking is a hybrid one. Basically, I’m using SoundPool for all the sounds I can play and forget about, while the MediaPlayer can play those sounds where I need to be notified when they complete, so I can take appropriate actions.
However, SoundPool doesn’t come without its caveats either. You need to specify a max number of sounds it can play at once by loading them into the SoundPool, and if you need to play a sound that isn’t loaded, one of the other sounds must get discarded. I’m currently working on a way around this, because my first implementation introduces a bit of lag when loading some sounds. But, I’m confident I’ll have an unorthodox solution for this. 😉
That’s it for now. I’ll keep you guys updated on the progress of this one. I should have it done and into the Google Play Store later this year.
Thanks!
– C. out.
What’s up, guys.
Brickout now has the sound effects added! I also snuck some of my jazzy musical skills into many of the sound effects.
A short video with the sounds is below. Things got a bit crazy around the 1:00 mark in the video! I think I’ma keep this aspect of the game design, though. Then it got really boring, trying to hit that LAST brick… dammit! >:D
But, I’m happy that with 41 sound effects added, most of them are done now. (:
Playing sounds using Phaser and its SoundManager class was easier than I thought! I still need to implement callback notifications when a sound has finished playing, because I will need that functionality a little later.
After watching the video, share your opinions in the comments below. I’m curious to know. Thanks!
– C. out.
Hey.
After completing the Android Course and earning a Nanodegree, I resumed a course that I had started earlier. Actually, since I haven’t made any progress on the course in a long time, and much of its material was revamped, I decided to start the course over.
I’m talking about the Complete C# Unity Developer 2D – Learn to Code Making Games course, by Ben Tristem and Rick Davidson.
This is an amazing course that teaches you how to build several genres of games using Unity (version 2018 as of this writing).
One of the projects in the course is a Breakout type game (* gasp! *), and there is a reference to a design document about the Breakout genre on Gamasutra.
This. Document. Is. Fuckin’ Incredible! It contains tons of juicy pieces of information from level design and power-ups, to visuals, and even some history.
The power-up items intrigued me most. The items I added are either ones that I’ve seen somewhere else, or they were a coincidence (the bombs was a big one).
No update on Brickout this week. Still, this design doc definitely has some good inspiration for anyone wanting to make their own Breakout game engine – or if you’re lookin’ to hire someone to help you build your own – hint hint 😉
~ C. out.
Hey.
Got the last two items added today!
Paddle Buff: Represented by the blue gem, this item will extend the length of your paddle. This makes it easier for you to hit the ball. However, this effect is only temporary, because it only lasts for so many ball hits.
Paddle Nerf: This “item” you might wanna watch out and avoid. Masquerading as the magenta gem, it reduces the size of your paddle, making it harder to hit balls! But don’t worry; it’s effect is also only temporary. Hopefully, you can last long enough for it to wear off!
But I was thinking, maybe there can be some sort of other benefit while this effect is in active. Since it does create an extra challenge, you will gain bonus points for breaking bricks when your paddle is nerfed. What do you think? Let me know in the comments below!
So that should be it for the items. I don’t plan on adding any more, but if have anything good, let me know, and I’ll consider it.
So next are the oh so important sound effects. Time to give this game some personality!
– C. out.
Hey.
I’ve been busy working on a bunch more effects to add to Brickout, and got the functionality for six more of them in the engine. Without further ado…
Saver
This item is represented by the blue crystal. When you collect it, a bridge of blocks will form underneath you. These bricks can save you by keeping you from losing a ball. But! (there’s always a “but”)… each brick can only be used once, and the bridge only lasts a short time.
Blitz Ball
Powered by the red crystal, this increases the size of your ball, allowing it to pummel straight through blocks! It only lasts a short time though, but you can do some serious damage with this. I can’t wait to polish up this son of a gun later on!
Bonus Points
What would an action game be without having a way to gain some bonus points? The cyan-colored crystal allows you to do just that. When you collect the first one, you earn an additional 500 points. With each successive crystal you earn, you’ll get an additional 500 added onto it. So 500, 1000, 1500, etc. It caps at 5000, and if you lose a life, it starts over at 500. I plan on allowing you to be able gain an extra life when you earn so many points on your score, so there’s an extra incentive to get lots of points!
Color Match
Similar to the Color Blast item, this one, powered by the light-blue crystal, allows yo to clear may bricks at once. However, this gem works a little differently. When collected, it affects the next ball that you hit. When that ball hits a brick, it clears all the bricks on the board of the same color. The effect can only be used once per gem.
Extra Ball (Life)
Another classic feature of most action games is the ability to gain extra lives. I already hinted there will be a way to do so by scoring points, but with this orange crystal, you gain an extra life immediately when you collect it.
New Ball
Last but definitely not least, is this purple gem. When you collect this, it introduces a new ball into play. Now you’ve got zany task of juggling two (or more) balls! If you miss one of them, you won’t lose any lives until you’ve lost all of them. If you’re good at this (as you can see, I suck at this shit), you can clear boards quickly. I might also add extra points functions here too, where the more balls you can juggle, the more points you get.
So that’s it for now. I’m almost done with the items; I have two or three more to add. Once they’re all in, I’ll start working on additional levels, adding sound effects, UI and polish. Takes a lot to make a fully-functional, polished game.
Thanks, and stay tuned!
– C. out.
Hey.
After spending the last eight months (and some late nights) learning, coding, more learning, and more coding, it is done! I have completed the Android Basics course offered by Udacity and Google!
This started at the beginning of the year with a Scholarship Challenge that was open to 50,000 applicants, where you could choose one of the four courses offered:
These courses are three months, and you have the opportunity to qualify for a full Nanodegree scholarship, which I did.
The courses provide an online community led by Udacity Mentors and even student alumni, as well as support from your fellow students.
Some of the criteria for receiving the Nanodegree was not only successful completion of all the course work, but ample participation in the online community. And this was a much bigger challenge for me than the coursework.
As an introvert, I pretty much like to keep to myself, and it can be a challenge for me to open up to people. However, the urgency of this requirement, as well as knowing the material well enough to provide value to others allowed me to get over that hurdle. When Udacity notified me that I received the full scholarship, I was elated!
The full Nanodegree program itself is a collection of courses offered by Udacity, and was more challenging (and longer) than the first three months. You really have to make a schedule and stick to it to stay on track. The community is always there to assist you should you need it. And of course, you can provide assistance to others yourself as well.
While I already have some experience developing Android apps, I’m using Adobe AIR, which can shield you from the inner workings of how Android really works. This course helped me to get deeper into those underlying layers. While I have a better understanding of the development process, there is still much to learn. This Nanodegree program doesn’t go over every detail (it would take forever, heh), it does help teach you how to figure out things on your own. you don’t need to have all the answers up front; but knowing how to research them to find out is crucial to your success as an Android developer (or any type of developer for that matter).
During the course, I was also working on a side project as an additional challenge, using what I’ve learned from this program. It’s a game, of course (of course!). I should have it released later this year, so stay tuned for that!
Thanks to Google and Udacity for this incredible opportunity! I’m so glad I was able to participate in this!
– C. out.