CHILI! Look what I made! (finished arkanoid clone)

The Partridge Family were neither partridges nor a family. Discuss.
Post Reply
Byteraver
Posts: 60
Joined: May 19th, 2016, 6:48 am
Location: Belgium, Europe

CHILI! Look what I made! (finished arkanoid clone)

Post by Byteraver » February 20th, 2017, 9:41 pm

Finally I pulled the plunge on this one :) My version of Arkanoid is ready for your criticism.
PRO TIP: if you want to compile the code and run it from Visual Studio, make sure you put all the media files (sounds, fonts, images) in the c:\media folder. Otherwise the program will crash.

Features:

- Level Designer & simple block Designer
- Scrolling backgrounds
- shadows
- power ups
- Real circle + rectangle collision detection & bounce geometry
- Engine can handle big or small balls, low or high speeds, over a 100
balls simultaneously if necessary
- Sound effects from the original Arkanoid for that arcade feel ;)
- You can play with just the exe, the sound and the font files, if a level
data file is missing it'll create one.

What the game misses:

- moving targets
- enemies such as in the original arkanoid
- some power ups I was too lazy to put in (sticky pad)
- blocks that are in a different shape like a triangle (engine can't handle
that right know)
- Proper mouse controls: if the mouse cursor is not on the screen you
can't control the paddle any more
- the program uses the frame counter as a timer, making it easier to play
on systems that are too slow to run the game ;)

*** Instructions (Should be mostly pretty self-explanatory) ***

Level Designer:

- click a block in the block library to start "drawing" the level with
this block. You can drag the block library with the left mouse button.
- Right-click on a block in the play-field to add a power-up to that block.
It'll appear once the block gets destroyed in the game.
- Hold the space bar down to remove blocks on the cursor location.
The shape of the cursor will change accordingly when doing so.
- You can change the background in the right bottom corner. Background
files should have the name structure "background??.bmp" where ?? is a
number between 00 and 99 (note the leading zero).
To change the direction in which the background scrolls, click the
checkerboard pattern repeatedly.
- To change the level titles just edit the "leveltitles.txt" file. Note
that the title can not be longer than the default title.

Block Designer:

- Design your own blocks in the block designer! They can have any size but
must be rectangular in shape and delimited by the color 0x0 (full black).
Make your own block librairies in whatever drawing program and save them
as blockSkinLibrary??.bmp where ?? is between 00 and 99 (note the leading
zero).
- The block designer actually has an inline help function so you should be
just fine there.

Gameplay:

- Some blocks can only be destroyed by a golden ball, and do not need to be
destroyed to finish the level. Other blocks just need several hits before
they break.
- Catch the powerups when they drop from the playfield but
don't forget to keep track of your ball(s) :-]
- If you have the gun powerup, you can shoot bullets with the right mouse
button. Persistent blocks will not break when hit by a bullet.


Credits:

- DirectX Framework: the awesome Chili
- Crappy programming & general compiler abuse: Byteraver
- Small font "Courier": The Humble Guys Demo maker
- The Neuropol X by Raymond Larabie () / Typodermic Fonts Inc was
downloaded from 1001fonts.com
- Some repeating backgrounds were downloaded from https://1-background.com/,
amongst others
- Sound effects were downloaded from:
https://www.sounds-resource.com/nes/ark ... ound/3698/
(They're the original Arkanoid sound effects)

Story:

- I started to make this game in the second half of May 2016. I wanted
to make a simple breakout game with realistic bounce effects, so the
ball would really have to bounce off sharp edges in a realistic way.
The collision detection and collision correction routines were quite
difficult to make and still are not 100% perfect but close enough.
The smaller the ball, the bigger the error margin. I completely
remade the collision detection routines three times and it is one of
the more challenging things I've done so far in programming. I get
it now why Chili said in one of the original tutorials that he
"didn't like it so much". Understatement of the year lol.
I got so bored with it that I started to make a level designer. Which
then became more and more sophisticated. I kept adding features and
by the time I was done I had to rewrite the rest of the game to
accommodate for the complex new levels I made. The effects in the
menu and game over screen were also done to put my mind off the
main project for a while more than anything else.
I am still rather pleased with the result and I'll hope people will
experiment a bit with it. You can increase the resolution for example
in globaldefs.h or change the balls' radius or speed.
The engine was difficult to make but it is quite versatile: the balls
can be both big and small, they can move quite fast (20 pixels per
frame should be no problem) and quite slow (less than 1 pixel per
frame).
The source code is quite messy unfortunately. This is because I am
a very, very impatient guy :/ that lives for instant gratification.
I can recommend everyone to take on a slightly bigger project since
it confronts you with problems that you'll never encounter in
smaller programs. Like writing ugly code is not an option and will
come back to bite you (my code is still ugly as fuck though :twisted: )
Inspiration for this game was taken mostly from the original arkanoid
and from Beatball.
- The game is not 100% finished, it has no hiscore for instance. Some
functionality is a bit crude. But the essential is there.

What I learned:

- A program is designed on paper and not behind the computer. Especially
if you are not that experienced.
- Starting out with a cessna in mind only to decide halfway that what
you really want is boeing 747 will make you built three planes instead
of one, and having to redo all your work
- Writing code quick and dirty is not an option really once your project
starts to be a little bigger
- making your classes fool proof is a big plus when you need to debug,
at the very least add assertions
- collision detection routines are made of pure hatred, as Chili put so
aptly

Edit: typos + changed the title to be more informative :)
Attachments
Arkanoid-Release.zip
Source, media files & executable
(6.1 MiB) Downloaded 169 times
Last edited by Byteraver on February 25th, 2017, 10:19 am, edited 2 times in total.

User avatar
SlevinKelevra
Posts: 80
Joined: September 9th, 2013, 12:58 am
Location: Germany

Re: CHILI! Look what I made!

Post by SlevinKelevra » February 20th, 2017, 9:53 pm

WTF?!?! This is awesome man!!!!! Great job!
Carpe noctem

MrGodin
Posts: 721
Joined: November 30th, 2013, 7:40 pm
Location: Merville, British Columbia Canada

Re: CHILI! Look what I made!

Post by MrGodin » February 20th, 2017, 10:08 pm

Well, this is by far the best i've seen here. Put it up on steam ;)
Curiosity killed the cat, satisfaction brought him back

Byteraver
Posts: 60
Joined: May 19th, 2016, 6:48 am
Location: Belgium, Europe

Re: CHILI! Look what I made!

Post by Byteraver » February 21st, 2017, 7:39 am

Thanks guys, much appreciated. I'm apprehending Chili's comments on my coding "style" though. Or lack thereof, haha.

User avatar
chili
Site Admin
Posts: 3948
Joined: December 31st, 2011, 4:53 pm
Location: Japan
Contact:

Re: CHILI! Look what I made!

Post by chili » February 22nd, 2017, 2:51 pm

Dude, the background in the title screen is mesmerizing.

Man, this is some good stuff. The shadows really add a lot of depth to the game. Collision handling routines can be fun can't they? XD I did a little demo with balls and rotating polygons (quads, but it supports any non-self intersecting polygon) that had conservation of momentum with rotation (elastic collisions only, no contact manifold physics). It was fun to play with. Though today, if I were making someting that needed physics I'd just drop in Box2D cuz ain't nobody got time for that.gif

Lots of really good words for wisdom in the OP here as well, for those of you reading take heed. This man knows what he's talking about. And the reason he knows is because he has taken on a challenge and tackled it. This is what I mean when I say the number one thing you need to do to get good at development is to actually develop something!

Thanks for sharing bro, your game puts my Fart-Annoyed to shame :P
Chili

Byteraver
Posts: 60
Joined: May 19th, 2016, 6:48 am
Location: Belgium, Europe

Re: CHILI! Look what I made!

Post by Byteraver » February 22nd, 2017, 9:43 pm

Thanks for the kind words. The love-craving attention whore inside me is happy ;)

When I saw your Fart-Annoyed game it motivated me to publish my project on the forum asap cause I was afraid your 2-hour project might end up better than my 8-month project :lol:
Now, I'm going to find your latest framework and start with the next project. Something 3D probably. Quite the learning curve: snake, arkanoid, 3D. See you in a year or so :lol:

And to my fellow aspiring programmers: one thing I learned during the sometimes frustrating game making process is to never, ever give up. You can do it, but only if you keep going.

Post Reply