Showing posts with label tutorial. Show all posts
Showing posts with label tutorial. Show all posts

Saturday, September 28, 2013

Blender Gamekit Lua Constrain Plane Side Movement

Blender 3D game engine provides location constraint to limit object in a certain area. However this was not implemented in the Gamekit package. I have to do some scripting to get around it. So my plane will not fly out of the screen. Below is the script and red bits are my explanations. This is apart of series tutorials to create a 2d arcade plane game using Blender 3D and gamekit. Check this blog for more details.


-------BELOW IS OnInit.lua--------------

--Global variable
    --set touch move parameters
    Sensitivity = 0.005
    --invert = -1 -> is inverted
    Invert = 1
    Threshold=3.5
 -- Plane Constrain parameter
    Xmin = -0.87 --This is the left boundary, adjust if necessary
    Xmax = 0.87 --This is the right boundary, adjust if necessary
--this function is to stop plane moving cross the boundary
function xMoveFilter(limitSignal,oldX)
    if limitSignal == -1 and oldX > 0 then
        return oldX
    elseif limitSignal == -1 and oldX < 0 then
        return 0
    elseif limitSignal == 1 and oldX >0 then
        return 0
    elseif limitSignal ==1 and oldX <0 then
        return oldX
    end
        return 0
end
--this function is to determine whether plane is over the broundary
function XoverLimit(obj)
    local vec3 = obj:getPosition()
    if vec3.x < Xmin then
        return -1
    elseif vec3.x > Xmax then
        return 1
    else
        return 0
    end
end
--this function is for debug used to display plane position
function printPosition(obj)
    local vec3 = obj:getPosition()
    dPrintf("position x: " .. vec3.x)
    dPrintf("position y: " .. vec3.y)
    dPrintf("position z: " .. vec3.z)
    
end    
function velocityCap(v,vmax)
    if (v>vmax) then
        return vmax
    elseif (v < -vmax) then
        return -vmax
    else return v
    end
end

-------BELOW IS planeTouchMove.lua--------------

mouse=OgreKit.Mouse()
scene = OgreKit.getActiveScene()
play = scene:getObject("plane")
logicM = OgreKit.LogicManager()
myLogicObject = logicM:getObject("plane")
mySensor = myLogicObject:getSensor("Collision")
maxVelocity=0.08


mouse:capture()
--print current plane posistion on screen
printPosition(play)
--using threshold to filter out unwanted small touch movement

if ((mouse.xrel>Threshold or mouse.xrel<-Threshold)or(mouse.yrel>Threshold or mouse.yrel<-Threshold)and (not(play.touchBoundary))) then
      velocityY=velocityCap((mouse.yrel) * Sensitivity, maxVelocity)
      velocityX=velocityCap((mouse.xrel) * Sensitivity, maxVelocity)
      --check if plane over screen boundary 
      limitSignal = XoverLimit(play)
      --the X Y directions are swapped as the screen is in landscape
      if limitSignal==0  then
      --when plane is inside boundary
        play:translate(-velocityY* Invert,-velocityX * Invert,0)
      else
      --when plane touches boundary it can only move away from boundrary
        newY = xMoveFilter(limitSignal,-velocityY * Invert)
        play:translate(newY,-velocityX * Invert,0)
      end
end




    

Monday, September 23, 2013

Blender 3D Gamekit Plane Shoot Bullet IOS Android Tutorial

This is a follow up to the plane arcade game tutorial posted before. This time I added plane shooting bullet. For how to run it on real android device such as nexus 7, and ios devices, such as iPad. Please go to my youtube channel: http://www.youtube.com/user/hhhnzw. there are videos showing that.

1. if you continue from last tutorial first thing is to rename the Background image from Plane to background. it is confusing, as the aeroplane is also called plan.
2. Create an empty element. set its parent to plane. and move it to centre of the plane. and move down. so the Z axis' number is -0.1. Rename it as EmptyGunCentre.
3. Create a box, and scale smaller, it will become bullet. So pick a size as you think is proper. Rename it to bullet01.
4. Unwrap & export UV map from the box. and paint it to look like a bullet.
5.load the edited uv map in blender, and apply it to bullet element.
6. Put bullet on to layer 2, HIDDEN layer.
7. Pick the EmptyGunCentre, go to game logic editor to set it up like image below:
8. Turn on the hidden layer and pick the bullet. Then go to physics tab. Change type to dynamic. Change the min max velocity to 3.5. And lock Z axis.
9. Now pack the content in, and save the file. Test it on PC first. Then follow my other videos to run it on Android and IOS devices.

Blender file can be downloaded from link below:





Friday, August 23, 2013

Blender 3d Gamekit Touch Move Android Tutorial


Following last tutorial, background moving, as moving direction is wrong, we need to fix it first.
1. Rotate camera and change motion direction in game logic editor.
2. Adjust plane shape.
3. Cut seam line on the plane model. And generate uv map.
4. Export uv map as image file.
5. Open uv map in gimp2 to paint the texture.
6. Save image and load into Blender
7. Apply texture to plane. And verify in 3d view.
8. Creat txt file. Name it OnInit.lua and put some global variables/parameters. So later on if we want to change something globally, we can easily find them. This script will be called automatically when game starts.

--Global variable
    --set touch move parameters
    Sensitivity = 0.005
    --invert = -1 -> is inverted
    Invert = 1


    Threshold=3.5

9. Create txt file called planeTouchMove.lua and put following code......
mouse=OgreKit.Mouse()
scene = OgreKit.getActiveScene()
play = scene:getObject("plane")
mouse:capture()

--display mouse movement for debug
--dPrintf("---xrel: " .. mouse.xrel)
--dPrintf("---yrel: " .. mouse.yrel)
--dPrintf("---xrel + yrel: " .. mouse.xrel+mouse.yrel)

--using threshold to filter out unwanted small touch movement
if ((mouse.xrel>Threshold or mouse.xrel<-Threshold)or(mouse.yrel>Threshold or mouse.yrel<-Threshold)) then
      play:translate(-(mouse.yrel) * Sensitivity * Invert,-(mouse.xrel) * Sensitivity * Invert,0)
      dPrintf("---xrel: " .. mouse.xrel)
      dPrintf("---yrel: " .. mouse.yrel)
else
     dPrintf("no movement")
     


end


What does this do is measuring mouse movement. And pass it to the plane. It uses sensitivity and invert variables defined in the onInit.lua file to adjust the movement. And use threshold to filter out unwanted tiny figure movement.

10. Go to plane game logic and create sensor mouse + movement and click the positive pulse "..." button, it is the first to the left.

11. In game logic link sensor with lua script.
12. Pack content and save file.
13. Test on desktop.
14. Copy the blender file into android project asset folder.
15. Open eclipse and android Gamekit file.
16. Refresh asset folder and goto main.java to change file name to the one just copied.
17. Connect android device to desktop
18. In eclipse save and run.

blender file is available at:https://docs.google.com/file/d/0B2dWucciRgDPUmFOc19ibFNYNmc/edit?usp=sharing

Sunday, July 21, 2013

How to do Background Rolling On Mobile Device Using Blender & Gamekit

This demo showing how to create a rolling background as seen on arcade platform 2D/2.5D games using blender3D and gamekit. at the end test on a real android device Nexus 7.
Following are the Steps:
1. Create a 'mesh plane' rectangular as background
2. Move and Rotate Camera
3. Import pre-modelled Plane
4. Add shadeless material to background
5. Unwrap UV,1024 x 1024
6. export UV image
7. stitch background image on UV map in photoshop or gimp2
8. save the image
9. load image into texture under material
10. add game logic to camera and airplane
11. pack external data in file and save file
12. test on blender gamekit add-on using desktop
13. copy file into gamekit android package asset folder
14.open eclipse, change the file name reference in the main.java file
15. connect nexus 7 and run the test.

the blender file can be download at

Wednesday, June 19, 2013

ios 3D game Test on Simulator


  
ios game 'switch' using Blender 3D 2.6 and gamekit game engine
build iOS iPhone ipad game using free Blender 3D and GameKit,
Just a little programming knowledge required.

Game Engine iOS Build Tutorial


this video showing how to build blender 3d gamekit ( free game engine )iPhone ios application for running blender 3D game on iOS devices.
download cmake from cmake.org.in xcode project setting, change code signing to no, i missed that in the video.

The goal of gamekit is to create a basic game engine that allows fast prototyping build around open source software free for commercial use.

Using Ogre or Irrlicht for graphics, Bullet for physics, OpenAL for sound
OgreKit is most actively developed and in svn/trunk, the suspended Irrlicht version is in svn/branches/IrrKit.
Engine is written in C++ and the game logic can be done in C++, Lua scripting or logic bricks


Friday, September 28, 2012

Android openGL touch look testing on nexus 7



Blender 3D gamekit Android opengl touch look testing on nexus 7 
using Lua Script to build game logic






below is the lua script used in video:

Sensitivity = 0.005
Invert = 1
Threshold=6

--OgreKit.DebugPrint(Sensitivity)
mouse=OgreKit.Mouse()

scene = OgreKit.getActiveScene()
play = scene:getObject("Player")
sensor=scene:getObject("senMouseLook")

mouse:capture()
--dPrintf("---xrel: " .. mouse.xrel)
--dPrintf("---yrel: " .. mouse.yrel)
if mouse.xrel+mouse.yrel>Threshold or mouse.xrel+mouse.yrel<-Threshold then
    play:roll( -(mouse.xrel ) * Sensitivity * Invert,OgreKit.TS_LOCAL)
    play:pitch( -(mouse.yrel) * Sensitivity * Invert,OgreKit.TS_LOCAL)       
end