Jump to content
Sign in to follow this  
matwachich

[UDF] G-Engin

Recommended Posts

matwachich

Hi everybody,

This is a months work, and it's finally done!

It's a 2D games engin based on GDI+ for graphics and text, and BASS for sound.

It's pretty simple to use, and there is a complete and clear documentation (generated by Natural docs)

Link

  • Like 3

Share this post


Link to post
Share on other sites
Syed23

This awesome and inspiring to do something:)


Thank you,Regards,[font="Garamond"][size="4"]K.Syed Ibrahim.[/size][/font]

Share this post


Link to post
Share on other sites
VisualB

stunning awesome code.

5 star

Share this post


Link to post
Share on other sites
4Eyes

This is bloody amazing! I can see many games being built around this. Can't post here what jumped out of my mouth when a started the particle example. :mellow:

Good work! Only 31 posts and 1 month in development?

4Eyes

Edited by 4Eyes

Share this post


Link to post
Share on other sites
UEZ

Incredible nice work! :mellow:

If you could translate the code descriptions to english would be great because my french is absolutely poor!

5* from me!

Br,

UEZ


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
IRON

really awesome! Thanks for sharing! :mellow:

Share this post


Link to post
Share on other sites
matwachich

Thank you every body!

- Only 31 posts because i'm from the french community, and this is my biggest work and i decided to share here!

- I must let the french descriptions for the french users, but the documentation is in english!

- I forgot to tell that the performances are not really good: the greater maximum FPS was 180 for me (Dual core T3400 2.16Ghz, 3Go Ram, Geforce G103M 512Mo), but i think it's enought for some nice little games!

It's not my fault, but it's GDI+.

I tried to do it wit openGL, but i couldn't load textures, so i did it with another programing language (search GL-Engin in google codes, it's in FreeBasic)

Please share any game you make with, i really want to see them!!!

I'm here for any questions!

Share this post


Link to post
Share on other sites
monoscout999

This is awersome, really good work... thanks for sharing :mellow:

Share this post


Link to post
Share on other sites
FireFox

Impressionnant, très bon travail ! (amazing, very good work)

5* from me.

Br, FireFox.


 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites
BuckMaster

Thanks for creating this engine, its very easy to use and to create new things,

This is the first game I've been making with it, started off with your tank and went from there, probably going to add more in the next couple of days,

One of the only glitches i cant seem to figure out is why they sometimes shoot their selves, but besides that its great

Controls

W - Forward

S - Backwards

A - Left

D - Right

Space - Drop Mine

Posted Image

Download Files Here:

http://www.mediafire.com/?nmbyri6bm946bq3

Edited by BuckMaster

Share this post


Link to post
Share on other sites
xzhat

Hi Buckmaster,

tried your example, but got this result(screenshot).

any clue why?

post-66865-0-09980500-1314006238_thumb.p

Share this post


Link to post
Share on other sites
matwachich

They shoot themself because you check the collision between the enemies projectiles and them.

Share this post


Link to post
Share on other sites
TheGuardian

Wow this is amazing, it's simple too.... I like simple :mellow:

Share this post


Link to post
Share on other sites
Mobius

Bloody hell, Dude this rocks, ran nicely on this crappy old rig too!

5* without a shadow of a doubt. :mellow:

Respect

Vlad


wtfpl-badge-1.png

Share this post


Link to post
Share on other sites
UEZ

My 2 suggestions:

  • function _GEng_ImageLoadStream() has a memory leak in worst case scenarios
  • antialiasing for fonts when aero is enabled

1) use this code instead

;======================================================================================
; Function Name:    Load_BMP_From_Mem
; Description:          Loads an image which is saved as a binary string and converts it to a bitmap or hbitmap
;
; Parameters:           $bImage:    the binary string which contains any valid image which is supported by GDI+
; Optional:                 $hHBITMAP:  if false a bitmap will be created, if true a hbitmap will be created
;
; Remark:                   hbitmap format is used generally for GUI internal images, $bitmap is more a GDI+ image format
;                               Don't forget _GDIPlus_Startup() and _GDIPlus_Shutdown()
;
; Requirement(s):       GDIPlus.au3, Memory.au3 and _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Return Value(s):  Success: handle to bitmap (GDI+ bitmap format) or hbitmap (WinAPI bitmap format),
;                               Error: 0
; Error codes:              1: $bImage is not a binary string
;                               2: unable to create stream on HGlobal
;                               3: unable to create bitmap from stream
;
; Author(s):                UEZ
; Additional Code:    thanks to progandy for the MemGlobalAlloc and tVARIANT lines and
;                               Yashied for _GDIPlus_BitmapCreateDIBFromBitmap() from WinAPIEx.au3
; Version:                  v0.97 Build 2012-04-10 Beta
;=======================================================================================
Func Load_BMP_From_Mem($bImage, $hHBITMAP = False)
    If Not IsBinary($bImage) Then Return SetError(1, 0, 0)
    Local $aResult
    Local Const $memBitmap = Binary($bImage) ;load image  saved in variable (memory) and convert it to binary
    Local Const $len = BinaryLen($memBitmap) ;get length of image
    Local Const $hData = _MemGlobalAlloc($len, $GMEM_MOVEABLE) ;allocates movable memory  ($GMEM_MOVEABLE = 0x0002)
    Local Const $pData = _MemGlobalLock($hData) ;translate the handle into a pointer
    Local $tMem = DllStructCreate("byte[" & $len & "]", $pData) ;create struct
    DllStructSetData($tMem, 1, $memBitmap) ;fill struct with image data
    _MemGlobalUnlock($hData) ;decrements the lock count  associated with a memory object that was allocated with GMEM_MOVEABLE
    $aResult = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "handle", $pData, "int", True, "ptr*", 0) ;Creates a stream object that uses an HGLOBAL memory handle to store the stream contents
    If @error Then Return SetError(2, 0, 0)
    Local Const $hStream = $aResult[3]
    $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromStream", "ptr", $hStream, "int*", 0) ;Creates a Bitmap object based on an IStream COM interface
    If @error Then Return SetError(3, 0, 0)
    Local Const $hBitmap = $aResult[2]
    Local $tVARIANT = DllStructCreate("word vt;word r1;word r2;word r3;ptr data; ptr")
    DllCall("oleaut32.dll", "long", "DispCallFunc", "ptr", $hStream, "dword", 8 + 8 * @AutoItX64, _
                                           "dword", 4, "dword", 23, "dword", 0, "ptr", 0, "ptr", 0, "ptr", DllStructGetPtr($tVARIANT)) ;release memory from $hStream to avoid memory leak
    $tMem = 0
    $tVARIANT = 0
    If $hHBITMAP Then
        Local Const $hHBmp = _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
        _GDIPlus_BitmapDispose($hBitmap)
        Return $hHBmp
    EndIf
    Return $hBitmap
EndFunc   ;==>Load_BMP_From_Mem

Func _GDIPlus_BitmapCreateDIBFromBitmap($hBitmap)
    Local $tBIHDR, $Ret, $tData, $pBits, $hResult = 0
    $Ret = DllCall($ghGDIPDll, 'uint', 'GdipGetImageDimension', 'ptr', $hBitmap, 'float*', 0, 'float*', 0)
    If (@error) Or ($Ret[0]) Then Return 0
    $tData = _GDIPlus_BitmapLockBits($hBitmap, 0, 0, $Ret[2], $Ret[3], $GDIP_ILMREAD, $GDIP_PXF32ARGB)
    $pBits = DllStructGetData($tData, 'Scan0')
    If Not $pBits Then Return 0
    $tBIHDR = DllStructCreate('dword;long;long;ushort;ushort;dword;dword;long;long;dword;dword')
    DllStructSetData($tBIHDR, 1, DllStructGetSize($tBIHDR))
    DllStructSetData($tBIHDR, 2, $Ret[2])
    DllStructSetData($tBIHDR, 3, $Ret[3])
    DllStructSetData($tBIHDR, 4, 1)
    DllStructSetData($tBIHDR, 5, 32)
    DllStructSetData($tBIHDR, 6, 0)
    $hResult = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBIHDR), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'dword', 0)
    If (Not @error) And ($hResult[0]) Then
        DllCall('gdi32.dll', 'dword', 'SetBitmapBits', 'ptr', $hResult[0], 'dword', $Ret[2] * $Ret[3] * 4, 'ptr', DllStructGetData($tData, 'Scan0'))
        $hResult = $hResult[0]
    Else
        $hResult = 0
    EndIf
    _GDIPlus_BitmapUnlockBits($hBitmap, $tData)
    Return $hResult
EndFunc   ;==>_GDIPlus_BitmapCreateDIBFromBitmap

You have to adjust the function for your needs appropriatly!

2) besides _GDIPlus_GraphicsSetSmoothingMode() add also DllCall($ghGDIPDll, "uint", "GdipSetTextRenderingHint", "handle", $GFX_Buffer, "int", 4) to activate antialiasing for fonts whereas $GFX_Buffer is the graphic backbuffer.

Br,

UEZ

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites
arcker

impressionnant travail, tu as bien dû galérer.

De plus ça tourne sur de vieilles configs, pas mal !

5 étoiles pour moi, without a doubt too.


-- Arck System _ Soon -- Ideas make everything

"La critique est facile, l'art est difficile"

Projects :

[list] [*]Au3Service : Run your exe as service V3 / Updated 29/07/2013 Get it Here [/list]

Share this post


Link to post
Share on other sites
xzhat

Hi Buckmaster,

tried your example, but got this result(screenshot).

any clue why?

It worked after conversion to exe... hmm

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  

×