Learning 2D Game Programming With BlitzMax

BlitzMax Forums/BlitzMax Tutorials/Learning 2D Game Programming With BlitzMax

assari(Posted 2006) [#1]
[EDITED July 02, 2006]Main Index to Series is here

** Added example BreakOut Game

This is the start of a fairly ambitious series of tutorials on how to write 2D games using BlitzMax.

The first part is a Getting Started part where I'll be introducing some simple concepts. I'm assuming you have zero experience with BlitzMax and programming but do have some familiarity with using computers.

The second part will walk you through how to create a basic framework of a 2D game and will use a very simple space shooter as an example.

Then the main part of this series starts and that is the showcasing of several 2D Game programming concepts. These will be written more or less in random order. I seriously doubt I will be able to cover all topics and even the topics that I want to cover will take several months (years?) to complete. But hopefully the meat of this series will be enough to get the needed concepts for readers to venture on on your own. Good luck with the learning....

This is what I have done so far:-
Part 1: Writing your First BlitzMax Program (Posted:May 8, 2006)

Part 1: Creating the Player Object Posted May 08 2006
Part 2: Introducing a Basic Game Framework Posted May 08 2006
Part 3: Introducing the Enemy Posted May 08 2006
Part 4: A new revised Game Framework Posted May 08 2006
Part 5: Adding Missiles Posted May 08 2006
Part 6: Adding Collision Posted May 08 2006
Part 7: Adding Explosion Posted May 19 2006

USING THE FRAMEWORK TO PROGRAM A BREAKOUT CLONE <---new tutorial added Jul 02 2006

Max2D Collision Techniques (Part 1, Part 2, Part 3)
Max 2D Font Functions
Max 2D Images Functions
--Part 1:Loading and Drawing
--Part 2: Transformations
--Part 3: Blending Modes

Sin of Nature(Posted 2006) [#2]
These are really good, you should continue on with them. :)


frolicy(Posted 2006) [#3]
again my biggest thanks for that detailed tutorials!
I have never seen such a great Intro !!!

highly appreciated and waiting eagerly for more -
seems that even i will get it

Why0Why(Posted 2006) [#4]
Great job, thanks for taking the time.

Triforce Guardian(Posted 2006) [#5]
now this is what i needed along with the other beginners to blitzmax. GREAT WORK!

assari(Posted 2006) [#6]
I've just added a new part to the basic framework series: Part 7 - Adding Explosion. Don't forget to check out the first tutorial in the 2D Topic Series, Collisions.

Triforce Guardian(Posted 2006) [#7]
This is a very nice tutorial assari. You explained everything very well! Beginners to blitzmax would definatly need this tutorial

bradford6(Posted 2006) [#8]
These are very good. Nice Job Assari!

Blitzplotter(Posted 2006) [#9]
I am a beginner to BMax and must congratulate you on such a good piece of work your tutorial is. Manyanna - I'll be digesting how your part 6 does it's business. Fantastic work!!

assari(Posted 2006) [#10]
OK has added another tutorial on using Max2D Images functions in 3 parts
Max 2D Images Functions
--Part 1:Loading and Drawing
--Part 2: Transformations
--Part 3: Blending Modes

And many thanks to all the folks who have provided feedbacks. Adds to my motivation :)

simesf(Posted 2006) [#11]
You know, I'd happily pay money for a complete series of tutorials just like these. I hope you keep your motivation since this seems to be exactly what BlitzMax needs. Well done!


boomboom(Posted 2006) [#12]
Thanks for these! If you were ever to write a book, I would get it :)

Digital Anime(Posted 2006) [#13]
Thanks a lot for these tutorials, without them it would be really hard to understand the commando's like "Type" which proves very usefull in creating shoot 'm ups. :-)

And now I can understand what I'm typing in BlitzMax using these new features (For me that is)... It's good that almost every lad has an internet connection nowadays and can ask other people in this forum, I can remember using Blitz Basic 2 on my Amiga in the past with only a few floppies with the utility and some samples and a big book explaining most of the commands. But I never had the chance then to ask someone on how to do stuff like this because I didn't know any other programmer in that time that used Blitz, But I liked programming it even then...

NoBoDo(Posted 2006) [#14]
Fine job on the tutorials!

One thing to note - The link to the "Adding Missiles" page is incorrect on the index page. It instead links to the "Adding Collision" page.

assari(Posted 2006) [#15]
NoBoDo, thanks for pointing out the incorrect link. It's fixed now.

Blitzplotter(Posted 2006) [#16]
Again, thankyou Assari, I've just been scanning over your latest three posts, they address some problems I've been grappling with in a very digestable way. Regards,

Jason W.(Posted 2006) [#17]

Are you planning on writing a book for your tutorials and knowlege? I'll buy it if you do :)


tonyg(Posted 2006) [#18]
Shhh!!! Just keep downloading them and put them in a folder called "Assari's Book".

Pete Carter(Posted 2006) [#19]

how about someone poping all of them in a pdf. i can do it when i have time if your like

burpy(Posted 2007) [#20]
Why are you loading the missile pic each time the missile is fired? Surely you should just load the image as a static inside the type and draw it for each missile?
Similarly, why are you using the image as a parameter in your creation functions? WOuld a single fixed reference for each type not be simpler and more appropriate?

assari(Posted 2007) [#21]
Yes you are correct that it would be better to just load the image once. This would probably necessitate doing the other thing that you advocated which was to use a fixed reference for each type.

When writing these tutorials, I'm normally biased towards code clarity, sometimes at the expense of speed and appropriateness.

Ian Thompson(Posted 2007) [#22]
Excellent stuff... :)

lesslucid(Posted 2009) [#23]
I'm working my way through this tutorial now and I'm finding it incredibly helpful, so, thankyou very much for all your hard work, assari!

I have a question, though - (if this is the right place to ask) - I'm up to "part 2 - introducing a basic game framework". I feel like I've got a basic handle on what the code does and why each section is where it is and so on, but I'm not clear in my mind as to why the "Type: TSpaceShip" has methods for UpdateState and DrawSelf, but a function for Create TSpaceShip. Is the difference between methods and functions something that I should be worrying about at this stage? Are types generally containing only methods, except for the creation of instances of that type, in which case they use a function? Could the function for creating TSpaceShips have been placed outside the TSpaceShip type?

I guess I'm happy to accept that it's too soon for me to worry about these things but I just want to make sure I'm not just... nodding along through the tutorial while failing to understand how to use the "ingredients" I'm being given...

...thanks again!

Brucey(Posted 2009) [#24]
There's a recent post here that may shed some light on the differences.


xcessive(Posted 2009) [#25]
Some great stuff, really helpful thanks XD