Jonathan Harbour has been programming video games since the 1980s. He has written on subjects including Visual C++, Visual C#, Visual Basic, Java, XNA, DirectX, Allegro, Python, Lua, DarkBasic, multi-threading, game consoles, and game engines.
His recent work includes XNA Game Studio 4.0 for Xbox 360 Developers, Multi-Threaded Game Engine Design, Visual C# Game Programming for Teens and More Python Programming for the Absolute Beginner.
He is currently the lead writer on the Microsoft Technology Associate (MTA) certification exam 98-374, "Gaming Development Fundamentals." He has a Master's degree in Information Systems.
Take your courses with you and learn anytime, anywhere.
Learn and practice real-world skills and achieve your goals.
For additional information about this instructor's work, click the instructor name or visit his web site at www.jharbour.com.
The first game programming tool we will learn to use is DarkBasic Pro, by The Game Creators (www.thegamecreators.com). You can download DarkBasic Pro for free from their web site and use it for this course.
This lesson shows step by step how to create your own Pong game using DarkBasic Pro. The language is based on the original BASIC, but with custom statements and functions specifically designed for making games. We will learn to use graphics and input to make a playable Pong game in this single lecture.
This very short tutorial shows how to make a demo that loads a background image and several animations, and draws animated balls moving on the screen, colliding with each other, and bounding off the edges of the screen. This is a good and quick introduction to sprite animation in DarkBasic Pro.
See the Lecture 1 page for a link to the assets required by this tutorial.
Here is a screen of the finished program that you will create in this tutorial:
DIFFICULTY LEVEL: VERY EASY
This tutorial teaches step by step how to create a complete Breakout-style game (also known as a "ball-and-paddle game"). This is quite a bit more complicated than the Pong or Bouncing Balls tutorials, so fasten your programming seatbelt and get ready to go!
NOTE: Some of the screens of source code are difficult to read in the default small window. Recommend going fullscreen for this tutorial! See the small box icon at the lower right corner of the lecture window.
DIFFICULTY LEVEL: MEDIUM
This tutorial is a high-concept lesson that teaches how to program the logic and user interface for a Tic-Tac-Toe game from scratch. The game assets are provided for download on the first ASSETS page. Students are encouraged to study the lessons on sprite programming and user input programming before attempting this game tutorial.
DIFFICULTY LEVEL: MEDIUM.
This is a complete game tutorial that teaches step by step how to create your own version of the classic arcade game, Space Invaders! Be sure to download the "Assets" for this game project from the Tutorial Assets page.
This is an advanced tutorial provided as bonus content for the student who is interested in programming scrolling arcade games, such as top-down scrolling shoot-em-ups or side-scrolling platformer games. This lecture/tutorial corresponds with chapter 15: 2D Game Worlds: Level Editing and Tile-Based Scrolling. You may download the resource files for the book at www.jharbour.com to obtain the projects and assets for this tutorial lesson.
This lesson explains what you will learn in the course and a bit about the game development software we're using.
This lesson explains some of the background behind game development, how programming languages work, and how DarkBasic fits in. It is good background material for a complete beginner to the subject.
This lesson explains the important subject of variables in DarkBasic, including advanced user-defined types and how to use them effectively.
This lesson shows how to write DarkBasic code that can think--that is, make decisions. Functions are an important way to break up a large program into smaller parts. Looping is how we can repeat a task many times very quickly.
This lesson explains how you can create data in a BASIC program and then read it using arrays. This is an important concept in game programming with BASIC, since we can create game levels this way! At the end of this lesson, you will write a graphics demo that draws and moves shapes on the screen.
This lesson explains the file input/output commands in DarkBasic. You will learn how to read and write text and numeric data from files, and how to use this new skill to make a script-like settings file that affects how a game starts up (for instance, by defining the screen resolution and program title). This is the first step to understanding script programming and is very useful.
This lesson teaches the math and relational (logic) commands in DarkBasic, introducing some very important new concepts such as linear velocity (causing game objects to move in a specific direction) and random number generation (for rolling RPG character stats, among other things).
This is the first lesson on graphics programming with DarkBasic. Up to this point, you have been learning the important features of the language in order to be able to make games. You need to know the language first, so you can confidently work on game logic. Now, you're on the right track, and we begin digging into graphics! In the next few lessons, you will learn about bitmaps, sprites, and animation. So, you're on the right track, keep at it!
This is a quick, short introduction to bitmaps and images--how to load and draw them in DarkBasic. You will use this information in the next few lessons on 2D game programming with sprites.
This lesson explains all of the DarkBasic commands for working with keyboards, mice, and joystick controllers.
This lesson covers looping statements in DarkBasic, such as While and Do statements, used to create a real-time game loop. Timing is a related subject, affecting the frame rate of a game.
This is the first lesson on sprite programming, which involves drawing, moving, and animating 2D bitmap-based game objects, the core of 2D games.
This lesson continues our study of sprite programming in DarkBasic Pro by exploring the exciting subject of animation!
The third lesson on sprite programming covers the "gameplay" aspect involving sprite collisions. Detecting when two sprites "hit" each other allows us to make interactive games where objects affect each other, such as a laser beam hitting an alien space ship.
This lesson explains the audio features supported by DarkBasic Pro, including the loading and playing of wav and mp3 files for sound effects and music and 3D positional sound commands.
This lesson talks about the subject of finite state machine programming, a topic related to artificial intelligence, and how it is used to improve games.
This lesson is an introduction to 3D graphics concepts, the fundamentals of 3D with DarkBasic Pro. You will learn all about vertices, triangles, quads, video cards, GPUs, and rendering, from a high-level perspective.
This lesson explores more of the basic 3D concepts, explaining how light sources and cameras affect the view of a scene. The lights covered are from the older fixed pipeline, not shader-based lighting, so the concepts will be fairly easy to learn.
This rather short lesson goes over the commands used to load, animate, and draw a 3D animated mesh file, with support for the common file formats .X and .3DS. This lesson does not go into too much depth since the subject is quite complex and this is a beginner's course. But this will give you a good head start and enough to start working on your own 3D demos. In the next lesson, you will learn to move and interact with 3D objects, so this lesson is a good precursor for the next one.
In this final lesson on 3D graphics, you will learn how to move and rotate 3D objects in the scene and manipulate the camera.
Here is the original first version of DBRobots after just a few days of programming work on it. Compared to the later revisions, you can see how far it improved. However, I do somewhat like the visual radar/scanner in this old version.
This was the 2nd revision to the DBRobots simulation with additional features.
This is the final working version of DBRobots. This video shows one mobile tank against three fixed turrets.
excellent for begginer programmers thank you soo much
I've nearly completed a complex game in AGK and have started with DarkBasic. I took this course before as an intro and then again later as a refresher and it's excellent for both, I'd highly recommend it!