i do web stuff most of the time but ive been diving into gamedev a few times.
this is a story about my journey picking game framework (and learning programming)
like other ppl here, first time i got introduced to coding is from flash
but not like adobe flash or macromedia flash.
im jump straight into adobe air, using flashdevelop and actionscript3.
it come with adobe air sdk. so pick adobe air instead of flash
Starling Framework
i found this incredible graphical framework
called starling framework capable of rendering using hardware acceleration.
at the time it still at v1.7
but it can do sooo much that i really love using this library
this also the first time i use library that can do hardware acceleration.
looking flash able to run at 60fps with starling is incredible.
it was fast.... like lightning fast on my old potato laptop
that was insane, why most of flash game didnt use this.
my guess is because it is hardware acceleration that means no vector
while in flash game heavily use vector so much that my laptop cant handle
yeah everything in starling must be in a texture. anything beside it gonna fallback into software render.
starling also have this smooth asset manager that i really like.
it really simple but very handy,
the way i like to use it just to point a folder
then starling gonna find anything that can be parsed then pool everything
when i request for example "image.png"
the asset manager gonna load that file then convert it to texture and bring it to loaded texture pool.
it also work the same for any type like text, json, sound, etc
i knowwww...it just a basic wrapper, but come on im still a kid back then. this thing really blown my mind
i also tried few library like flashpunk (now dead lol), and original flixel (haxeflixel and haxe didint exist at that time)
both is more proper game engine, i never like those two engine because i like doing things my own.
i have my own of input pooling system, scene manager, ecs, and other internal utils that i made.
thats why i prefer using starling that just provide rendering stuff.
i remember flashpunk had cool runtime debug built in that really handy
complete with a built in runtime console, like wtf.. that really awesome
after i gain lots of experience programming in general.
i found starling is too limited and i need more.
and then the migration begin
built in browser canvas
flash dying, adobe air moved to harman. html5 become default anywhere.
yup that the sign to move on. my first goto is javascript
i pick js because i also want to learn webdev.
the default canvas in browser is my first choice, because why not.
its literally built in browser. and also because starling and flash have the same api in form of Graphic.
i have no hard time doing this. and ofc it feels really barebone and didnt offer much feature lol.
nothing interesting that i could remember while using this
but at least i learn how to use js thanks for canvas
pixi.js
i miss my hardware acceleration rendering. pixi.js it still at v4 at the time.
its really simple to use but didint managed to make anything beside playing around
somehow i got kinda good at programming in js.
its really pain to make game using js, but cool to do stuff for webdev or server with nodejs
everytime you inside a class/object, you need to call "this" to adress variable inside that object
this can get annoying, in as3 it is optional, but in js.... aw man it really annoying
this also the time when i stop do gamedev and just learning js for web
i managed to learn reactjs, vue, webpack, etc...
heaps.io
oh would you look at that, haxe just realeased v4.0
guess its time to tried this badboy
my first logical way is looking for starling port of haxe.
it exist but arghh... how should i describe it.
haxe itself is really not that popular that time
looking for help really hard.
yup starling port haxe had lots of issue, but its working.
it just doesnt feel the same,
nowdays you might get better result using orignal starling and harman adobe air (it got much better now).
or try another cool library, like this heaps.io for example.
its really powerfull, the Graphic api (the canvas like for rendering shape) is fast
i use lots of graphic api because i like to doing prototype using it.
their docs lack a lots of things.
also building to android is quite pain in heaps.
you need to target c++, then compile it with android ndk...
sound simple huh? wait until you get lots of linker error...
its really pain to fix all of them, i dont wanna remember those pain
heaps for android is big no for me
heaps is cool but, i just dont like haxe in general.
i really want to build to native instead using their hashlink runtime.
building haxe to cpp then build the cpp is really lengthy process
so yeah didnt use it for quite long enough.
raylib
oh my god. its time to get serius its time to learn cpp
i saw lots of people doing cool stuff with cpp for example the melody series by ryan fleury
sadly he deleted the all the video :(
he is my motivation to learn cpp
i pick raylib because just look at their website
NOTE for ADVENTURERS: raylib is a programming library to enjoy videogames programming; no fancy interface, no visual helpers, no gui tools or editors... just coding in pure spartan-programmers way. Are you ready to enjoy coding?
it just the perfect library that i was looking for.
simple enough, not to barebone, but also fast for prototyping.
i didnt want it too barebone that i need to manage the windows.
im not a masocist that need to manage creating windows manually like opengl/sdl/glad/glu or whatever they call did.
so raylib was perfect. and i love it sooo much that c++ is now my main programming language till this day
raylib is in c, there is c++ binding, but i found much simpler without using it.
combined with imgui, i made plenty awesome apps to help my daily stuff.
the most cool thing i make is text editor, but not just a text editor. its an ascii art drawing text editor.
i was into ascii art too
there are already existing tool to draw ascii art, but i did not like any of them, so why not built it myself
here example of my ascii art from back then
! _ / \ _ ,^, / |,-'! 0 !'-,| \ / / \ ,' | // \\ | ', __________ / / \ |\ _ ;<`_____'>;|_ /| \ \ \ / \ | | |// ___ \\| ! ! |\ \ |`---_--! ! \_+---( )---+_______ | \ \ \+__(_)_ .,, ! | '"""' ||______\ | \----=----` || (_) // \ |--/"""""'--|| ! | || | || (_ //____\ ! | |\==========\ ======| || | !|___ /"__()__" |----|\\ \ | || | |'! _ || |==| | \\ _________\ | || | .=/`\ |__|| __ | | \"________"|=====| || | ||__|_| !| / \ | /^\ | | | \ ||=====\ | ||'==, `|<-->|' |"""|| | | == | | \|| ---- \ _ \ | -|- | /| || | | | \ | `' \ `-. | - ||\ | /-- |--| | |====== \ `========/| | |--/ -| | `\ \__\ |- |- | --| | | \|- `-/ `|---|- /| | | |--! |-- | | | \| `| |----| \/
yeah mostly i built a quick tool like that, not a game lol
making game is hard man... its easier to create apps instead of game
apps you just need ui and imgui already did all the job, but game... uggghhh you need to make everything
anyway raylib is my choice for anything that need native support.
i managed to built raylib in desktop both linux and windows, android,
and recently built to web using emscripten.
i really love using raylib
wait what you still reading until the end? uhmm thanks i guess.
i dont speak perfect english so please excuse me eventual mistakes