brainwavecreations's Recent Forum Activity

  • Hey everyone :)

    This may seem like a dumb question to some. I've tried tackling this issue using families, and referencing the objects themselves(as it currently stands). Also had a function that called the UID of each enemy that fires a Bullet. In this case a Shuriken.

    I've posted an image of my current Events/Actions below. What happens is if I have more than 2 NinjaCats within LoS of the player, only two will fire. One from the left, and one from the right. Then any more on left and right, do not fire. I imagine this is because all conditions are met in my Events.

    I'm currently trying to find a way around this, to have every NinjaCat within the proper range fire off a Shuriken projectile. Any help is greatly appreciated.

    Thank You!

  • You do not have permission to view this post

  • You do not have permission to view this post

  • Thanks for the well written responses oosyrag, and Jase00

    I really do need to refresh on Arrays, and hierarchies. I was much more agile with using them a couple decades ago, when I was 14 years old XD. Now I'm so used to the data structure in another game engine I was using. Similar to arrays, but rather than using columns/rows which are numbered. Creating each cell/block of data as it's own variable within that struct. So you can call it using the struct.variable(which pulls that variable from the structure of data). Similar to how Construct makes it simple to call instance variables from an object.

    There are always 20 different ways to accomplish something that wants to be implemented. As of now, I've been using a lot of Parent/Child objects for everything. I'm currently working on an enemy state system, with multiple enemies, and multiple objects for each enemy(collision box, debug text, enemy object, etc). Along with tracking enemy state through the state machine. Then debug text, separate collision box, making sure that each one is switching states/animations, colliding properly based on EnemyBox object. Etc.

    I'm not entirely sure yet, but using containers in this instance may be easier. As I can plop the same collision box for every enemy in the Layout editor, call the proper enemy type from the Family of enemies using an instance variable within the main object of the container. I feel like using containers, and having all the child objects automatically created and destroyed as a single object, should in theory cut down on Actions/Events along with using Family Objects. Would make it simpler in my mind, as how to have each enemy object react appropriately.

    And, be more efficient, than how I am doing it now. Creating an enemy object from a family, then creating each child object. Setting each one to move to the appropriate offset compared to the parent. Setting as the child of the parent object. Then call the proper state/animation, using an instance variable in the Family. Maybe I am wrong. I'll find out either way, what works better for me personally, in this instance.

    I just found out about, and began using Family Objects as well, which is really a shame on my part. I plan to make some time in the evenings this week, and read through the Documentation. Either way. I've got 4 different copies of the same project going right now. Trying to set up my enemy system to get the desired result, using different methods. I've got it mostly working in one instance(but it feels hacked together), and partially working in the others. Then see which method proves to be the most efficient in this instance. Just trying to become more efficient in how I approach different situations within Construct. I'm rebuilding a game, I threw together in 72 hours for the Ludum Dare. In that project file, I'm literally rewriting the actions/events for every enemy type, over and over. Just switching over to using a Family Object for the enemies, has cut 20+ lines of Actions/Events for their basic platform movement, down to about 5.

    I do tend to overthink, overanalyze, and overcomplicate literally everything. I think way to much about things, and get in my own way constantly. Not only with development, but life in general. I still have a lot of areas to work on. Work/life balance especially, but this is going way off topic. Most of my confusion is probably from pushing, and trying to force things when I get stuck. Rather than walking away for a bit, and not get burned out with the issue.

    I'll have times, where at 2am, I'll suddenly realize what the issue was, then jump back in and have it fixed in 5min. Where earlier in the evening, I was staring at it and changing things around for a couple hours.

    Again, off topic. But, I should have just stuck out game development from the get go. I'd be so much further ahead right now. But, must take what I have today, and move forward. Adding onto that framework of knowledge.

    I definitely appreciate the feedback. I'm ignorant in many areas. But, what is life, besides trying to improve and progress each day. Shining the light on the areas I am ignorant in by failing, gives me something to figure out/learn the next day. Which only spreads out further what I call the "horizon of ignorance". Learning through each failure.

    Apologies if I've wasted anyone's time here. Take care. Peace out. Stay blessed. Have a great day. I'll see you all around. I've obviously got a lot more studying to do, and it'll never stop.

  • In an ideal world. Yes you are correct.

    But, when you first started, did you sit down and read the Documentation from start to finish before beginning your first project in Construct, oosyrag?

    I'm sure there are many like me. Who jump right into new software/applications to learn. Watching video tutorials in the beginning, then referencing the Documentation for things I learned about in video tutorials, but didn't completely grasp. I guess none of the tutorials I went through happened to mention using containers. Even having gone through many video/written tutorials available right here.

    I even had trouble finding it in the Documentation. It's kind of buried, under Project Primitives > Objects > Containers. To find it last night, I literally searched "Containers" on the main Documentation page to locate it.

    I had already read through "Best Practices" section a few times, and also many of the other areas of the Documentation, and didn't see it referenced. I now see it referenced in "Layout View", "How Events Work", and "Multiplayer". After searching the term again. Those must have been three areas I hadn't read, thinking I had all the info from following tutorials, and playing around in Construct.

    I never noticed or questioned the Container field under Effects in the Layout Editor. Which I guess, I should have. I'll take a day, and read through the entire Documentation, as you suggest.

    I'm not trying to put anyone down here... Just sharing my two cents. That I feel Containers, should be a highlighted feature in Construct. Maybe, I'm wrong. But, that all depends on the individual's perspective.

  • I've been using strictly Construct 3 for the past few months for all of my game development projects. I'm only now learning about Containers. XD

    I feel like this should be one of the first features of Construct to be taught, as they are extremely useful. They make creating objects within a game, so much easier. Previously I was adding objects at Start of Layout, then moving them to another objects position, with an offset. Then creating the other objects that need to follow the main object as a child of the main object after being repositioned. Or using a Pin behavior after moving the object at the start of a layout.

    Think about things like a PlayerBox that handles the platform elements of your player, and a separate object that handles the Player sprites and animations. Then debug text above the Player to check it's current State if using a State Machine. Or any other debug text, and other objects you may want to have follow around the main objects in in your game.

    This has lead to a ton of things to keep track of, and trying to alter things on each instance of objects in-game. Such as Debug Text, Collision Box Sprites, HP Meters above Objects, Checking State/Animations, Instance Variables, etc. I've been having a hell of a time on the current project I am currently focusing all my time on. Lionz, here in the community brought up using Containers for my enemies. I had not even heard of it, haha. So I immediately started researching it, to learn more last night.

    I searched "Construct 3 Container Tutorial" on YouTube, and was able to pull up only two tutorials. Both for Construct 2, and one in Spanish. They seem to work the exact same way in Construct 3, now that I've read the page on Containers in the Construct 3 Documentation. I even went to the Browse Examples area of Construct 3, and tried searching for "container", "containers", "conta", etc. And, could not find any direct examples of Containers being implemented in an example project.

    So, I'm learning more about them today by jumping in, and completely rebuilding my Enemy Objects using the Container feature. Which is usually the best way to learn. Just jump in and start playing around with any features you are unfamiliar with. When it comes to anything, I learn the best doing things this way anyways. But, everyone is different.

    Overall, I feel like this should be one of the main/first lessons on Construct 3, for any type of game creation. I even used Construct 2 years ago, and had never heard of Containers. It definitely shows where my ignorance lies, and what I need to study/learn. Which is a main aspect of life in general that I appreciate. But, if this was one of the first Tutorials, or an Example Project, etc. It would help so many folks new to Construct, when they go ahead and start on their own project.

    Either way, in the end I've found a weak spot for Construct 3 tutorials on YouTube, as well as my own knowledge on Construct 3, and it is at the top of my list to create a video tutorial on now :).

    Not trying to "bring down" anyone here. I've been really enjoying my time working within Construct 3. It's been the most useful game engine I've used, and I've used many over the years. It's so easy to quickly prototype any type of gameplay, implement new gameplay mechanics, debug things going haywire, etc. At least compared to the other game engines, and pieces of software I've used over the years.

    I just feel like this may be a blind spot for a lot of people who begin using Construct 3. Just my two cents :)

    Hope everyone is having a fantastic Sunday :)

    Peace!

  • In general yeah the family is good to use, I just meant for the creation of those enemies. Based on the logic such as setting enemy animation based on enemy box variable you could put enemy and enemy box in a container. Using a container here means that the enemy for animations would be created automatically for each enemy box and they are always related to each other.

    Okay. That makes a bit more sense, now that you mentioned containers. All I know is they setup a parent/child type objects automatically, and can house multiple objects. More or less...

    I just started utilizing the Family Object. I'll spend some time tonight and study up on Containers as well. Then make another copy to test that method out as well.

    Thanks for your time, and all the useful input today. I really appreciate it.

  • Just for reference, this is my Event Sheet with that hot fix, just setting gravity to 0. Each enemy stops in it's tracks. Faces the player and plays attack animation, until losing LoS. Which is what I was going for. Then when losing LoS, they move back to Walking.

  • Nice :) Or another option if the enemies already exist in the editor, you can just set it all up in the editor and then pin with events. That depends on the design and if enemies exist before or if there are spawn points.

    You wouldn't use the family, I would think you need to create the specific object, you can use the create by name action.

    Hmmm, interesting. Yeah, they are all already in the editor. I'm taking a break from that project for the time being. I've got it working. But, I setup the family to cut down on Actions/Events. The only issue was them falling through JumpThru Platforms while changing animations. I've got them setting up similar to the Player at this point. Putting the boxes in, and then creating the enemy type object.

    Screenshot below. If you know a better way to do this, I'm all ears haha. Luckily Construct makes it easy to swap out objects across multiple blocks. I was trying to just create the EnemyBox at every object from the Enemy Family, and pin it at start of layout. But, they were still falling through the JumpThrus.

    The plan was going to be. Move all the Behaviors, and instance variables to the PlatformEnemyBox. And just have a couple on the PlatformEnemy Family. This is how I have the player working. The event sheet in the screenshot is a mess, because it's right in between switching everything over. I disabled a bunch of stuff just to test and see if this method would work.

    I'm stuck between going this route, and falling back to my older save, which had the hotfix of setting gravity to 0. That one worked flawless. But thought, this may work better as I add onto the enemy states, and abilities.

  • Okay. I've got it working with a couple different enemies. I'm going to have to rework a bunch of Instance Variables/Behaviours/Actions/Events, but I think this will wind up working much better than before.

    Thanks again lionz, I appreciate you taking the time to read, and respond :)

    Basically going to change the On Start of Layout, to have four sub-events checking for that instance variable, then create the proper enemy, pin it, then setup the debug text and whatnot I had on them before.

  • Have an instance variable on the enemy box which is the enemy type. Create an enemy based on the variable on the enemy box and pin it.

    Thanks lionz :)

    I'm going to set about testing that. I tried this earlier, but must have been doing something wrong. The enemy box becomes the platform object, and call the enemies from the Family Object? Using PlatformEnemies.ObjectTypeName

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Hey everyone :)

    I'm having a bit of trouble with enemies falling through JumpThru Platforms when switching to their Attack State/Animation(or any State/Animation for that matter). As every animation frame is a different size, either a collision box or Origin Point is pushing them down into the JumpThrus.

    So, I've decided to set them up a similar way as my Player.

    My Player has a basic PlayerBox Sprite, Then has the Player Object with all it's animations set to the PlayerBox X & Y, then set it as a child of that object at the start of each layout.

    I'm having a bit of trouble puzzling this out for the enemies, as I currently have 4 platform enemies, and looking to expand on the amount of enemies. I'd like to have all the platform enemies use a single PlatformEnemyBox Object to handle the collisions. I've tried multiple ways to handle this issue.

    At the moment, I'm over complicating the issue like I always do. I tend to over analyze, and over complicate things... I'm currently trying create each Enemy Type on different instances of the PlatformEnemyBox Object by using a variable. I'm stuck going around in circles. I'm assuming to do it in this way. I would need to do the following.

    - Create a Global String Variable

    - At start of Layout, change that Global Variable to each enemy type's name(somehow)

    - Then On Start Of Layout > For Each PlatformEnemyBox > System > Create Object > Call that Global Variable to create the proper enemy type for each instance of the PlatformEnemyBox

    I'm basically been trying to set it up the same way as my player. But, as it stands, there has been no point in using the family object, because I haven't sorted out a way to create the proper enemy type on each enemy box using variables. So I've basically switched out the Enemies in the Family, with Boxes using a naming convention of "(EnemyNameHere)Box". Then Start of Layout, create the proper EnemyName for each EnemyNameBox.

    So I'm still doing excessive work with many different Actions/Events for each EnemyNameBox in the Family. It somewhat works, but it's not mirroring them the same way as it was before. I'd rather be able to use just one box for each enemy type in the family, without having 4 separate boxes in the family. Causing unnecessary use of Actions/Events, making using a Family Object Pointless.

    I've got a hot fix at the moment, so when any enemy in the PlatformEnemies Family goes into any other State, it sets the Platform Gravity to "0". Then when the Player goes out of their Line of Sight, they switch back to their Walking state, and go right back to walking on the JumpThru style platforms.

    This works just fine for the time being. But, I feel like it would be better in the long run to have a single collision box object, like what I'm doing with the Player & PlayerBox.

brainwavecreations's avatar

brainwavecreations

Member since 17 Aug, 2021

Twitter
brainwavecreations has 8 followers

Connect with brainwavecreations

Trophy Case

  • 3-Year Club
  • Jupiter Mission Supports Gordon's mission to Jupiter
  • Forum Contributor Made 100 posts in the forums
  • Regular Visitor Visited Construct.net 7 days in a row
  • Steady Visitor Visited Construct.net 30 days in a row
  • RTFM Read the fabulous manual
  • x6
    Quick Draw First 5 people to up-vote a new Construct 3 release
  • x2
    Lightning Draw First person to up-vote a new Construct 3 release
  • x2
    Great Comment One of your comments gets 3 upvotes
  • Email Verified

Progress

12/44
How to earn trophies