List of *FREE* game programming resources

Game development specific discussions.
arenth
Posts: 511
Joined: Aug 30, 2005 6:22

Post by arenth »

Graphics Gale

Graphics Gale is an excellent editor designed specifically for pixel art (IE sprites). The freeware version is perfect for making game graphics
(the professional version just adds the ability to export to various windows formats such as *.ico, *.ani).

A feature I really liked is animations, this has to be the coolest feature, you can setup, and edit animations in real time, so you can preview what your sprite would look like animated in game, and even refine it.
redcrab
Posts: 623
Joined: Feb 07, 2006 15:29
Location: France / Luxemburg
Contact:

Post by redcrab »

arenth wrote:Graphics Gale

Graphics Gale is an excellent editor designed specifically for pixel art (IE sprites). The freeware version is perfect for making game graphics
(the professional version just adds the ability to export to various windows formats such as *.ico, *.ani).

A feature I really liked is animations, this has to be the coolest feature, you can setup, and edit animations in real time, so you can preview what your sprite would look like animated in game, and even refine it.
The link does not work(can't find server) ... Typo prb ?
EDIT: solved ....
Last edited by redcrab on Jul 26, 2006 8:23, edited 1 time in total.
Josiah Tobin
Posts: 52
Joined: Jun 23, 2005 7:19
Location: Nanaimo, BC

Post by Josiah Tobin »

arenth wrote:A feature I really liked is animations, this has to be the coolest feature, you can setup, and edit animations in real time, so you can preview what your sprite would look like animated in game, and even refine it.
The program I use, CMK 1999, has this feature also-- It's extremely useful, I think I'd lose my patience working on long animations without it.
That and the snap-to-grid function for creating tilesets and mockups... Those two features are what keeps me from using a more advanced program (such as photoshop) for the majority of my art.

By the way, that link works just fine for me.
jdebord
Posts: 547
Joined: May 27, 2005 6:20
Location: Limoges, France
Contact:

Post by jdebord »

Fractals, ray-tracing etc:

http://www.mandelbrot-dazibao.com/Main/Main.htm

Wonderful site with QB programs.

The ray-tracing program has been ported to FB by Antoni Gual.
Dr_D
Posts: 2451
Joined: May 27, 2005 4:59
Contact:

Post by Dr_D »

Yeah, that's Jark's work. He's a virtual bad-ass. ;)
Dr_D
Posts: 2451
Joined: May 27, 2005 4:59
Contact:

Post by Dr_D »

I ran upon this today. I like it. It allows you to create your own wood textures, and it's pretty versatile. It would be great for such things as RPG wall textures, billiard tables, etc...

http://www.spiralgraphics.biz/ww_overview.htm
sir_mud
Posts: 1401
Joined: Jul 29, 2006 3:00
Location: US
Contact:

Post by sir_mud »

Great site for fonts you can use in your games. Link goes to TV/Movie/Band fonts.
http://www.typenow.net/themed.htm
TbbW
Posts: 348
Joined: Aug 19, 2005 10:08
Contact:

Post by TbbW »

heres an awsome site with sound:
http://freesound.iua.upf.edu/

they have alot of random sounds but more then half need some form of sound editing to fit you'r needs.
ryan_the_jedi_knight
Posts: 101
Joined: Mar 30, 2006 15:58

Post by ryan_the_jedi_knight »

This site contains info for all sorts of 3D and 2D Graphics: http://www.petesqbsite.com/ The BEST tutorials I've found on there have been Matthew Knight's tutorials. They don't use code but explain it in such a way that it helps you retain the knowledge.

Hope it helps ^_^
E.K.Virtanen
Posts: 785
Joined: May 28, 2005 9:19
Location: Finland

Post by E.K.Virtanen »

Yep, Petes site is da king. Funny that we have thought it so self-evident site that its not listed here. :D
Dr_D
Posts: 2451
Joined: May 27, 2005 4:59
Contact:

Post by Dr_D »

Here's some code to dump .B3D(Blitz3D) files...

Since our Rogue3D project needs bones and weight maps, we've been experimenting with different file formats that support them. Hopefully, we will finally get finished with a Lightwave loader, but that's turning out to be a beast from hell, with very large horns.

Anyway, I haven't tested it with any models, but hopefully it works ok. It was ported from some example I found somewhere. I just can't remember where now.

Code: Select all

Const False = 0, True = Not False


#define Chunk_ID(a,b,c,d) ( ((a)) OR (b SHL(8)) OR (c SHL(16)) OR (d SHL(24)))
#define Chunk_2String(_Chunk) CHR$(_Chunk)+CHR$(_Chunk SHR 8)+CHR$(_Chunk SHR 16)+CHR$(_Chunk SHR 24)
#define ID_BB3D  Chunk_ID( ASC("B"), ASC("B"), ASC("3"), ASC("D") )
#define ID_TEXS  Chunk_ID( ASC("T"), ASC("E"), ASC("X"), ASC("S") )
#define ID_VRTS  Chunk_ID( ASC("V"), ASC("R"), ASC("T"), ASC("S") )
#define ID_ANIM  Chunk_ID( ASC("A"), ASC("N"), ASC("I"), ASC("M") )
#define ID_KEYS  Chunk_ID( ASC("K"), ASC("E"), ASC("Y"), ASC("S") )
#define ID_BRUS  Chunk_ID( ASC("B"), ASC("R"), ASC("U"), ASC("S") )
#define ID_TRIS  Chunk_ID( ASC("T"), ASC("R"), ASC("I"), ASC("S") )
#define ID_MESH  Chunk_ID( ASC("M"), ASC("E"), ASC("S"), ASC("H") )
#define ID_BONE  Chunk_ID( ASC("B"), ASC("O"), ASC("N"), ASC("E") )


Declare Sub b3dExitChunk()
Declare Sub Read_String( Byval File_Num As Uinteger, Byref tString As String )
Declare Sub b3dSetFile( Byref file As Uinteger )
Declare Function Dump_B3D() As Integer
Declare Function b3dReadByte() As Byte
Declare Function b3dReadInt() As Integer
Declare Function b3dReadFloat() As Single
Declare Function b3dReadString() As String
Declare Function b3dReadChunk() As String
Declare Function b3dChunkSize() As Integer


Dim Shared As Integer b3d_Stack(100), b3d_file, b3d_tos
Dim As Uinteger File_Num = Freefile
b3dSetFile( File_Num )

Open "Models/B3D/Test_Cylinder.b3d" For Binary As #File_Num

    Dim As String Chunk
    Dim As Integer Version

    If b3dReadChunk()<>"BB3D" Then 
        Print "Invalid b3d file"
    End If
    Version = b3dReadInt()/100
    Print Version
    If Version>0 Then 
        Print "Invalid b3d file version"
    End If

    Dump_B3D( )

Close #File_Num
Sleep





Function Dump_B3D() As Integer
    
    Dim As String tname, Chunk
    Dim As Integer flags, n_frames, n_keys, sz, frame, blend, n_texs, k, j, tex_id
    Dim As Integer tc_sets, tc_size, n_verts, brush_id
    Dim As Integer v0,v1,v2, n_tris, n_weights, vertex_id
    Dim As Single fps = any, fx = any, weight = any
    Dim As Single key_px = any, key_py = any, key_pz = any
    Dim As Single key_sx = any, key_sy = any, key_sz = any
    Dim As Single key_rw = any, key_rx = any, key_ry = any, key_rz = any
    Dim As Single x_pos = any, y_pos = any, z_pos = any
    Dim As Single x_scl = any, y_scl = any, z_scl = any
    Dim As Single w_rot = any, x_rot = any, y_rot = any, z_rot = any
    Dim As Single rot = any, lfa = any
    Dim As Single red = any, grn = any, blu = any, alp = any, shi = any
    Dim As Single x = any, y = any, z = any
    Dim As Single nx = any, ny = any, nz = any
    
    
    Do While b3dChunkSize()
		chunk = b3dReadChunk()
        Print "Chunk: " & chunk & " size =" & b3dchunksize() 
        
		Select Case chunk
		Case "ANIM"
			flags    = b3dReadInt()
			n_frames = b3dReadInt()
			fps      = b3dReadFloat()
            Print "Animation Flags/fps " & flags & "/" & fps
        Case "KEYS"
			flags=b3dReadInt()
			sz=4
			If flags And 1 Then sz=sz+12
			If flags And 2 Then sz=sz+12
			If flags And 4 Then sz=sz+16
			n_keys=b3dChunkSize()/sz
			If n_keys*sz=b3dChunkSize() Then
                Print "keys " & n_keys
				'read all keys in chunk
				While b3dChunkSize()
					frame = b3dReadInt()
					If flags And 1 Then
						key_px = b3dReadFloat()
						key_py = b3dReadFloat()
						key_pz = b3dReadFloat()
                    End If
                    If flags And 2 Then
                        key_sx = b3dReadFloat()
                        key_sy = b3dReadFloat()
                        key_sz = b3dReadFloat()
                    End If
                    If flags And 4 Then
                        key_rw = b3dReadFloat()
                        key_rx = b3dReadFloat()
                        key_ry = b3dReadFloat()
                        key_rz = b3dReadFloat()
                    End If
                Wend
            Else
                Print "Illegal number of keys!!!"
            End If
        Case "TEXS"
            While b3dChunkSize()
                tname = b3dReadString()
                flags = b3dReadInt()
                blend = b3dReadInt()
                x_pos = b3dReadFloat()
                y_pos = b3dReadFloat()
                x_scl = b3dReadFloat()
                y_scl = b3dReadFloat()
                rot   = b3dReadFloat()
                Print tname
            Wend
        Case "BRUS"
            n_texs=b3dReadInt()
            'read all brushes in chunk...
            While b3dChunkSize()
                tname = b3dReadString$()
                red   = b3dReadFloat()
                grn   = b3dReadFloat()
                blu   = b3dReadFloat()
                alp   = b3dReadFloat()
                shi   = b3dReadFloat()
                blend = b3dReadInt()
                fx    = b3dReadInt()
                For k=0 To n_texs-1
                    tex_id=b3dReadInt()
                Next
                Print tname
            Wend
        Case "VRTS"
            flags   = b3dReadInt()
            tc_sets = b3dReadInt()
            tc_size = b3dReadInt()
            sz=12+tc_sets*tc_size*4
            If flags And 1 Then sz = sz + 12
            If flags And 2 Then sz = sz + 16
            n_verts=b3dChunkSize()/sz
            If n_verts*sz = b3dChunkSize() Then
                Print "vertex count: " & n_verts
                'read all verts in chunk
                While b3dChunkSize()
                    x = b3dReadFloat()
                    y = b3dReadFloat()
                    z = b3dReadFloat()
                    Print x,y,z
                    If flags And 1 Then
                        nx = b3dReadFloat()
                        ny = b3dReadFloat()
                        nz = b3dReadFloat()
                    End If
                    If flags And 2 Then
                        red = b3dReadFloat()
                        grn = b3dReadFloat()
                        blu = b3dReadFloat()
                        lfa = b3dReadFloat()
                    End If
                    'read tex coords...
                    For j=1 To tc_sets*tc_size
                        Dim As Single t
                        t = b3dReadFloat()
                    Next
                Wend
            Else
                Print "Illegal number of vertices!!!"
            End If
        Case "TRIS"
            brush_id = b3dReadInt()
            sz=12
            n_tris = b3dChunkSize()/sz
            If n_tris * sz = b3dChunkSize() Then
                Print "Triangle count: " & n_tris
                'read all tris in chunk
                While b3dChunkSize()
                    v0 = b3dReadInt()
                    v1 = b3dReadInt()
                    v2 = b3dReadInt()
                    
                Wend
            Else
                Print "Illegal number of triangles!!!"
            End If
        Case "MESH"
            brush_id = b3dReadInt()
            Print "Brush ID " & brush_id
        Case "BONE"
            sz=8
            n_weights = b3dChunkSize()/sz
            If n_weights * sz = b3dChunkSize() Then
                'read all weights
                Print "Weights " & n_weights
                While b3dChunkSize()
                    vertex_id = b3dReadInt()
                    weight = b3dReadFloat()
                Wend
            Else
                Print "Illegal number of bone weights!!!"
            End If
        Case "NODE"
            tname = b3dReadString$()
            x_pos = b3dReadFloat()
            y_pos = b3dReadFloat()
            z_pos = b3dReadFloat()
            x_scl = b3dReadFloat()
            y_scl = b3dReadFloat()
            z_scl = b3dReadFloat()
            w_rot = b3dReadFloat()
            x_rot = b3dReadFloat()
            y_rot = b3dReadFloat()
            z_rot = b3dReadFloat()
            Print "name = " & tname
        End Select
        
        Dump_B3D()          'load the sub_chunks
        b3dExitChunk()		'exit this chunk
        
    Loop
    Return True
End Function



Sub b3dSetFile( Byref file As Uinteger )
	b3d_tos=0
	b3d_file = file
End Sub

Function b3dReadByte() As Byte
    Dim As Byte rbyte
    Get #b3d_file,, rbyte
	Return rbyte
End Function

Function b3dReadInt() As Integer
    Dim As Integer rInt
    Get #b3d_file,, rInt
    Return rInt
End Function

Function b3dReadFloat() As Single
    Dim As Single rFloat
    Get #b3d_file,, rFloat
    Return rFloat
End Function

Function b3dReadString() As String
    Dim As String T
    Dim As Byte ch
	Do
		ch=b3dReadByte()
		If ch=0 Then
            Return T
        End If
		T+=Chr$(ch)
    Loop
End Function

Function b3dReadChunk() As String
    Dim As Integer k, sz
    Dim As String Tag
	For k=1 To 4
		tag+=Chr$(b3dReadByte())
    Next
	sz = b3dReadInt()
	b3d_tos+=1
	b3d_stack(b3d_tos) = Seek(b3d_file)+sz
	Return Tag
End Function

Sub b3dExitChunk()
    Seek b3d_file, b3d_stack(b3d_tos)
	b3d_tos-=1
End Sub

Function b3dChunkSize() As Integer
    Dim As Integer rint
	rint = b3d_stack(b3d_tos)- Seek(b3d_file)
    Return rint
End Function
Dr_D
Posts: 2451
Joined: May 27, 2005 4:59
Contact:

Post by Dr_D »

SuperUV for lightwave is now free. :)

http://www.flay.com/GetDetail.cfm?ID=1924
Grifter
Posts: 6
Joined: Sep 29, 2005 3:13
Location: Oakland, CA USA
Contact:

Post by Grifter »

Sound/Audio

MilkyTracker - Freeware, 100% FastTracker 2 compatible clone with many improvements over the original. Able to export to .XM, .MOD and .WAV file types, import an enormous variety of mod types and load any file type as a sample. Ported to nearly every OS imaginable including Pocket PC. The author has stated he plans on releasing it as open source as soon as he's finished developing it as much as he cares to.


ChibiTracker - Open source ImpulseTracker 2 clone. ImpulseTracker picked up where FastTracker 2 left off, allowing more channels, new effects including filters, and stereo samples. ChibiTracker has included reverb as a new effect though, at the cost of ImpulseTracker 2 compatibility.


More to come later...
diffeecult
Posts: 84
Joined: Feb 03, 2007 2:37

Post by diffeecult »

2D Art Tools:

World Creator. Version 1.5 is freeware.

http://www.inet2inet.com/Main/Main.htm
Lemon-Man
Posts: 184
Joined: Dec 04, 2006 17:47
Location: Minnesota, USA
Contact:

Post by Lemon-Man »

I really like Tile Studio. But I can't use it with freeBasic...
Is there a way to use it with freeBasic?
Post Reply