R0J0hound's Recent Forum Activity

  • I thought the construct website was easy to navigate. Anyways, there is no download, construct 3 is web based and you can find a link to it on this website.

    To buy (or rather pay for a subscription) you go to this link, which should be simple to find anyways. Any limits the free version has is listed toward the bottom of the page.

    construct.net/en/make-games/buy-construct

  • Generally you’d upload the file somewhere and share a link, or share screenshots of events.

    Ideally that would allow you to get help from other users too since I’m not here too often.

    Depending on your level it might be easier for you to make a 2d version of what you had in mind first.

  • Right now it’s more seeing how workable it is to use quaternions for all orientation instead of Euler angles, angle-axis, or 3x3 matrices. Although the rotate function uses angle-axis which could be used to implement Euler angles. Math wise I’m trying to make it reusable. Instead of one function to set the orientation I’ve found in 3d it’s useful to be able to modify the orientation with arbitrary math.

    Anyways, I’m implementing this with the free version with a 25 event limit. So I’m only adding stuff that’s needed.

    The square texture per face of the cube is more of a simplification. My goal there was finding a way to make a cube mesh from one mesh distorted sprite. The logic of that portion of the events makes more sense with some diagrams I doodled. Arbitrary meshes or differing textures per face would just require making the object out of multiple distorted sprites instead of just one.

    Actually my short goal with all this is to work out how to make a minimal 3d editor for cubes. First update lets me position/scale/rotate a cube arbitrarily. With minimal changes it can have multiple. Next stuff I want to implement is:

    * camera orientation from quaternion.

    * mouse selection of cubes from view

    * 3d widgets to manipulate the position/rotation/scale

    * maybe some kind of multi select and/or transformation around a pivot point.

    * simple save/load

    * etc…

    However, I suspect I’ll run out of events and have to cut some features. But my main goal here is to find ways to do all that for future reference.

  • Inspired by mOOnpunk's ui devlog I decided to have a go at making one. Although my goal isn't a plugin or any product per say, rather just to explore some ideas for my later use.

    #1 First entry

    This implements some math to handle 3d rotation with quaternions. Mainly accumulated rotations around arbitrary axis' and transforming points with the rotation.

    The rotated cube is implemented with a single sprite with a mesh distort. Previously i did something similar by making a cube from a 4x5 mesh, but that had 4 unused quads which wasted texture space. This one is done with a 9x2 distort mesh with only two unused quads which is a bit better. There are 18 distort mesh points and only 8 vertices on a cube, so points are being transformed two or three times, but ideally it would be once per vertex.

    Something I want to explore next is applying a quaternion to the camera without converting it to a matrix first.

    dropbox.com/scl/fi/fvdee7aswxsxn5ok1ob9m/3d_cube_quat_rotation.c3p

  • Yeah, any kind of variable should work. Global or instance for example.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • If you’re moving manually I suppose that means you aren’t using a behavior and can’t use their angle of motion expression.

    If you manually move an object by changing its velocity you could calculate the angle of motion with:

    angle(0,0,velocityX,velocityY)

    If instead you move an object by changing an object’s position you can calculate it by saving the position to some variables, manually moving the sprite, then calculating the angle.

    1. Set oldx to sprite.x, set oldy to sprite.y

    2. Manually move sprite

    3. Set angle to angle(oldx,oldy,sprite.x,sprite.y)

    That’s useful for calculating an angle of motion no matter what you use.

    You could calculate a 3d orientation instead but I say it’s simpler to just fake it with 2d angles till you can’t.

  • It’s not the full three.js library, it’s a half sized subset that appears to mostly include math and model loading portions. The rendering stuff isn’t in it. So my guess is they are experimenting with utilizing it to load gltf files instead of implementing a loader themselves.

    Anyways, all that hints at is Ashley may be investigating and/or experimenting with some more 3d stuff. Best case we’ll get some new 3d features in a near future release.

    Traditionally we only get to see what they are working on once it works and is part of a release. So I guess just wait and see.

  • You could also keep using the double loop, make them invisible after creation, then add a wait before making it visible again.

    Wait (loopindex(“x”)-1)*24+loopindex(“y”)

    Or

    Wait (loopindex(“y”)-1)*40+loopindex(“x”)

    Depending on the order you want them to appear

  • You do not have permission to view this post

  • You can probably get familiar with manipulating the 3d camera by looking at existing examples and just copying what they do.

    Flying could be as simple as just moving the player with an 8direction behavior and increasing the zelevation when a button is down, otherwise move it down.

    One possible following camera could be to consider the angle the player is moving, and position the camera some distance behind it and higher.

    Maybe use look at action

    Camera position: (player.x-200*cos(player.8direction.angleOfMotion), player.y-200*sin(player.8direction.angleOfMotion), player.zelevation+50)

    Look at: (player.x, player.y, player.zelevation)

    Up vector: (0,0,1)

    All that is vector math if you want to know what to google to expand your knowledge. You could make it smoother with some easing as well, which would simulate the camera man‘s delayed reaction of what the player does.

    It may also be useful to try similar ideas in just 2d to get the concepts down. 2d is way easier and construct provides a lot for you. Construct provides very little to assist with 3d stuff so you’ll end up needing to use a lot more math.

  • So it’s not centering horizontally? Wouldn’t that mean it’s not correct? It could just relate to where the origin of your sprites are.

    I find it useful to re derive formulas when the result isn’t what I’m after. If the box origin is at the top left, then you can center a 3xN grid of boxes with the following.

    Repeat count times
    — create box at center.x+(loopindex%3)*box.width-3*box.width/2, center.y+int(loopindex/3)*box.height-int((count-1)/3)*box.height/2

    What if the box origins are centered? Then the positions will be off by half the size of the box. Based on your image the origin may be right-center, so just add box.width to the x position to center everything.

  • Minimally being able to do at least the following would be useful:

    * Move/zoom/rotate view in 3d

    * Be able to select objects from any view angle.

    * Move/scale/rotate objects freely in 3d.

    It would also be a good opportunity to modify some existing limitations.

    * Rotation for all objects are currently limited to only on the xy plane. At least 3dshapes and mesh distorted objects could be able to be rotated freely in 3d.

    * with mesh distorts there currently is the limitation where a point’s zelevation can only be greater than zero. Changing that to allow negative zelevations would add more flexibility.

    Runtime raycasts, collision detection and physics, like fedca said, could be made as a third party addon if not done officially right away. We just need read/write access to any object’s position/rotation, and at least read only access to object’s size/geometry, and the camera’s view and perspective matrices (for mouse raycasts). C3 already provides access to most but not all of that with the js api, however I haven’t investigated in a bit.