Jump to content
Sign in to follow this  
jWalker

BlockBuster - An OpenGL Game

Recommended Posts

jWalker

Hey all!

This is my first post on this forum.

I am programming (scripting) Autoit since abt. 3 Months.

My first "games" were some Reaction Games, mady with Koda and Autoit.

I also made a Pong clone which actually worked really good!

But now i found a nice OpenGL UDF on the forums...

I started to write my first programs on it and it is really cool to get these 3D things so easy and fast.

I want to share my first real OpenGL Project with you guys, and maybe i could find someone with cool ideas

and even someone who would really like to help me with this game.

At this Point, there is no really gameplay at all.

But if you know the game "Audiosurf" you can maybe imagine what i want this game to be like.

The music-aspect of audiosurf will not be implemented in my game. Just collecting some points, avoiding obstacles or shooting enemies... something like that...

You could have a look if you want :graduated:

A - Steer left

D - Steer right

F - Turbo

Here is the file:

blockbuster.au3

Here is the Code:

;--INCLUDES--
#include 'GlPluginUtils.au3'
#include <Misc.au3>
;<-----------
;--VARIABLES--
$PlayerPosX = 0
$PlayerPosZ = 0
$PlayerAngle = 0
$PlayerSpeed = 0.6
$UpDownSpeed = 0.03
$UpDownTrigger = "UP"
;<------------
;--DLL--
$userdll = DLLOpen("user32.dll")
;<------
;--OPTIONS--
AutoItSetOption( "TrayIconHide", 1 )
Opt( "WinTitleMatchMode", 3 )
$WinTitle = "BlockBuster"
;<----------
 
;--------OPENGL--------
;######################
;OpenGL Window
DefineGlWindow( $WinTitle, 800, 600 )
;Background Color
SetClearColor( 1.0, 1.0, 1.0 )
;Lights
CreateLight( 0, 300, 300, 300 )
SetLightAmbient( 0, 0.2, 0.2, 0.2 )
SetLightDiffuse( 0, 0.7, 0.7, 0.7 )
SetLightSpecular( 0, 1.0, 1.0, 1.0 )
;Camera
$xCam = 0 ;X Position of Camera
$yCam = -60 ;Y Position of Camera
$zCam = 80 ;Z Position of Camera
SetCamera( $xCam, $yCam, $zCam, 0, 40, 0 )
;Objects
$Player = ObjectCreate( )
$Ambient = ObjectCreate( )
;PLAYER
$PlayerRed = 0.5
$PlayerGreen = 0.5
$PlayerBlue = 0.5
$PlayerAlpha = 1.0
$Body = AddCylinder( $Player, 0, -7, 0, 3, 2.5, 10, 10, 10, $PlayerRed, $PlayerGreen, $PlayerBlue, $PlayerAlpha )
$EngineRight = AddCylinder( $Player, 2.9, -9, 0, 1.3, 1, 6, 10, 10, $PlayerRed, $PlayerGreen, $PlayerBlue, $PlayerAlpha )
$EngineLeft = AddCylinder( $Player, -2.9, -9, 0, 1.3, 1, 6, 10, 10, $PlayerRed, $PlayerGreen, $PlayerBlue, $PlayerAlpha )
$BackMain = AddPartialDisk( $Player, 0, -7, 0, 1, 3, 10, 3, 0, 360, $PlayerRed, $PlayerGreen, $PlayerBlue, $PlayerAlpha )
$BackMainInner = AddPartialDisk( $Player, 0, -6, 0, 0, 2.8, 10, 3, 0, 360, 0.9, 0.1, 0.1, 1 )
$BackRight = AddPartialDisk( $Player, 2.9, -9, 0, 0, 1, 10, 3, 0, 360, 0.9, 0.1, 0.1, 0.9 )
$BackLeft = AddPartialDisk( $Player, -2.9, -9, 0, 0, 1, 10, 3, 0, 360, 0.9, 0.1, 0.1, 0.9 )
;--->END OF PLAYER
;AMBIENT
$Street = AddCube( $Ambient, 70, 500, 0.01, 0.2, 0.2, 0.2, 1.0 )
;--->END OF AMBIENT
;--What to print on screen--
SetPrint( $Player )
SetPrint( $Ambient )
;<--------------------------
;--Set Position of Objects and Shapes at start--
ObjectTranslate( $Player, -1, -1, -1)
ShapeTranslate( $Ambient, $Street, -1, -1, -6)
;<----------------------------------------------
;###############################################
;<---------END OF OPENGL-------------------------
 
;--Hotkey Functions--
HotKeySet( "{ESC}", "ExitScript" )
;--------------------
 
WinWait( $WinTitle )
$CheckWindowTimer = TimerInit( )
 
;~  For $i = 1 To 10
;~   $Point = AddSphere( $Points[$i], Random(-25, 25), $PointsY[$i], 0, 3, 10, 10, 0.2, 0.95, 0.2, 1.0 )
;~  Next
;__________________________
;#######_GAMEPLAY_########
While 1
If _IsPressed("41", $userdll) AND _IsPressed("44", $userdll) Then
  If $PlayerAngle < 0 Then
   $PlayerAngle = $Playerangle + 2
   ObjectRotate( $Player, -1, $PlayerAngle, -1 )
  ElseIf $PlayerAngle > 0 Then
   $PlayerAngle = $PlayerAngle - 2
   ObjectRotate( $Player, -1, $PlayerAngle, -1 )
  EndIf
Else
  If _IsPressed("41", $userdll) Then
   If $PlayerAngle > 0 Then $PlayerAngle = $Playerangle - 4
   If $PlayerAngle > -35 Then
    $PlayerAngle = $PlayerAngle - 2
    ObjectRotate( $Player, -1, $PlayerAngle, -1 )
   EndIf
   If $PlayerPosX > -27.5 Then
    $PlayerPosX = $PlayerPosX - $PlayerSpeed
    ObjectTranslate( $Player, $PlayerposX, -1, $PlayerPosZ )
;~   ToolTip($PlayerPosX)
   EndIf
  ElseIf _IsPressed("44", $userdll) Then
   If $PlayerAngle < 0 Then $PlayerAngle = $Playerangle + 4
   If $PlayerAngle < 35 Then
    $PlayerAngle = $PlayerAngle + 2
    ObjectRotate( $Player, -1, $PlayerAngle, -1 )
   EndIf
   If $PlayerPosX < 25 Then
    $PlayerPosX = $PlayerPosX + $PlayerSpeed
    ObjectTranslate( $Player, $PlayerposX, -1, $PlayerPosZ )
;~   ToolTip($PlayerPosX)
   EndIf
  Else
   If $PlayerAngle < 0 Then
    $PlayerAngle = $Playerangle + 2
    ObjectRotate( $Player, -1, $PlayerAngle, -1 )
   ElseIf $PlayerAngle > 0 Then
    $PlayerAngle = $PlayerAngle - 2
    ObjectRotate( $Player, -1, $PlayerAngle, -1 )
   EndIf
  EndIf
EndIf
If _IsPressed( "46", $userdll ) Then
  If $zCam > 61 Then
   $zCam = $zCam - 0.35
   $yCam = $yCam + 0.25
  EndIf
  $UpDownSpeed = 0.08
;~   ToolTip($zCam&" "&$yCam)
  SetCameraPos( $xCam, $yCam, $zCam )
Else
  If $zCam < 82 Then
   $zCam = $zCam + 0.35
   $yCam = $yCam - 0.25
  EndIf
  $UpDownSpeed = 0.03
;~   ToolTip($zCam&" "&$yCam)
  SetCameraPos( $xCam, $yCam, $zCam )
EndIf
If $PlayerPosZ < 2.3 AND $UpDownTrigger = "UP" Then
$PlayerPosZ = $PlayerposZ + $UpDownSpeed
ObjectTranslate( $Player, $PlayerPosX, -1, $PlayerPosZ )
If $PlayerPosZ > 2.2 Then $UpDownTrigger = "DOWN"
ElseIf $PlayerPosZ > 0 AND $UpDownTrigger = "DOWN" Then
$PlayerPosZ = $PlayerposZ - $UpDownSpeed
ObjectTranslate( $Player, $PlayerPosX, -1, $PlayerPosZ )
If $PlayerPosZ < 0.15 Then $UpDownTrigger = "UP"
EndIf
 
;--Drawing of the Scene--
SceneDraw( )
Sleep( 3 )
;<-----------------------
;--End the program if window is removed--
If TimerDiff( $CheckWindowTimer ) > 500 Then
  If WinExists( $WinTitle ) = 0 Then ExitScript()
  If WinActive( $WinTitle ) == 0 Then WinWaitActive( $WinTitle )
  $CheckWindowTimer = TimerInit( )
EndIf
;<----------------------------------------
WEnd
;#######_GAMEPLAY END_########
;<----------------------------
 
;---FUNCTIONS---
;°°°°°°°°°°°°°°°
Func ExitScript()
DllClose($userdll)
Exit
EndFunc
;°°°°°°°°°°°°°°°
;<--------------

Share this post


Link to post
Share on other sites
pierrotm777

Where can i found the GlPluginUtils.au3 UDF please ?

Share this post


Link to post
Share on other sites
bogQ

click it -->


TCP server and client - Learning about TCP servers and clients connection
Au3 oIrrlicht - Irrlicht project
Au3impact - Another 3D DLL game engine for autoit. (3impact 3Drad related)



460px-Thief-4-temp-banner.jpg
There are those that believe that the perfect heist lies in the preparation.
Some say that it’s all in the timing, seizing the right opportunity. Others even say it’s the ability to leave no trace behind, be a ghost.

 

Share this post


Link to post
Share on other sites
blckpythn

I keep getting this upon running.

>"F:\AutoIT\install\SciTe\..\autoit3.exe" /ErrorStdOut "F:\AutoIT\BlockBuster.au3"   
F:\AutoIT\BlockBuster.au3 (25) : ==> Unknown function name.:
DefineGlWindow( $WinTitle, 800, 600 )
^ ERROR
>Exit code: 1    Time: 0.229

I checked the include file and it has

#compiler_plugin_funcs = DefineGlWindow

But does not have the Func anywhere else within the file.

Share this post


Link to post
Share on other sites
AdmiralAlkex

But does not have the Func anywhere else within the file.

Nor should it. Plugins live in a dll file, not au3. Make sure you put the Au3GlPlugin.dll in the same folder as the script.

Share this post


Link to post
Share on other sites
jWalker

Just Compile it and then run it from exe (32 Bit!, 64 didnt work for me anyhow..)

Share this post


Link to post
Share on other sites
Spiff59

I get an error regarding a missing GLAUX.DLL

Looking it up, all I find is an OpenGL library from 10 years ago?

Share this post


Link to post
Share on other sites
AdmiralAlkex

I get an error regarding a missing GLAUX.DLL

Looking it up, all I find is an OpenGL library from 10 years ago?

Afraid of the old? If you need the file there's a link in the post bogQ linked to. Edited by AdmiralAlkex

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×