[Gambas-user] Character movement game help
Kevin Fishburne
kevinfishburne at ...1887...
Wed Feb 18 08:50:43 CET 2015
On 02/18/2015 01:04 AM, Jair Yunis wrote:
> Alohaaa :)
>
> I am working on a little game and just started creating the environment in
> which the chracter moves around, that creates itself randomly as it is
> discovered,
> now, the thing is i want to make it in this particular way, but makes the
> movement pretty much rough,
> any ideas on how to make it smoother??? avoid lag and staff???
>
> The main for has only a Gridview (H455 x W483)
> and then 3 pictues (32 x 32) water.png, grass.png and forest.png added to
> data
I would use the SDL and OpenGL components with orthogonal projection,
which would make the graphics 2D and give you precise control over the
size and placement of tiles/quads. The graphics code can remain distinct
from the "main" code and yield smooth results by interpolating between
"current" and "target" versions of key variables. I can provide code
samples from my project if you need help "setting up" or using OpenGL in
GAMBAS. For example:
Public Screen As New Window As "Screen" ' Render window SDL surface.
' Create client's screen.
With Screen
.FullScreen = False
'.Framerate = 60
.Resizable = False
End With
' Show screen.
Screen.Show
' Enable 2D textures.
Gl.Enable(Gl.TEXTURE_2D)
' Set up alpha blending.
Gl.Enable(Gl.BLEND)
Gl.BlendFunc(Gl.SRC_ALPHA, Gl.ONE_MINUS_SRC_ALPHA)
' Set texture environment mode.
Gl.TexEnvi(Gl.TEXTURE_ENV, Gl.TEXTURE_ENV_MODE, Gl.MODULATE)
' Enable backface culling.
Gl.Enable(Gl.CULL_FACE)
' Set shading model.
Gl.ShadeModel(Gl.SMOOTH)
' Enable lighting.
Gl.Enable(Gl.LIGHTING)
Gl.LightModelfv(Gl.LIGHT_MODEL_AMBIENT, [0, 0, 0, 0])
Gl.Enable(Gl.LIGHT0)
' Enable normal normalization so scaled objects are lit correctly.
Gl.Enable(Gl.NORMALIZE)
' Set up the gamepad.
PadDevice = Exec ["cat", "/dev/input/js0"] For Read As "Gamepad"
' Set audio channels.
Channels.Count = 32
' Play loading screen music.
Music.Load("music/LOADING.wav")
Music.Volume = 0.5 * MusicScale
If PlayMusic Then Music.Play(0, 0)
Public Sub SpritePixel(ScreenX As Integer, ScreenY As Integer, Width As
Integer, Height As Integer, Centered As Boolean, SpriteScale As Integer)
' Draw specified sprite.
' Adjust position and size by sprite scale.
ScreenX *= SpriteScale
ScreenY *= SpriteScale
Width *= SpriteScale
Height *= SpriteScale
' Check if sprite is centered.
If Centered Then
' Center sprite coordinates.
ScreenX -= Width / 2
ScreenY -= Height / 2
Endif
' Create the textured quad.
Gl.Begin(Gl.QUADS)
' Bottom-left vertex.
Gl.TexCoord2f(0, 1)
Gl.Vertex2f(ScreenX, ScreenY + Height)
' Bottom-right vertex.
Gl.TexCoord2f(1, 1)
Gl.Vertex2f(ScreenX + Width, ScreenY + Height)
' Top-right vertex.
Gl.TexCoord2f(1, 0)
Gl.Vertex2f(ScreenX + Width, ScreenY)
' Top-left vertex.
Gl.TexCoord2f(0, 0)
Gl.Vertex2f(ScreenX, ScreenY)
Gl.End()
End
Hopefully this helps. I also have code to load textures from disk,
convert them to OpenGL textures and map them to quads. I don't recommend
using Qt or GTK objects for graphics; OpenGL is the way to go for
consistency and control.
--
Kevin Fishburne
Eight Virtues
www: http://sales.eightvirtues.com
e-mail: sales at ...1887...
phone: (770) 853-6271
More information about the User
mailing list