4ian / GDevelop

:video_game: Open-source, cross-platform game engine designed to be used by everyone.
https://gdevelop.io
Other
6.4k stars 717 forks source link

Getting the list of contributors to GDevelop #517

Closed 4ian closed 5 years ago

4ian commented 5 years ago

I realize there is not enough recognition for people helping to make GDevelop what it is :)

I'm going to add a list in GDevelop "About GDevelop" window of contributors that helped in a way or another to create GD (as it was done in GDevelop 4).

What I'm gonna do is:

If you want a particular name or if you want to remind me that you've contributed to something, please answer to this thread to let me know :) Also if I forget you don't be shy and let me know there too!

ddabrahim commented 5 years ago

I would like to mention the names of the people here who did contribute to GD with examples, tutorials on the forum and 3rd party sites like their own blog or youtube channel, but may be no longer use GD or visit GitHub so they unlikely come here to remind you. Most of them helped a lot with GD4 content but without their help there would be definitely less GD5 users today.

These are forum names except the last two:

Mats - Tutorials, Examples erdo - Tutorials, Examples Jubileuksen3 - Tutorials, Examples LucaTexas - Tutorials, Examples Kink - Tutorials, Examples Wendigo - Tutorials, Examples RicoTrooper - Tutorials kalel - Tutorials mtarzaim - Tutorials Darkhog - Examples Lizard-13 - Tutorials, Examples, Code Victor - Tutorials, Examples, Code Ricardo Graca - Turorials, Examples Jose David Coartas Correa - Author of Digitopolis (a book on how to make games with GDevelop4)

Probably I missed tons of others...

I think their name deserve to be mentioned if not as "contributors" but at least as "Valued Community Members" section or something like that to say Thank You. If someone made any tutorial or shared examples at all, deserve to be mentioned in my opinion.

Also, In most game dev communities, there are badges to give people when they contribute with anything and help the community. Some of them automatic based on number of posts made, and some of them need to be earned and given by a moderator. Would be also nice to see some badges on the forum.

As I collected this list, I have also realized maybe you should change the way wiki display who is edited a page. In my opinion, the wiki should display who authored the page and list all the contributors below, because at the moment if I create a page, fill it with info then someone else go and change only a letter, then the name of that person is displayed at the button of the page which is not fair with the people spent possibly hours on a wiki page.

blurymind commented 5 years ago

My real name is Todor Imreorov :)

On Sat, 9 Jun 2018 12:39 ddabrahim, notifications@github.com wrote:

I would like to mention the names of the people here who did contribute to GD with examples, tutorials on the forum and 3rd party sites like their own blog or youtube channel, but may no longer use GD or visit GitHub so they unlikely come here to remind you. Most of them helped a lot with GD4 content but without their help there would be definitely less GD5 users today.

These are forum names except the last two:

Mats - Tutorials, examples erdo - Tutorials, examples Jubileuksen3 - Tutoials, examples LucaTexas - Tutorials, examples Kink - Tutorials, examples Wendigo - Tutorials, examples RicoTrooper - Tutorials kalel - Tutorials mtarzaim - Tutorials Ricardo Graca - Turorials, examples Jose David Coartas Correa - Author of Digitopolis (a book on how to make games with GDevelop4)

I think their name deserve to be mentioned if not as "contributors" but at least as "Valued Community Members" section or something like that to say Thank You. If someone made any tutorial or shared examples at all, deserve to be mentioned in my opinion.

Also, In most game dev communities, there are badges to give people when they contribute with anything and help the community. Some of them automatic based on number of posts made, and some of them need to be earned and given by a moderator. Would be also nice to see some badges on the forum.

As I collected this list, I have also realized maybe you should change the way wiki display who is edited a page. In my opinion, the wiki should display who authored the page and maybe list all the contributors below, because at the moment if I create a page, fill it with info then someone else go and change a letter, then the name of that person is displayed at the button of the page which is not fair with the people spent possibly hours on a wiki page.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/4ian/GD/issues/517#issuecomment-395962482, or mute the thread https://github.com/notifications/unsubscribe-auth/AGMbVbaMURLCjDnmj4pA72TxV52RR_TVks5t67PzgaJpZM4UhRFS .

4ian commented 5 years ago

I've updated the web-app with the contributors (will release a new version soon) list and the numerous examples that you've made @ddabrahim! Thanks again! I have analytics set up on the usage of examples so will let you know how they are used :)

ddabrahim commented 5 years ago

Looks good :) I have uploaded two more examples after, a simple Asteroids remake and the type-on-text effect made by erdo for GD4. I figured it worth to preserve erdo's type-on-text effect for GD5 in json format because it is really useful, If you think you can include those as well but obviously the credit goes to erdo for the type on text effect.

Maybe, it would be useful to go through all the examples shared by the community for GD4 and convert them to json and include those as well. I have collected a list of them on the old wiki if you remember: http://wiki.compilgames.net/doku.php/gdevelop/tutorials/communityexamples

If you want I can go through the list and convert the better ones to json and make sure it works in GD5 as expected, may even add comments if missing in case you would like to include any of them. Most of them are shared on the forum anyway so I don't think the authors would go against to be included in GD5. There is a pretty cool one, a virtual OS/desktop thing, you may want to ask for permission from the author if you want to include it: http://forum.compilgames.net/viewtopic.php?p=63257#p63021

Wend1go commented 5 years ago

This reminded me that I still had to port my FSM tutorial to GD5. Thanks for adding me to the contributors list. You can merge Wendigo and Wend1go ("Wendigo" was already taken when I joined Github)

ddabrahim commented 5 years ago

@4ian I have uploaded the brakeout example from GD4 too, improved/changed a little:

-pad can be controlled with the arrow keys instead of the mouse (with the mouse it felt a bit cheating :P) -random brick color -random layouts, I have included 3 external layout -improved collision a little to make sure the ball and the pad do not overlap with the border. -the scene restart also in case there is no more bricks

If that's ok with you I go through all the GD4 examples included with GD4 and try to port over as many as possible to GD5, I'm going to upload them to itch and you are free to include them if you want. I'm going to let you know here whenever a new example is done. Of course the credit goes to whoever made the example originally, all I mention it was a GD4 example, you can add the name if you know who is the author.

The decision will be yours if you are going to include any of the example or not, no pressure. I do it for fun, and hope it is going to be useful for some people.

4ian commented 5 years ago

I have uploaded two more examples after, a simple Asteroids remake and the type-on-text effect made by erdo for GD4.

Awesome, will check this!

I have uploaded the brakeout example from GD4 too, improved/changed a little:

Awesome too, will add it.

If that's ok with you I go through all the GD4 examples included with GD4 and try to port over as many as possible to GD5, I'm going to upload them to itch and you are free to include them if you want. I'm going to let you know here whenever a new example is done.

Sure the more the better when it comes to examples! Thanks a lot for taking care of this 👍

Post a message here anytime you have a new one and I'll add it (unless there is some issue with it, but most GD4 examples should be ok to add in GD5!). 😊 The main thing I'm gonna check is if there are anti-pattern in examples (i.e: usage of old conditions that are hidden as deprecated or things like this).

For mouse controlling, there is a fair share of people who'll want to create or try to run the examples on mobile so it a may be a good idea to keep it or even add support for it.

EDIT:

If you want I can go through the list and convert the better ones to json and make sure it works in GD5 as expected, may even add comments if missing in case you would like to include any of them.

Sure again that would be really great! When we have enough examples I think I could start to maybe add categories or add links inside GDevelop to open examples for particular conditions/actions/objects. So that when you discover something new you can even check the example to see how it works :) (A super-powered "Help" button in a way)

ddabrahim commented 5 years ago

For mouse controlling, there is a fair share of people who'll want to create or try to run the examples on mobile so it a may be a good idea to keep it or even add support for it.

Sure, I was completely forget about the fact GD5 is now also targeting touch devices. I have updated the brakeout, in case it is running on mobile the pad is going to move toward the pointer (in theory). I'm going to keep this in mind and add touch/pointer controls where necessary.

ddabrahim commented 5 years ago

I did screw up the collision in brakeout, fixed it and also added pointer support in type-on-text effect.

4ian commented 5 years ago

Great, I've updated the web-app with asteroids, brakeout and type on text effect! :) Will release the updated desktop app soon too.

ddabrahim commented 5 years ago

I have updated the asteroids example with touch controls when it running on a mobile device :P

4ian commented 5 years ago

Thanks! Updated the web-app! :)

ddabrahim commented 5 years ago

I have uploaded the animation-speed-scale example with some improvements:

-removed unused objects, images and unnecessary events -turned the example in to an infinite runner so the player can run and accelerate as long as he want -added touch screen controls if the game is running on a mobile device -made the animation-speed-scale to also decelerate if the player is decelerating to make the movement and animation more smooth when the keys are released or switch from left to right or right to left while the character is moving.

A side note, I have noticed if I run the games on my Chromebook unfortunately the condition to check if the device is mobile or not is return false even if I switch the Chromebook in to tablet mode. It works in case I run an Android browser on the Chromebook but does not work with the native Chrome browser in tablet mode. As the first Chrome OS tablets are about to come later this year, maybe it worth to have a look to make sure it is going to work on Chrome OS tablets :) I'm also wondering if it works on Windows tablets or not, unfortunately I don't have one to try. In case it is not possible or difficult to tell if Chrome is running on a tablet or PC how about to check if a physical keyboard is present or not?

ddabrahim commented 5 years ago

I have uploaded the buttons example, improved with some comments as it was lack of them.

ddabrahim commented 5 years ago

I have uploaded the change-sprite-color example with some improvements:

-added comments to explain how the example works as it was lack of them -I decided to randomize also the green value in the RGB color to make the Peas look really different, if you think it better to keep them in the different shades of green only, feel free to change it :)

ddabrahim commented 5 years ago

I have uploaded the magnet example with improvements:

-removed events, objects and images that was not necessary -renamed objects to english and improved comments to explain how the example works -improved the events in general to be more organised and easier to read -improved collision between the ball and the holes by using a custom smaller hit box for the holes, pixel perfect collision checking did not work, not sure if it a bug or missing feature in HTML5 but using hit boxes is better for performance anyway :)

4ian commented 5 years ago

Cool, keep up the good work 💪

pixel perfect collision checking did not work

Pixel perfect is indeed not implemented and won't be (too expensive and not useful). Collision masks are the way to go if more precision is needed :)

ddabrahim commented 5 years ago

I have uploaded object-selection, in order to make it touch friendly I changed it to make it work with a single pointer (not using the right mouse button). It is definitely not as transparent as the original example with using both the Left and Right mouse button but I tried my best to explain in comments how it works.

Actually, it did bring me back to one of my old requests regarding inverting the condition if the mouse is over an object. At the moment it return true if any of the instances meet the inverted condition but would be nice to have a way to check if ALL the instances met the inverted condition or NONE of them. I remember been using the NOT operator before but it did not work for some reason with the mouse over condition this time, not sure why is that, so I had to find an other way to do it :P

It could be a little more transparent by using the NOT operator I guess but it didn't work for some reason :(

ddabrahim commented 5 years ago

Uploaded the rain example.

-improved the events in general by making it shorter and easier to read -added comments to explain how the example works as it was lack of them

4ian commented 5 years ago

Updated the web-app! 🚀

. At the moment it return true if any of the instances meet the inverted condition but would be nice to have a way to check if ALL the instances met the inverted condition or NONE of them.

This should work as the other similar conditions, not sure why the NOT operator is not working there :/

ddabrahim commented 5 years ago

Uploaded the advanced shape based painter

-changed the way circles are drawn, I did not like the gap between the pointer and the shape, the radius of the circle is right at the mouse now as you draw -added some more comments explaining how the example works -removed some unnecessary events

ddabrahim commented 5 years ago

Uploaded the opne-url-in-browser example

-added comment to explain the obvious :D -updated the url to point to gdevelop-app.com

ddabrahim commented 5 years ago

Uploaded the multitouch example

-removed unused images -added comments explaining how it works

ddabrahim commented 5 years ago

I have uploaded the text entry object example and added some comments to explain how it works.

I believe though it does not enable on-screen keyboard on mobile devices. I could add an on-screen keyboard, but in my opinion it would be better to make the text entry object enable the OS keyboard if possible.

Or GD could have a keyboard object that we could drop in to any scene, enable, disable when needed and it would display a keyboard that people can use for input.

ddabrahim commented 5 years ago

Uploaded the customize-keys-with-lastpressedkey example, added some comments to explain how it works.

ddabrahim commented 5 years ago

Uploaded the shooting bullets explanation example.

ddabrahim commented 5 years ago

Uploaded the basic-artificial-intelligence example

-added some more comments to explain how it works -replaced the red alert light with a red alert sprite -to make it touch friendly I made it so if the pointer or touch is down, the tank is moving toward the pointer, we can also control the tank using the arrow keys as it was in the original

4ian commented 5 years ago

-replaced the red alert light with a red alert sprite -to make it touch friendly I made it so if the pointer or touch is down, the tank is moving toward the pointer, we can also control the tank using the arrow keys as it was in the original

Perfect!

It would be awesome to update this example to use the raycast condition made by @Lizard-13. I think it would be a great usage here. (Cast a ray from each enemy, check the ending point (obstacle are either walls or the player), if it's on the player then the enemy has seen the player and is alerted).

ddabrahim commented 5 years ago

It would be awesome to update this example to use the raycast condition

Indeed I'll give it a go and update it

I have uploaded the basic-topdown-car-driving example, it called basic-car-racing I believe but I think the name I give it suit it better, after all there is no opponents in the game nor a finish line :P

-improved car controls a bit (can not turn if the car does not move and turn a bit slower) -added touch controls -improved collision, for some reason it was hitting invisible objects all over the place, I have reimported everything and replaced the pixel perfect with hit box checking to fix it. -added some more comments to explain how it works

ddabrahim commented 5 years ago

update this example to use the raycast condition

At first glance I'm uncertain if the raycast condition can fit the purpose. I have never used it before. My first problem is that, it takes only 1 object as the target object and basically ignore everything else, as a result the raycast is going through the walls and the tanks being alerted even if I'm on the other side of the wall. I'm not sure how to solve this :( I can't find a way to stop the ray cast if hitting the wall. Is there anything I'm missing? I'm not sure.

EDIT:// I tried putting the wall and the player in to a group and use the group as the target but how do I know if the Ray cast is hitting the player and not the wall?

4ian commented 5 years ago

Objects to test against the ray should be anything that stop the tank vision, so anything solid in the real world, so almost everything: wall, tanks, and the player tank. So you have to create a group of objects that are called Solid and use this group for the first parameter. You then fire for each tank a ray toward the player (here you may have to compute the angle to the player using atan2(player.y - tank.y, player.x - tank.x), that's the painful maths part) The idea is then to check if the X and Y position of the intersection of the ray. If it's one the player, boom, tank is alerted!

You could even use an object that you position at the end of the ray: easy to debug and you can use it to check the collision with the player.

ddabrahim commented 5 years ago

This is exactly what I'm trying to do as you described and it makes all the tanks alerted :P I was using a for each event to create a ray cast for each tank, store the result inside an object variable then check the value of the variable against the position of the player... If the value in the variable equal to the X and Y position of the player, alert the tank.

It makes all the tanks alerted right at the beginning, all the ones behind the wall.

4ian commented 5 years ago

Can you share a screenshot? Have you managed to use an object to see where the ray is put?

ddabrahim commented 5 years ago

I didm't check with an object yet, tried something else. I give it a go now. But the event is looks like this: event-properties

event

4ian commented 5 years ago

A few notes:

One thing that looks wrong in the example is the fact that you're testing if targetX = Perso.X() and same for Y. That won't happen. The ray use the collision mask so the ending will be somewhere near the player but not directly at his position,

ddabrahim commented 5 years ago

Yes I though about that it may be not going to match exactly, I tried 200 just to try but all the tanks get alerted anyway. I tried the object and it is being created at the top left corner which is indicating 0. Not sure what is that mean. If the result of the rayCast is 0 that means.... there was hit at 0,0? Or there was no hit. But why are the tanks alerted then? This is the screenshot scene castobject

4ian commented 5 years ago

0;0 usually indicates that the variable or the expression is invalid :)

I found the error! It's not obvious I guess I should update the description, but the variable where you store the result should be the name of a scene variable. Parameters taking variables are fixed to either global variable or scene variables.

So here, store the result into IntersectionX and IntersectionY scene variables :) (as a for each is used, it's not a problem if the variable is overwritten for every tank).

(Also another note, but I think that Solid is really a better name for rayCastTarget, because these objects are not target, they are just things that are solid for a ray).

Lizard-13 commented 5 years ago

I'm using a Solids group in the zombies examples too, but then I just check if the number of Player taken into account is > 0, if it is then the ray hit the Player because only one instance of Solids gets selected after the ray condition. You can send a second ray too, but only to the Player, and check if the hit position is the same than with Solids. Any idea to improve it?, really, because I was almost sure it could be a problem when I wrote it, but didn't find a better approach :(

Lizard-13 commented 5 years ago

Also I could add a "Raycast to position", so people don't have to make the angle calculation, as you do with forces and movements :)

4ian commented 5 years ago

I'm using a Solids group in the zombies examples too, but then I just check if the number of Player taken into account is > 0, if it is then the ray hit the Player because only one instance of Solids gets selected after the ray condition.

That's much simpler! @ddabrahim You can do like this I think :)

Also I could add a "Raycast to position", so people don't have to make the angle calculation, as you do with forces and movements :)

I think that could be a good idea, for consistency and ease of use. :)

ddabrahim commented 5 years ago

That's much simpler! @ddabrahim You can do like this I think :)

I'm sorry but I don't have much luck with this. For some reason the tanks are not getting alerted as expected. Some of them do, some of them don't but even the ones do get alerted the moment I would expect it to, it doesn't last long, After a short time they stop and don't get alerted again until I move the player right in-front of the tank.

I increased the range to 2000 pixels to make sure it not the problem. I'm using this formula to cast the ray toward the player ToDeg(atan2(Perso.X() - IA.X(), Perso.Y() - IA.Y())) And I have only the Wall and the player in the Solid group, if I add the tank to be part of the solids, it was causing further problems.

I tried to create an object in position of the raycast hit and it is only confirm what I experience but doesn't help. When object is at the player which means the raycast hit the player, the tank get alerted but 80% of the times there is no object to confirm the hit and the tank is not being alerted either which means, there is no hit. But I'm not sure why the player is not being hit by the raycast, there is no wall between them and the range is 2000.

No hit: no_raycast_hit

Hit: raycast_hit

As you can see there seem to be no hit at the walls because there is no green object. That's an other thing I don't really understand why. We should see a green line by the wall as the tanks cast the ray toward the player but there is none. But I got hit by one and the tank is being alerted but only for short time as you can see on the first image, it stop

Maybe can be improved with the formula but I have no idea how :(

Maybe @Lizard-13 should give this a try when/if he decide to add some more features to it.

Any idea to improve it?

Would be nice to see 3 events

RayCast toward Angle RayCast toward Position RayCast toward Object

And would be nice to have a dedicated condition to check if the ray hit an object or not (object need to be solid of course) and it would take in to account the object cast the ray and also the object that was hit by the raycast so I can reference them in the action. In this case if RayCast hit Perso then : Do = 1 to Alerte of IA. Since IA cast the ray it should take that IA in to account and any Perso being hit by the raycast.

4ian commented 5 years ago

ToDeg(atan2(Perso.X() - IA.X(), Perso.Y() - IA.Y()))

Arguments of atan2 are reversed, it should be: ToDeg(atan2(Perso.Y() - IA.Y(), Perso.X() - IA.X()))

ddabrahim commented 5 years ago

Arguments of atan2 are reversed,

I have no idea why I changed it. I try it when I get to my dev PC but it is definitely the problem then. Thanks.

EDIT:// Yeah it was the problem. It works now :P

4ian commented 5 years ago

Yeah it was the problem. It works now :P

Cool! At least ahah :D Glad that you got it to work.

Will add these new examples and release a new version then :)

ddabrahim commented 5 years ago

Actually, I was wondering if it would be better to use pathfinding in the AI example because in the old example the tanks are always getting stuck in the wall and just no too smart AI.

I have uploaded as a separate example, basic-ai-with-pathfinidng. It up to you if you are going to replace the old one or include both just for reference how to make it with and without pathfinding but that's also ok if you decide not to include the one with pathfinding.

The benefit of using pathfinding is that the tanks are unlikely get stuck in the wall and also they don't stop only because the player turned at the corner they move until reach the last known (set) position when the ray was hit the player the last time. It more realistic I guess.

I have also changed the control of the tank, I did not like to use the mouse and the arrow keys and made it so we can use only the arrow keys or use only the mouse. I have changed the control also in the old AI example just in case if you decide to include both

ddabrahim commented 5 years ago

Uploaded the car-physics example made by Lizard-13, added touch controls to control the car

ddabrahim commented 5 years ago

Uploaded the shoot-bullet-in-parabola example made by Lizard-13. I have edited and made it so we shoot a bullet each time click or touch the green box and we can drag the red box before shooting the bullet. Of course it doesn't add any improvement, but I like interactive examples, it more fun.

ddabrahim commented 5 years ago

Uploaded the snap-object-to-grid example made by Lizard-13. Added some variables because I like to be able to customize things through variables. Added some more comments For some reason, when drawing the lines to display the grid, some of the lines did not render for me. Resizing the window do solve the problem though. Not sure if it only my PC or not, I added an event to change the window size to a lower size. It solves the problem on my end but it may not occur for everyone. Not sure.

ddabrahim commented 5 years ago

Uploaded find-diagonals example made by Lizard-13

ddabrahim commented 5 years ago

Uploaded move-object-in-circle example made by Lizard-13 Removed the one was using the predefined path.