GDevelop's monthly recap − August 2016

Hi GDevelopers,

We hope you enjoyed your holidays. :smiley:
But now, it’s time to get back to work and we already did on GDevelop. So, this is the first monthly recap of GDevelop and it will contain an explanation of the features we’ve been working on the previous month (and even since the last version of GDevelop as it’s the first recap). I hope we’ll be able to write such a recap each months but we can’t guarantuee that we’ll write one every months.

So now, let’s see what happened during this month.

[size=150]Inventory extension[/size]

This new extension will be included in the next version of GDevelop for both the native and the HTML5 platform.

It provides a simple way to store the amounts of “items” with contraints on them (can the player has an infinite number of a particular item, or just a particular amount of it ? …). You can also equip an item and get the equipped item (if the item is not in the inventory, then it’s not equipped) and tests for the existence of an item.

The items are represented as strings and the extension can manage different inventories (by names). They can also be serialized or unserialized in a variable, a good way to easily save the inventory of a player.

Note that this doesn’t provide an user interface to see or edit the inventory. It’s just a virtual inventory in memory.


[size=150]Anchor behavior[/size]

This new extension will be included in the next version of GDevelop for both the native and the HTML5 platform.

This new behavior will allow the developer to anchor the objects’s edges to the sides of the game window. This is really convenient for games that want to support multiple resolution. For instance, you can ensure that an object stay 100px away from the bottom-right corner of the window. You can also attach each edge of the object to a different side of the window, causing the object to stretch to keep its edges to the specified distance of the window’s sides.

In fact, setting a distance constraint between the object’s edges and the window’s sides is not the only feature of the behavior. You can also set an edges of the object to stay at a relative position on the window.

For example, you can set the left edge to stay at the 0.5 relative position of the window so that the left edge of the object stays at the center of the window. You can combine the different anchors to make your objects position and resize as you want without any events.

[size=150]Improved link event[/size]

This feature is yet to be merged in GDevelop’s source code for the next version.

As requested by some users on the forums, the link event has been improved. It’s now possible to link only to an events group of a scene/external event sheet. This allows to include only parts of scene/external events sheet’s events without having to update the events lines numbers after each update of the included scene/external events sheet. The option to include only events from a start position to an end position will be deprecated and only available for already existing link events that were using it.

Capture d'écran de 2016-09-03 00-17-22.png


Some users have reported a big loss of performance when using large tilemap objects with collisions conditions or with the platform behavior. This was caused by GDevelop considering all the hitboxes of the objects as soon as the objects were close enough to collide. As tilemaps contains as many hitboxes as tiles, this was causing huge fps drops. This will be fixed in the next version of GDevelop as it now uses a “hint” rectangle to request only the needed hitboxes from the objects. So, the size of the tilemap doesn’t matter anymore.
Also many optimizations have been implemented for the HTML5 platform.


Some bugs have been fixed:

  • Howler.js (the library managing sounds on the HTML5 platform) was updated to fix the music looping issue
  • We worked with the wxWidgets devs to fix a memory corruption causing random crashes in GDevelop on Linux. This will be fixed when the next bugfix version of wxWidgets (3.0.3) will be available in the Linux distributions
  • Fix a memory corruption in compiled games that could cause a random crash too

That’s it for the first monthly recap of GDevelop. :slight_smile:
Feel free to discuss the above points or ask questions about the future of GDevelop.

Nice first recap, it looks professional, I’m testing the inventory extension right now, and finally understood how the anchor behavior works, thanks :smiley:

OOOO YEAH! That is huge relief! Btw you don’t have to use any behaviors or collision conditions to tilemap object to see big performance loss. You need only big single map (it does not really need to be that big to see the loss).
But thank you, this monthly recap is very, very, VERY good thing! :slight_smile:

I don’t understand. Do you see huge fps drop when a tilemap is on the scene without any instruction (condition/action) or behavior linked to it ? Because it’s not likely to happen : when doing nothing (except drawing) with it, this should not consume a lot of processing power.

Yep, just like that. In scene map size was something like ~X:6300 , Y: 1000. Tiles were 16x16 so in tilemap X was ~392 and Y ~64.
There were no behaviors and nothing actions or conditions, I used different sprites as a platforms. So to solve that problem I had to cut the map to 5 different parts. You can test it by yourself (I think it depends your pc how much it can take). I got very bad laptop so yeah, it doesn’t handle it very good :smiley:
But it could be very nice if we can make whole map using tilemap object without cutting it apart.

That may compute from the transformation (positioning) that is applied to all the tiles at each frames. I’ll try to see what I can do to improve this.

Where can we download this version? I would like to try it out

It’s not available. This forum post just contains the things weve working on in august 2016. :wink:

Great :slight_smile:

How the Inventory system is going to work?
Is there going to be an “item” behavior that we can add to an object and this way make it an item that can be picked up or we need to use normal objects?
How you going to setup the purpose of the items? Which one can be used, equipped, which one is going to increase health if used, and which one going to increase ammo if used, or may have an automated effect in case we have it or which one is a weapon that we can and need to be equip in order to use…etc?

No, you misunderstood the inventory system. It’s just a virtual array of items storing their quantity. It provides some other actions to equip an item (it checks automatically if the item exists in the inventory). But, it’s not a full inventory system and it’s completely disconnected from objects.

So it is not an inventory then, basically it is just an array that I can use to store strings and quantities like:
“apple” = 10
“pearl” = 2
“AK47 ammo” = 127
and how to enter and use this information is totally up to me.

If so, it might should be called something different, for example in 001 the same thing is called a “Collection variable” and it seems the same thing to me except, in 001 we have a visual editor to add the strings with default values if we wan it to but other than that, the same thing. It helps with making an inventory, but it is not an inventory. Only my opinion :stuck_out_tongue:

Now that I think of it as a variable, just made me wonder if is it going to be a variable actually and I can use it for objects too. For example to create a chest, I could basically just create an “object collection variable” for the chest object and store all the information what is in the chest inside it own collection variable so when the player interacting with it, I need to access only the collection variable of the object the player interacting with…
It would be really cool or am I going too far from reality and it is going to be nothing like a variable? :laughing:

Amazing stuff, looking forward to the release. Do you have plans for when it will be out? (Trying to plan ahead whether I can make use of those features, especially the item system and anchoring.)

Thanks for putting so much work into this! I’m only one weeks in but so far I’m constantly thrilled by the possibilities that the tool offers. It has been fairly accessible so far and I’m amazed that I can actually put games together on my own now. Thanks!

We are still unsure about the release date. :frowning:

I really want to try out new features so bad. Everyday i look in the Forums for announcement of new version but its always 4.0.92 :frowning:

I always hoped GD going to be something more than just a free alternative, prototyping tool.
It had huge potential years ago, but seems to me 4ian is focusing on web technology in general to port native to web and web to mobile and desktop.
The only way GD may related to his current projects and interest is GDevelop.js, GDevApp and that stupid cat game if it still in development at all.
It is certain now, GD is pretty much dead.
Nothing is developed the community is asking for and anything is in development it coming slow and without discuss it with the community.

I feel honestly sorry for GD.
I have some games developed in GD and sitting on my hard drive waiting for some polish but I may never going to
finish them because of lack of motivation coming from limitations and missing features and the fact GD is no longer in active development.

In the past one year I was playing around with the idea of using a different engine to make my games and I have tried many engines but unfortunately I don’t have the patient and motivation any more I had years ago with GDevelop to learn and go through all the troubles, trials and errors.
There is only two engines out there I kind of liked and I have spent most of my time with in the past one year:

-001 is a very good isometric RPG game engine, it got the power to create all kind of games really but it core is an RPG engine, so if you want to make anything different, it possible but not so easy as everything works with RPG game in mind.

-AGK is a very fun way to code apps and games and it is just getting better and better with each release.
I do enjoy playing around with AGK a lot but to make a complete game using nothing but code is way beyond my skills.
Every time I attempt I end up going crazy with trying to setup a system to handle all the data and information.
It is the most difficult part of game development, to store and handle data and this is what GD and similar tools helps with a lot.
Just create the scenes, drag the sprites in to the scenes, set the variables, collision, physics, scale, properties, add the events and press play.
You don’t need to worry about that how all this data is handled and stored, everything just works and this is the reason I decided to stick with GDevelop years ago, but now I wish I had not :frowning:

I hope that after or before that cat game is finished, 4ian make good money and could fund developers to develop Gdevelop (kickstarter went veeeery well and many downloads already).
Or isn’t 4ian making that game? I really don’t think engine is dead if that game is made using Gdevelop :smiley: I think (or hope at least) that cat game brings more features to Gdevelop in the future.

GDevelop needs “big game” that is made using the engine and I think the cat game is that (though it could be something else than a mobile game, but making for mobile is easier money).

And it’s very great to see that community is growing bigger. There is more guests and more registered users and now people get response easier to their questions :slight_smile:

Wow thank you for responding @ddabrahim. GDevelop looked realy interesting and I was just starting to wonder if i should stop learnig Game Maker and completely focus on learning GDevelop for HTML5, now i feel i did the right thing focusing on Game Maker.

The game is not owned by 4ian, he is only paid to develop it so I don’t think he is going to make enough to hire developers, but even if he could I guess he would hire people to work on GDevApp instead.

Well, it seems to me regular updates and to keep the community informed and seek feedback from the community is no longer priority.
When was the last time 4ian asked the community about anything or just come along and say Hi to us?
It sounds pretty much dead to me. Yes the cat game does inspire new features here and there but nothing we really asked for.
And this is the point. Most live game engines out there continuously seeking what the community need…

To be honest, I believe and I know it is NEVER going to happen, but GD may should become nothing but an IDE to be used with different game engines and tools out there.
For example, I would pay anything if anyone would make GD work with AGK and I mean the IDE, scene editor, events, expressions, plugins.
I don’t know if it possible at all, but would be really cool if GDevelop could actually generate AGK Basic code instead of C++ and just simply use the AGK Compiler (not included with GD but only use it if you have AGK installed) to export games using the AGK libraries or just simply export an AGK project, that we can open in AGK and with no or minimal modification just press export and done. This way we could even use AGK Basic code in events similar to JavaScript to access features of AGK not included in GD.
For example, IAP, sensors, camera, video, render 2D to 3D, shaders, full 3D, file system commands, advanced physics, UDP and TCP networking and so on.
In theory, we could access them through an AGK Basic code event as we access Pixi.js through JavaScript event.

But I’m only dreaming here, I don’t even know if it possible really, but honestly I would even buy it and I’m pretty sure many AGK user would pay for it because coding is fun but even people love and can code looking for effective ways to simplify and speed development up.

The point would be that, 4ian and (OR) Victor need to focusing on the actual IDE, scene editor and event system only and the actual features would be coming from paid AGK developers and I’m talking about features that GDevelop users can only dream of forever with 2 spare time developers.
Actually, even the events and plugins could be nothing but a collection of AGK code so anyone could extend and add new events and plugins and share it with the community through the simple AGK Basic language…
Ok, I need to wake up now :cry: