GeorgeZaharia's Forum Posts

  • So we all been looking around internet lately and heard and read about ChatGPT right? but did you knew? that you can ask him to give you "construct code" snippets ?

    i did a test today. it knows everything about construct plugins, behaviors etc basically the entire manual and what construct is made off... and that made me think... can chatGPT generate construct usable event sheet code snippets? and to my surprise... it did.. somewhat not what i expected but definetly blew my mind... so my test consisted of this

    and then ChatGPT answered with this

    ======================================

    Sure! Here's an example of how you can create a cue stick that follows the cue ball in a circular pattern around the cue ball using Construct 2:

    Create two sprite objects in your Construct 2 project: "CueBall" and "CueStick". Set the origin point of the "CueStick" sprite to the center of the sprite to make rotation easier.

    Place the "CueBall" sprite on the game layout where you want the cue ball to be positioned.

    In the event sheet associated with the "CueStick" sprite, add the following events:

    Event 1: Every tick

    Add an action to set the position of the "CueStick" sprite to the position of the "CueBall" sprite.

    Event 2: Every tick

    Add an action to set the angle of the "CueStick" sprite to the angle between the "CueBall" sprite and the "CueStick" sprite.

    Use the following expression to calculate the angle:

    angle(cueBall.X, cueBall.Y, cueStick.X, cueStick.Y)

    Event 3: Every tick

    Add an action to set the position of the "CueStick" sprite relative to the "CueBall" sprite in a circular pattern.

    Use the following expressions to calculate the position:

    scss

    Copy code

    Note: "radius" is the distance between the cue ball and the cue stick, and "angle" is the current angle between the cue ball and the cue stick.

    Adjust the value of "radius" to control how far the cue stick should be from the cue ball, and test the project. The "CueStick" sprite should now follow the cue ball in a circular pattern around the cue ball.

    Note: The above example assumes that the "angle" variable is in degrees. If you prefer to work with radians, you can use the "radians(angle)" expression instead of "degreesToRadians(angle)" in the calculations.

    Please note that Construct 2 uses a visual programming system, so you can implement the above logic using the available actions, conditions, and expressions in the event sheet, without writing actual code.

    ===============

    initially i tought it will give me some behavior pin to etc type of thing... but this is more usefull than i tought... i wonder now can it do more complex algo and js compatible things? i mean... logically should right?

    what you guys think about this?

    i posted in Open discussion cause i don't know if this is a tool or general discussion or what... but i find it pretty neat that, when we having problems in Construct programming we can ask the community for help but that takes time a lot of it usually... this method would basically solve "small" requests in a instant. or atleast put us on the right path.

    ================

    after i added the mouse plugin so i use the mouse as a direction variable... and tweaked the code generated by chatgpt and the origin point of the questick to match my new element, this is the result the blue line follows my mouse at a 100px distance from abll in a perfect circle around the centered cueball ( redball ) .. if find this amazing, especially for new beginners that need their code to be fixed or maybe ask the ai to generate some better code

    ================

    Tagged:

  • GeorgeZaharia

    what is minus?

    minus like in + 100 and -100

  • im guessing timew is a global? and when u die u reset the global variables. including timew. try reseting globals manually, only what needs to be reset or reset the time after u copy the results in a 2ndary data variable that is local or array etc... that doesnt change when u reset the globals.

  • does ur animation has speed set properly? is there a event looping the start of animation over and over under some condition? this 2 main reasons usually are the faults.

  • ur canvas snapshot doesnt go where the sprite is... it takes the center of the screen or layout... try adjusting the canvassnapshot position if there is a function for it.

    based on ur image.... for canvasX use only bboxleft (or image.X) and for canvasY use only image.y

  • use Minus for force or angle ;)

  • You do not have permission to view this post

  • I'm working on a tower defense game and i had a similar problem needed to know which of the enemy / ai that walk the path is the 1st or last... so i used the bullet behavior, set the speed to random values based on type of enemy, so some enemies are faster some are slower, and at some point if my tower shooting sprite has a target already and a speedy AI passes the 1st current target becoming the 1st target, i need to select that now since is the 1st. Bullet behavior has a "distance traveled" parameter, which counts the pixels they move around. and i used that as my distance calculation to automatically target the first AI whenever gets in front of others. but for you not sure if this is a solution it all depends on how u make the AI move, are they moving grid based? etc

    but a simple solution would be to calculate the left and right distance to the edge of the screen of the AI since that is what u need. to identify which is closest to left or right side ...

    hope it helps.

    to pick an enemy u have to run a for each loop

    and compare the distance => distance(enemy.x,0,viewportleft,0)

    which would calculate the distance of enemy ai to left side of screen or something like that. not sure if the viewportleft is correct code but u should see the proper suggestion in the event sheet if u type it in.

  • construct.net/en/free-online-games/pong-3d-39499/play

    Forsted might be able to help u a bit.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Object(n).expression lets you pick the nth instance of am object in an expression.

    https://www.construct.net/en/make-games/manuals/construct-3/project-primitives/events/expression

    See the section on object expressions.

    Iirc, this is special in that it can reference the values of an object that isn't currently picked by event conditions.

    There is nothing special about object.anything, as long as object.anything is any expression that returns a number that represents the object instance (n, or iid) you're trying to get at.

    ah ok so it is usable as a identifier of a specific object as long as u know the iid or N custom value u assign it to him. ok that is helpful thanks. also the link u sent doesnt work but this explanation solved my issue. thanks a lot. :D

  • Hi there, long time since i posted around the forums. I searched the forum but couldn't find a result cause i don't know how to call this expression, that is in Construct but never understood what does it do.

    The expression in question is this:

    object(object.anything).x

    the (object.anything) what does it do? identify a certain object? or what is it for?

    im using it as a object identifier of the same type for example:

    i have 5 buttons... all the same sprite just different instances.

    from left to right i assigned a 0 to 4 id to them as i create them in a loop at a start-up to perfectly align them.

    but as u press the button the buttons increase in width to "simulate" it's selected.

    and decrease in width to original width to show that is not selected.

    now i need to calculate the distance from the first to last button in order to perfectly align the object in center based on the gap between those buttons.

    im calculating the distance as distance(button(button.id=0).bboxright,0,button(button.id=4).bboxleft,0)

    this if the expression between the parenthesis is working as im thinking at as a identifier between objects of the same type. then it should give me the exact distance between first and last object. but ...it's short by 20% or so...

    i realize the problem is with me no understanding properly what the (object.anything) expression is for... anyone can explain to me what this thing does? i think i asked before but i forgot was a long time ago 2-4 years ago maybe. Thank you in advanced.

    P.S im looking through the manual to see if i can find it... so far no luck.

    P.P.S i solved my issue another way... but i still don't know what this expression does. If anyone can answer would help a lot.

  • are the sprites on top of each other? it sounds like u are pressing overlapped objects at the same time. the event code should work fine as long as the objects don't overlap. and are different types/names.

    and my all events at the same time u mean the two in the picture im guessing?

    or other events as well? it might be a "touch/mouse" function or just ur cache needing some clearing. try a different browser if above is not the issue or clear cache. sometimes might get buggy if u working for multiple hrs and closing/opening the project a lot of times a day.

    but since ur doing a touch and find missing object, my thinking is u got overlapped objects and the event code u have is missing "identification order" which item should it pick to trigger the even the top or bottom one?

  • Yup, been trying almost the same game engines as you, and more. Have to say C3 has something special. It just clicks with people once they try it. Is the simplicity of it all. The user interface makes sense, is all layered out in a way you don't have to think twice where objects and options are. Compared to unity interface or other engines. The UI learning curve is very short as mimics the old paint interface.

    As features comes, most of what I need is there. I been using it for years now, and had my share points of complaints and disappointments regarding some of the objects and missing features, but being a web based engine has it's limitations, and with time i realized majority of my complaints where a fan Boy perspective and were not realistically pointing towards what i need as tools and features for what im creating.

    The only thing that I'm having a struggle with is the learning curve over multiplayer game systems, however in it's defense it does say in fine print "requires some server side coding knowledge". Which compared to other engines is a breeze. But I'm learning it, so many tutorials from the community and the engine creators online. Wish there were more in depth tutorials covering step by step setting up IAP's and other stuff. And not have to read a e-book about it or a convoluted manual that at the end of it you realize it still didn't completely give you a answer to all of your questions. Luckily that missing information is found online from the awesome community creators that share their dev process, and we learn from one another. The community is somehow like Quora or stackoverflow for C3, which makes it shine.

    Other than that, one missing feature i wish it had, is the browser loading interface to be actively customizable and not by having 2-3 loading screens but to basically hijack the loading bar in beginning and customize the graphics of it and all. Which is a bit hard to do as requires some work around and "dissecting" how the "start screen" happens before your "custom loader layout kicks in".

    And a 3rd wish there was a C# or C++ compiler to convert the js code automatically to C# or C++ that would help massively the future of this engine, as would open the chance to be easily published and ported to Sony Devices such as PlayStation and XboX. There are 3rd parties that manually do it for you, but in the process they loose fine tuning you are doing on ur "game mechanics" and you lose a lot of time and money in the process of going back and forth with them to pin point exactly "the gravity feel" or other stuff you coded in C3.

    Short to be said, some of this problems i have are probably most of the heavy users problems, that are looking to use C3 for creating amazing products to be published literally everywhere.

    Maybe there are solutions to what i said. But after some 5+ years i sort of gotten tired of searching for answers and just focus on what i can achieve with the engine in it's current state. And by simplifying my expectations it just got more natural to use and less frustrating.

    Amazing product, really the go to game engine when something needs to be done fast.

  • WoW the video is amazing, i got lost the entire time in how every little animation is playing on that battle cruiser. Great job. Keep at it.

  • GeorgeZaharia

    i have a technical task what i got to do and what images to use.

    from a big company that doing playable and other ads a lot. and have a vision how it got to look.

    i needed to use spine, but to save size I redone all animations in the construct's timeline, that isn't easy if you are doing skeletal animation of the human body, hard to recreate, add new characters with this animation. it also makes code bigger.

    what I can exclude - box2physics, which took about 500-600 kb.

    all other plugins took 10-20 kb

    But again, as I said, code can be minifying.

    what we need, the same playable export as now, but separated folders for sound and for images. It can help to keep the main, HTML file inside 2mb.

    it is a weird requirement from facebook, 2mb HTML file, but they are monopolists and don't care about users too much, really nothing to do with it

    google requires html5 file with the 1mb size by the way...

    i asked about the size images/plugins cause if the business u working for can let you rescale down the images and lower the resolution of the playable ad, then u might be able to save some file size, as using a 16px grid size images, compared to a 256x one is a whole lot difference in size around ~70% more or less. about spine you could export spritesheets at lower scale size of the character and that could save some file size also not having to use spine plugin which is pretty big.

    when i say lower size images i mean instead of exporting a 1080p playable ad do a 400x200 one instead. or something similar. would have the same quality just small images. really small.

    also i read the playable ads guides and it seems they have a "zip package playable ads" capability that allows up to 5mb and 100 files in that 1 playable ad.. but not sure how that will be exported from C3 since current export for playable ads is just single file html5

    ** note... resizing the images to such a drastic difference might result in quality loss, unless the original files are vector images. but not sure how spine does the rescale export.

    if you find a solution to this let me know would love to know how you achieve it, and maybe a lot of other people around community.