This is an example, screenshot of which I've posted on Twitter some time ago but was a bit busy to make illustrated guide and post for. It's about creating a 3d platformer game in CraftStudio via recently introduced physics functions.
Some time ago I've made a UDL2 definition for Lua-based programming language called Killa.
Actually I was planning to wait until next version of language will be released (which alters standard module names, among other things), but apparently that isn't going to be that fast, so here it is.
If you don't know what Killa is, it's a Lua-based scripting language, which adds some JavaScript-like syntax parts (including proper for-loops, bitwise operators, ternary operators, assignment operators, and more) while keeping the pleasing parts of Lua in. Also it does not allow you to accidentally leak variables in global scope, which excludes possibility of common Lua "silent errors". There's also a topic about it here. You can read more about it there, if this sounds interesting for you.
HaxeNME version. Love2d version works equally to this.
Click and drag different parts for interaction.
By user request on Love2d IRC channel, yesterday I've made this nice function to do intersection/collision check between a ray (for clearance, here, a ray is a infinite line with starting point but no end point) and a circle.
Underlying code is fairly simple, though it does not even require understanding to use the function.
Love2d version takes advantage of multi-return values.
Haxe version has slightly longer code due for more optimal implementation of interface.
A very rushed Haxe version to demonstrate how it looks in motion.
Does not necessarily represent features of love2d version in this post.
This was originally going to be a short reply-fix for a topic on love2d forum, but it seems that author did get somewhere with figuring that out on ones own, and I've quite overdone it in terms of a simple answer, so I formatted the code nicely, added several more features, and made this example.
Just in case above demonstration does not work, this example demonstrates a specific approach to game dynamic, where game logic occurs once per interval, while things are drawn and receive input at higher rate. I do not recall any actual platformer games that would use this principle, but a good example of such game is Snake (original grid-based version).
Example includes grid-to-point collision checking, actual specific platformer behaviour (with adjustable values), and value tweening (to make player movement nice & smooth).
Yesterday I've made a game in Love2d. In a bit over 8 minutes.
Originally I planned to get everything done in 5 minutes (similar to previous GameMaker-related post), however I somewhat overrated my ability to type 3-segment function names that I'm not that similar with.
At some point of time people were asking me about how bullets were implemented in love.blast() so I wrote this post.
While the algorithms in the actual [mini]game were slightly more complex than what is described here, the difference is not apparent until you have thousands of bullets.
In free time of last days I've been developing earlier mentioned thing in Love2d, which is platformer engine.
One provides a simple framework for games that use combination of aligned tiles and dynamic objects.
As well it adds a easily modifiable system to load levels from strings, giving freedom for implementing level editors.
You can download a compiled version here or watch discussion thread on official forum here.
Love2d only provides you with a function to check if specific key is currently down, love.keyboard.isDown(key), and no functions to check if key was pressed\released.
But there are events, which can be used to implement such functions.
Code below demonstrates sample implementation.
If you've been working with Love2d, you might have noticed that there isn't an actual debug console, and print() calls will not get displayed anywhere.
However, it's pretty easy to make your own system to display single-line output messages.
Here is an example of one.
While having a look at LÖVE engine, I've noticed that described compilation method under Windows is not quite fast or fun (because of requiring you to open console and type\paste project-specific code). So I've grabbed my semi-existing Batch coding skills and made a better one:
copy/blove.exe+%1 "%~dpn1.exe"
How to use this:
Create a file called 'compile.bat' in the same directory with Love2d runner.
Paste above code into it.
To compile a game, drag it's .love\.zip onto your compile.bat - an executable (compiled game) will appear next to it, named after game's file.