4ian / GDevelop

🎮 Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.
https://gdevelop.io
Other
10.67k stars 844 forks source link

[GD5]Example: few more from gametemplates.itch.io #562

Closed ddabrahim closed 6 years ago

ddabrahim commented 6 years ago

Hi!

I'd like to submit a few new example to be added to GDevelop. Here is the link to download it: https://gametemplates.itch.io/gdevelop-examples Scroll to the bottom.

I can NOT confirm that assets can be used for commercial usage., I stick with "included for demonstration purposes only" to play on the safe side.

I have uploaded the following examples:

I have updated

For more examples and templates anyone can make a request on our forum: https://gametemplates.itch.io/forum

4ian commented 6 years ago

Cool will update this! :) Note that I've also added a new feature to the web-app that is now able to directly open an example from a link with the name like this: https://editor.gdevelop-app.com/?project=example://car-physics

I've started to add links for each object/behavior/event to examples on the wiki (for example: http://wiki.compilgames.net/doku.php/gdevelop5/objects/particles_emitter).

ddabrahim commented 6 years ago

That's nice! I have just noticed you have removed all reference to gametemplates.itch.io from the wiki even from the start page which I thought would be a perfect place to list any 3rd party websites with content that may interest GD users and beginners. Would there be any place on the wiki where we could list 3rd party sites to help people find 3rd party content for their games like sprites, music, sounds and my templates I'm currently working on?

4ian commented 6 years ago

Would there be any place on the wiki where we could list 3rd party sites to help people find 3rd party content for their games like sprites, music, sounds and my templates I'm currently working on?

I think the tutorial page is a good place: http://wiki.compilgames.net/doku.php/gdevelop5/tutorials As it's something where most people will go on (and there is a link on the start page).

I have just noticed you have removed all reference to gametemplates.itch.io from the wiki even from the start page

Yep, I hope it does not feel to brutal, my idea is that with this feature that is directly opening a project on the web-app, we can have people try example in a single click (versus having to open itch.io, click on download, enter a price or download, then download the file, download GD and open the file). Should make the examples a lot more visible and help most users.

It's still perfectly fine to list 3rd party sites, let's put them in the tutorials section which should end be a mix of tutorials that are on the wiki, tutorials/videos from external website and resources useful to learn/create with GD.

4ian commented 6 years ago

Also if this list of 3rd party website is growing well, that could be included somewhere in GDevelop at some point :)

ddabrahim commented 6 years ago

I hope it does not feel to brutal, my idea is that with this feature that is directly opening a project on the web-app, we can have people try example in a single click

Of course not, it makes sense and feels more organized too. Actually, if you remember I was suggesting at the beginning to create an Examples page similar to one Phaser has where people could try the examples right in the browsers and also edit and play around with it. It was a bit too early at the time but now it could be done. Check out the examples at Phaser.io to get the idea what I mean(t). This way people looking at GD for the first time and all they are interested in is examples to see what the engine is capable of, could find all examples on a single page, try them and then click edit and load the example right in GD if they want to play with it, next step to download GD to start developing :) `

I think the tutorial page is a good place:

Thanks I'll create a page and add some links then :)

4ian commented 6 years ago

an Examples page similar to one Phaser has where people could try the examples right in the browsers and also edit and play around with it. It was a bit too early at the time but now it could be done.

It's indeed something that is now much more possible. I've added something about it on the roadmap: https://trello.com/c/EgcL1g14/117-add-an-example-page-on-the-website

Thanks for creating the page! It looks good :)

4ian commented 6 years ago

I've updated the torque force in racing game to make the car more fun to drive and fixed a few typo in some comments. I've simplified the example to pin objects but found what looks like a bug in some actions of the game engine, investigating about it

4ian commented 6 years ago

I've put online the examples :) I've simplified the two ones to pin objects. Here is what it looks like:

screenshot 2018-07-25 21 08 47

I made use of the Distance expression which is particularly useful. atan2 is the most complex part, we need it to get the initial angle between the parent and the child. Could almost be a new expression.

Important thing is that will reworking these two examples I found an inconsistency in the action to put an object around another (it wasn't using the center of the object to position the objects, unlike expressions and conditions like Distance). I've fixed this action, it's deployed in the web-app. If you try the two examples on the desktop version, it wont' work properly for now (the object will be pinned but not a the exact proper position). This will be fixed when using the example on the next version :)

Thanks a lot again for the examples! (and for exhibiting this bug ;)) Closing this as examples are merged for next version

ddabrahim commented 6 years ago

I thought something wrong there as I couldn't get it to work but was not sure :P Anyway just want to let you know that you was forget to remove the external event I was using to calculate the initial distance on X and Y it seems to be not required any more.

Thank you for the fix and sorry for the spelling errors I made, I do them all the time...

ddabrahim commented 6 years ago

@4ian I have uploaded some more examples in case you are interested:

ddabrahim commented 6 years ago

In case there are any examples and templates you think would be useful to have let me know. I have no more plans for any more examples and the community don't seem to care for any....

4ian commented 6 years ago

All your examples are super super useful! Let me show you a few graphs:

This is the number of games created from the examples (i.e: the number of examples opened each day): image (and this is not counting the "starter" games)

Roughly speaking, there is now around 250 examples opened every day! It's more than twice the number before we make the new examples tab.

You can see the huge improvement starting around after ~9 june :) It's at this time that I've started adding the tons of examples that you contributed too by making the new Examples tab: image

I can also show the graph by example: image

And this is a CSV with the number of examples opened since 3 months: https://www.dropbox.com/s/v3aepbpmlv416b1/examples-used-grouped-per-example%20%28May%2021%20to%20August%2021%29.csv?dl=0

Funny thing is that examples that are on the top of the list are more opened... I think we should improve the list to display examples by group or something like this!

So I can really tell that examples are used a lot!

I have uploaded some more examples in case you are interested

I will add/update them for next version! 😄

ddabrahim commented 6 years ago

Interesting. Seems like quite lot of people opening the Asteroids example, but up until the point it being included in GD no one bothered to download it from itch. It is definitely very useful people can open the example with a click of a button and don't need to go through all the trouble of downloading, unpack, copy, open... Probably I was also publicize my examples and ask for feedback the wrong place. Seems like people prefer Discord over the forum but I did not realized this...... Unfortunately it too late :( I'm glad people are using the ones included with GD at least :)

I think the groups should be more like "flags" only as many example could fit in to multiple categories, cover multiple features. We could have flags like:

And simply flag the examples have any of these do demonstrate. You could make this with the example page in mind since you are going to need the same categories on the page too imo.

Anyway, thanks for the graphs it was very informative.

4ian commented 6 years ago

people can open the example with a click of a button and don't need to go through all the trouble of downloading, unpack, copy, open

Yes exactly. One thing that I've learn is that it's really important to reduce as much as possible all the friction - having them in a single click makes them used a lot. But when it comes to find a link, go trough it, download, extract and open, almost nobody makes it to the end (sad! but it's human nature I guess ;)).

Also it's something that can be sometime discouraging when creating software/open-source: you do something, nobody seems to care and then if you remove what you've done, suddenly you get tons of people complaining that they are missing the exact feature that you did ;)

I think the groups should be more like "flags" only as many example could fit in to multiple categories, cover multiple features

Yes flags are a good idea. It could also ease the search by having flags at the top or a field where you can select a flag to filters examples. It's something that I'd like to do at some point (Trello card created in the planned column).

It's also something that would be useful to have a page on the website with links to all the examples.

More generally, my experience in game making/software building/programming is that it can make a huge difference between a language/framework/game engine for which it's easy to find examples and help and one for which there is hardly anything. That was one weak point of GDevelop - so lately I spent some time improving the wiki, adding help links in the software. Examples are definitely the most important point of all of this (even me sometimes I'm like "wow, so you can do that with GDevelop!").

Anyway, thanks for the graphs it was very informative.

I try to track a few metrics like this to see how popular is some feature. Let me know if at some point you're unsure about something and I'll see if I have more data.

4ian commented 6 years ago

All the 9 new/updated examples are merged for next GDevelop version, and already online on the web-app editor.gdevelop-app.com :) Thanks a lot for taking the time to do this!

ddabrahim commented 6 years ago

@4ian Was wondering if would that be possible to mention my itch.io page in the contributors list? https://gametemplates.itch.io/

The "contribution" was technically coming from there and could use some visibility. If not, not a problem at all.

Thanks anyway.

4ian commented 6 years ago

No problem to add this :) I've added a link to it on your name and also a line specifically for Gametemplates:

image

ddabrahim commented 6 years ago

Thanks a lot, really appreciate it :)

ddabrahim commented 6 years ago

@4ian I have uploaded a few more examples, in case you are interested:

They are at the bottom of the list as usual. https://gametemplates.itch.io/gdevelop-examples

4ian commented 6 years ago

Almost forgot this, will add this to next version! Thanks for working on it :D

4ian commented 5 years ago

Love the level editor :) Well structured in groups and events are all simple. You'll soon be able to change the SnapTileToGrid external events by a "function" in next GDevelop version ;) Should be super useful to make this.

image

becomes

image

and calling the events:

image

becomes calling the action:

image

Be ready for next version - this feature will allow for super reusable and shareable events ;) 🔥🔥

ddabrahim commented 5 years ago

I was born ready for new and more advanced features :D Functions will be really useful I can't wait for it.

I'm glad you like the level editor. I am actually working on a more advanced and more complete version and it will be part of a bigger project but of course I'm also going to share it separately probably as "advanced level editor" :)

Also all my examples now available on GitHub under MIT https://github.com/GameTemplates

I'm continue using itch.io too but I figured sharing free and open content on GitHub under MIT might encourage some contribution too in the future that I hope for especially with the project I'm working on.

4ian commented 5 years ago

Awesome, it's a great idea and we'll see how it grow :) You should surely go through a few game making communities to let them know about this! Hope it can foster more contributions :)

In the long term, functions will be shareable too.

ddabrahim commented 5 years ago

I didn't want to mention it because I did not want to seem grasping but yeah, my first thought was it would be awesome if functions would be shareable like it was in GDevApp with the event store but better, it had a few problems :P I can already see the kind of functions most people could benefit from, I guess I could also implement some of my examples as a function.

4ian commented 5 years ago

my first thought was it would be awesome if functions would be shareable like it was in GDevApp with the event store but better, it had a few problems :P

Yeah exactly! There is something to do to allow to sharing functions (in a way that is way better than in GDevApp ;)). I have a few ideas to have something that could be really useful.

In the meantime, feel free to make examples with functions :) I'll make sure to make them available as soon as there is something in place to share functions.

ddabrahim commented 5 years ago

In the meantime, feel free to make examples with functions :)

What I have in mind is that I'm going to create an example project dedicated to include a collection of custom functions that you can bundle with GD just like any other example and once we can share functions online, we can open this project and simply press the share button :)

However, it seems like I have encountered the first bug. I tried to implement the Move object back and forth example as a function and it seems like the GetArgumentAsString() expression doesn't work. I have created a parameter that accept a string and the user supposed to enter either "vertical" or "horizontal" to choose direction of movement. I call this parameter Direction. Unfortunately, when I use the GetArgumentAsString(Direction) expression it returns an empty string :(

Am I using this expression wrong or is it broken?

4ian commented 5 years ago

Can you try GetArgumentAsString("Direction")? The parameter of "GetArgumentAsString" is itself a string (meta, huh?)

example project dedicated to include a collection of custom functions that you can bundle with GD

That looks like a great idea. Will definitely be super useful to kickstart the future collection of functions!

ddabrahim commented 5 years ago

Can you try GetArgumentAsString("Direction")?

I tried that, it returns the string "Direction". Wondering if it not the expression but the parameter. The parameter called Direction doesn't exist even though I used Direction as name of the parameter...

4ian commented 5 years ago

Damn, it's bugged. Will release a fix soon.

ddabrahim commented 5 years ago

Thanks :P

ddabrahim commented 5 years ago

Seems like we have the same problem with GetArgumentAsNumber() too. It returns 0.

4ian commented 5 years ago

GetArgumentAsNumber should work because otherwise the example "Space Shooter With Functions" would not work?

4ian commented 5 years ago

Should be fixed in beta 55. For GetArgumentAsNumber, verify that the parameter name is properly quoted and spelled (GetArgumentAsNumber("Parameter")).

ddabrahim commented 5 years ago

Indeed, I was forget the quotes. Sorry. Thanks.

4ian commented 5 years ago

I definitely need to work on an improved parser for expressions with better error messages/even maybe highlighting errors, but it's quite a large task and other things to do... But something to do at some point for sure!

ddabrahim commented 5 years ago

I always forget the quotes in expressions and events it is also a problem for beginners all the time they forget the quotes too then come to the forum and ask what is wrong. Maybe the best would be and even most simple to do in case an argument must be a string then you could just go ahead and convert it to a string whatever we enter. Don't need to mess with a fancy error highlighting, just help me out in the background and make sure it is a string :P

Regarding the functions, now that I have been using it a little, there is 3 things that would be useful to have some point in the future.

I think it would be nice to have a keyboard input as a parameter type that would display a list of keyboard keys to choose from and it would return a string. It is because I am implementing a function that can be used to make selected object controlled as a car or ship and I would like to allow the user to choose what keys they want to use for controls.

It would be also nice if we could create a list of strings as parameter type that would be displayed and the user can choose from. For example with the Move object back and forth function I allow the user to choose what direction the object is going to move and instead if telling them to enter "vertical" or "horizontal" manually, I could offer the options to choose from. It would also help with avoding errors like forget the quotes :D

Also would be nice to be able to create a range of number as an argument that the user can choose from. For example I am about to implement a function to shake the camera for certain amount of time in certain direction and I wan the user to be able to set certain values to customize the shake. But too small or too high values doesn't give the result you might expect. So with a range of values to choose from I could for one thing indicate what values works well and also limit their options to make sure to get a proper shake effect.

Other than that, functions are really great. I haven't even realized until now but it is going to change the way games are made in GD drastically and it is going to be extremely useful. I sort of want to make the game I'm working on open to let people mod the game in GD. By including custom functions I can make this process way more fun and simple :)

Thanks a lot!

ddabrahim commented 5 years ago

I have shared the project with custom functions on github: https://github.com/GameTemplates/GDevelop-Examples/tree/master/custom-functions

It is work in progress, I have implemented only few examples as a function for now. You can find a list of them in a text file. https://github.com/GameTemplates/GDevelop-Examples/blob/master/custom-functions/functionlist.txt I'm going to update it as I have time. I'm also going to post on the forum and ask what people might want to see added.

4ian commented 5 years ago

I think it would be nice to have a keyboard input as a parameter type that would display a list of keyboard keys to choose from and it would return a string.

I've added keyboard key as a new type for parameters for next version :)

It would be also nice if we could create a list of strings as parameter type that would be displayed and the user can choose from.

It's a bit more complicated but sounds feasible.

Also would be nice to be able to create a range of number as an argument that the user can choose from.

Same, a bit more complicated but sounds feasible.

Added a card on the roadmap: https://trello.com/c/wdMQ4S3x/182-add-new-types-for-functions-parameters-selection-inside-a-list-and-range-of-number :)

It is work in progress, I have implemented only few examples as a function for now. You can find a list of them in a text file.

These custom functions in this repository are a great idea. I'll surely use them as the basis for future functions sharing 👍

ddabrahim commented 4 years ago

@4ian

Since the last time (which was over a year ago? wow) I have uploaded some more examples and realized I did not told you about them. Well, there is not so many and I did not want to bother you each time and then I was forget.

These examples are not polished or well designed by any means, mostly they are dirty examples I was throw together quickly in a minute to help people on the forum with their problems. So if you think they are not good enough, no pressure, just figured I'll let you know you can add them too if you want to.

I think I'm pretty much done with such small examples, I have no plans to do any more unless someone ask for something specific on the forum that I find interesting which is not happen that often so updates likely to stop now.

I hope you find some of them worth including though. 👍

4ian commented 4 years ago

@ddabrahim Almost missed your message sorry!

I'll add them with pleasure :) Examples along with tutorials are GDevelop main assets when it comes to get people to learn how to use GDevelop - including advanced concepts.

I ran some analytics and the "small examples" (all the examples where I excluded the games that are on the "starters" tab) have been opened 127000 times this year :) Some have been opened up to 6000 times. But numbers are not everything, I thing that on the contrary, specific examples are very useful when people search how to do something in particular :)

I've added this on my TODO list. Thanks for working on these and letting me know 👍👍

4ian commented 4 years ago

Added for next version! 🎉 Thanks a lot for these. Examples are really an invaluable contribution. They are what will unblock people creating the next great games with GDevelop in 1 month, 6 months or 2 years from now :)

As you've contributed with a lot of these since the beginning, I set up a GDevelop pro subscription for your GDevelop account. Not much but this is as a thank you for your involvement in the community :)

ddabrahim commented 4 years ago

Thanks a lot for the subscription, really appreciate it. Considering it is the only way currently GD generate any revenue it really means a lot to me :) The fact some of them were opened 6000 times is really amazing and comforting to know it did worth the time I was put in to them and they seem to be useful for the community :) I don't get a lot of feedback so these statistics are really useful 👍