Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web

    vbProgramming
Tutorials - Main Page
 
       
vbProgramming Home :: vbProgramming Forums :: Tutorials :: Contact :: Links 
In order to do these tutorials, you must have Visual Basic. NET. No previous knowledge of programming required.

Difficulty ranges from (*) to (***), with (*) being the easiest.
At the end of each section, you will program a game using the knowledge that you learned through the previous tutorials.

Good luck!
 

 

Tutorials:

Source Code Note:
The source for all the tutorials are here (The tutorials have the wrong link on them)
Thanks for your patience
 

Section I -Beginning VB.NET
The very basics! This is the place to start if you're new.
No previous programming experience required!

1)Hello World(*)
   Displays a Message Box showing, "Hello World" on the screen
,

2)Variables(*)
   Shows the importance of variables in programming, basic variable concepts and theory. Adds 2 numbers together.

3)Variables2(*)
   Manipulate text and create a program to check for a correct password.  An introduction to the If statement.

4)Experimenting with Objects and Properties(*)
   This tutorial will explain to you some of the objects in the toolbox and their properties.

5)Basics of Animation using PictureBoxes(*)
   Shows you how to use PictureBoxes to allow a character to animate.

6)Basic Block Statements(*)
   Shows you 2 basic block statements, the If Statement and the While Loop

7)Event Handling(**)
   Teaches you how to check for events while programming a calculator

8)Tic Tac Toe(**)
   Your first game! Learn about Mod and Subs and Regions!

Section II -  Introduction to OOP / Advanced Drawing Techniques
Start getting more advanced by learning better techniques. Make yourself
a better game programmer.
 

9) GDI+(*)
Graphics API used for fast drawing.

10) OOP(*)
OOP(Object Oriented Programming) tutorial


11) Animation(**)
Flickerless Animation with GDI+

12) Tips and Tricks (*)
Tips and tricks for VB.NET to help you when you program.

13) Collision (**)
Learn about Functions, Properties, and 2 types of collision algorithms: Bounding Boxes and Proximity

14) Tile Based Collision Detection (**)
All about Tile Based Collision Detection (ahem...look at the title)

15) Bit String Flicking for Collision Detection (***)
01010101 - Using Binary for collision detection!

16) Reading and Writing Text Files(**)
Learn how to save/load gamedata! Also learn how to read .map files and display a map!

17) Scrolling(**)
Learn how to scroll. VERY simple tutorial. Complicated font problems on this one, sorry.

18) An Alternative to Arrays(**)
Sick of arrays? Welcome Collections, ArrayLists, Hashtables, Stacks and Queues - extremely useful.

19) Advanced Calculator(**)
Sharpen up your String parsing skills by making a calculator that can do this:
"1 / Sin (90 * Cos (30 + Tan (3) / 2 ^ 2))"
all at the same time and still give you the answer!


Coming soon:

20) More GDI+ (Transformations, tricks, optimization, and more!)

21) XML Serialization/Deserialization (Save and load game data without going through the hassle of parsing text files)

22) Tetris! <I finally decided on a game!> - This might not be here ultimately. I might put it in the Programming Games section

If you're wondering where the AI tutorial is. Well it's not going to be out for a while, I still have to learn this complicated topic - there are books on AI. Anyways, once I learn AI programming, I'll dedicate an entire section to it instead of squeezing in a few tutorials at the end of Section II.


 

Section III -  Applied Visual Basic
It is highly recommended that you finish sections I and II before going on to section III.
The DirectX section will cover mainly Direct3D 9, but there will also be a DirectInput tutorial also.

Section III.1 -  DirectX
DirectX is an advanced programming interface used by many industrial game programmers.
Although commonly used in C++, Microsoft has recently released a 'Managed' version for the .NET languages.

1) Introduction to DirectX(*)
This tutorial will serve as an Introduction to DirectX. It will discuss the advantages and disadvantages of DirectX. It will also get your computer DirectX-ready.

Edit: 8/11/05 - Please get the latest version of DirectX, available here. If the tutorial links you to a specific version of DirectX, please ignore it. Simply use the link provided above. Microsoft will release new versions on a timely (or untimely, knowing Microsoft and their delayal of Windows Longhorn) basis, and I cannot keep editing the tutorials each time. As of this writing, the latest version is the June 2005 Update.

2) Initializing the Device (Rendering a blue screen) (***)
This tutorial will show you how to initialize the Direct3D Device. The first step to learning Direct3D.

3) Rendering Sprites(***)
Finally, something worthwhile in Direct3D - drawing a sprite!

4) Matrices And Transformations(***)
Start moving stuff around in D3D :).

5) Transparency(***)
Making a sprite's background transparent

6) Screen Space vs. World Space(***)
Learn about transformations in Direct3D.

7) Using Direct3D.Sprite(***)
Direct3D Comes with its own Sprite class! An alternative to your clsSprite class - easier to use.

8) Loading a 3D Mesh!(***)
Quick intro to 3D and then Mesh rendering. You'll load a "car" mesh and learn how to import your own meshes!

9) Introduction to 3D Transformations!(***)
Move around the world, create a basic 3rd person camera class, and get a brief overview of different camera types.

Coming soon:

10) DirectInput - What's the point of a 3D Game without mouse input?

11) Third Person Camera - Best suited for RPGs.

12) Hybrid First and Third Person Camera - Evil tutorial, but worth it

13) First Person Camera (In-Ground and Fly-Around) - Be sure to brush up on your Trig skills though!

 

Section III.2 -  Networking
Time to learn how to get 2 computers to talk to each other over the internet.
.NET offers you powerful ways of doing this in their System.Net namespace.

Visual Basic 6 programmers will have almost no difficulty moving from the
WinSock API to this.

1) Multithreading(**) - Thanks to SamSmithNZ for submitting this tutorial
This tutorial serves as the basis for learning Networking. It basically teaches you how to not freeze your app in an infiinite loop.

2) Setting up a Local TCP Server(**)
Pretty basic networking tutorial. You'll learn the difference between TCP and UDP and send a message to a server. Just note the word Local.

Coming soon:

3) Global TCP Chat - You'll use the previous tutorial, learn some Port Forwarding, and connect with people through the internet in a "Public Chatroom" (only
                                 available to vbProgrammers :D).


Section IV -  Miscellaneous
Anything not covered in sections I and II will be covered in this section.
You'll learn VB.NET essentials (for game programming) in this section.

 

1) Changing Screen Resolutions (**)
Basic and straightforward, this tutorial will show you how to change the resolution. Thanks to tzodem for the code! All that is required is a basic understanding of OOP.

2) Do You Really Want To Quit (*)
Make a box which asks if you want to quit, before you quit!

3) AddHandler(**)
Want to optimize? Want to make a class 'mimic' your form (by sharing some of the same properties)? Then this tutorial is for you.

4) Smart Key Movement(*)
Get rid of that stupid delay when you hold down a key!

5) FPS Counter(**)
FPS is Frames Per Second - not First Person Shooter.
How fast is your game?  Want to make it run the same speed on every computer? We'll also have some fun with some (cheap) benchmarking.


Coming soon:

6) [API] Introduction to the Win32 API.

7) [API] Play sounds using the mciSendString API.

8) [API] Learn how to check for more than one key press at the same time with GetASyncKeyState


9) [API] Parsing INI files - very useful (even though it sounds boring). Read from them or write from them using these APIs:
    GetPrivateProfileString and WritePrivateProfileString

 


Section V -  Programming games!
 It is highly recommended that you finish sections I and II before going on to section IV.
This section will tell you what tutorials you need to finish from sections III and IV before going on to this section.
Some tutorials may not require you to finish any tutorials from III and IV, and some tutorials may.


The difference between the games in this section and the games in  Sections I and II is simple:
These are more complex games that require multiple tutorials.


1) Programming an RPG (Syllabus)
            -Step 1: Setting it up
                         
 You'll learn about how to set up our game (and make it Object-Oriented).
                           We'll talk about some theory in here about how we must approach this. Finally, we'll code dynamic
                           character movement (the speed may increase or decrease according to the computer's speed), animation
                           and loading the map.
            -Step 2: Scrolling and Physics
                           Besides learning basic scrolling and physics, you'll learn how to change screen resolution.
                           We'll learn how to fix problems before the crop up and we'll also add some "fine detail" to our game
                           which the previous tutorials didn't focus have. This is the first tutorial that combines both scrolling and
                           physics. You'll also learn how to control the rate of animation. You'll edit the map file in this tutorial
                           to tell it which tile will be passable or not.
 
            -Step 3: Coding in NPCs
                           OK - Now you've gotten your basic stuff going. Now it's time to add some spice. In this tutorial you'll learn
                           how to load NPCs - Non Playable Characters. These guys just sit around, waiting for you to talk to them.
                           We'll also learn how to code events and let your game "Wait" for events (one event we'll code in is a
                           dialogue). You'll learn how to create a dialogue box and let it display text. Another thing in this
                           tutorial is that you'll check for direction; if you talk to the NPC from above then he'll turn up to face you.
                           Same goes for the rest of the directions as well. There'll be a brief 'sneak-preview' to the Event Driven
                           Programming tutorial because to finish this tutorial, I had to add some elements from the next one as
                           well.
             -Step 4: Event Driven Programming
                           It's time to move away from coding things manually. This Event Driven Programming tutorial will make
                           (almost) everything be read by text files. You will use your knowledge of ArrayLists to add objects with ease.                           
                           Most of the code you'll see will be familiar to you already. Just be sure you read "An Alternative to Arrays"
                           tutorial in Section II before you start this tutorial. We'll add more NPCs and make them each say different
                           things. Most of the code will be stripped away from form1 and into either text files or GameClass. We'll
                           create a clsLevel class which will set up your entire level (default character position, your NPCs, map, tileset
                           and more!
             -Step 5: Optimizations
                           Get rid of that darn lag! We'll speed up our application by adding optimizations such as (1) Indexing: A way to
                           reference bitmaps instead of creating an array of them, (2) Adjusting the Multiplier so that he doesn't step too
                           many times per frame, (3) Culling out what you don't see. The end result is a big difference in speed!

2) Programming an Arcade Game - Tetris
                         
 Don't expect this anytime soon (I still have the RPG section to complete), but I might include this in the
                           Section II instead. Just a heads-up.