Windwalker's Forum Posts

  • Hello all.

    You can play the entry version here:

    dl.dropboxusercontent.com/u/233647282/TheTorpedo/index.html

    and some screenshots:

    <img src="https://dl.dropboxusercontent.com/u/233647282/sharedpics/Screenshot%202013-12-16%2003.32.43.png" border="0" />

    <img src="https://dl.dropboxusercontent.com/u/233647282/sharedpics/Screenshot%202013-12-16%2003.33.31.png" border="0" />

    <img src="https://dl.dropboxusercontent.com/u/233647282/sharedpics/Screenshot%202013-12-16%2003.35.45.png" border="0" />

    It turned out better than I expected. Thinking on a polished, more level, final version. Do you think it would be worth it?

    Regards;

    Wind.

  • Hello everyone.

    I have the tiredness of the thrill ride with c2 for Ludum dare 28 at the moment. Just wanted to stop, and distract my head with something else for a while. Took some screenshots, created a post in Ludum page. For those interested, you can see some screenshots there:

    ludumdare.com/compo/2013/12/15/torpedo-on-the-way

    I think this should be a playable level, though I am not sure which build this was:

    dl.dropboxusercontent.com/u/233647282/TheTorpedoRelease/index.html

    See you in the morning :)

  • Hey Ashley, thanks for giving a chance to share opinions.

    I completely agree the current performance of the collision detection is enough for most of the games that comes to mind when using C2. However, I made the "mistake" on starting an rts game where I use collision detection for various events.

    For everything below: I was monitoring the performance of collision detection via grouping the related events together and using debug layout.

    I also know that the design is as important as the performance of the tools, if not more. And I am a newbie to C2, and relatively new to coding as all I know is some C# and XNA, in which I made a couple games.

    In my current project, with just barebone elements like food and 1 type of neutral unit and some 1 enemy unit on a relatively large layout (22k x 22k) I can stress test up to 100 player units without any slowdowns (collision take 20 percent CPU, framerate stable ) and up to 300 units to playable levels. (collisions take 49 percent CPU, framrate stable )

    However when I introduce the opposing faction, 200 units each side trying to collision detect their enemies, as well as various resources on the board, it starts to show itself.(collisions take 90+percent cpu, framrate around 10) And due to the nature of my game, I would like to go up to 1000 units for each side. (units are not directly controllable, player creates units, creates groups from units, creates orders through map and attains groups to orders.)

    As a sidenote, I am also using pathfinding behaviour which may add to low framerates somehow. But the CPU usage I detect from grouping the events and they don't include pathfinding events.

    I tried several ways to remove collision detection from the design. Like I was using an invisible, LoS bubble sprite around units to find out if they have anything particular in their range, running collision checks with "collidables" family. I removed it for a simple, event driven distance check, which didn't improve performance much. Also currently my units are walking through eachother; with an improved collision detection it would be relatively easy (and admittedly lazy) way of doing something when they collide, like playing an animation at least. I also created a fog of war effect by using the flashlight method on shooter example, which was awesome!!! Units were leaving behind "destination out" circle "sight" sprites with fade when they the nearest "sight" sprite was at some distance. This meant all the player untis were checking distance for all the created "sight" sprites. Needless to say, even when I did this every .3 seconds, this reduced playability medium unit numbers. So I removed the fog of war.

    I also tried to model the "spatial hashing collision detection method as described here via events and it actually reduced the performance. But it's possible that my events were just bad. I think "picking" itself is somehow costly.

    And at some part of my game there are interiors, big caves or buildings where units can enter. At one point I thought I could use a side view here for interesting results, however I was scared of the platform behaviours need to collision check with platfrom objects for hundreds of units.

    TLDR; I think not only for collision, but also for distance checks, and any behaviour that uses distance/collision, an aproach other than brute force could boost the power of C2 and open for more variation in gameplay made in games with it.

    Whev. That was a lot. Thanks for everything already Ashley :)

  • Ashodin, that frameworking took a full month for my game but now I'm enjoying it myself. This month a Turkish Magazine had your game listed in "watch these as they come" list, btw :) The magazine is called "Oyungezer" to be translated as "Gamewalker"

    Played your demo too, everything seems very fine. Yet the combat was difficult, lots of unusuble letters were filling the table. But you have an update specifically for these which I didn't check yet.

    Sorry about the kickstart, hope you get to do achieve whatever you aim for :)

  • I know the subject is Arrays but that collision improvement is so much needed for my game :( Just tell us if it is soon future or far in the horizon, ashley :)

    -Also the regenerate partial obstacle map for pathfinding.

    I know, I shouldn't have started with an RTS project... But it already happened so...

  • Yes you can. Turn based, tiles, relatively static decision making, easy AI. So I believe you can do it in C2. However please note it seems it will require a real good deal of data management of sorts, ie arrays, dictionaries, lots of instance variables to be kept and interacted with. These parts will not be easy on any platform.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I think you have to look into the concept of "picking" in C2. When you have many of the same objects on the layout and you tell the engine to do sth, you have to specify which one (or ones) you want to do whatever.

    There is a wonderfull video about this here:

    youtube.com/watch

    This one opened the final door for me about picking and I think it will help you too. And it's a good place to start watching other construct 2 live classes videos too. I learnt alot from them.

    Be patient, watch some vids, read some tuts and before a week you will be able to imagine the events of whatever mechanic you want to implement, I promise :)

    Regards;

    -Wind.

  • That's a start for sure. It's pretty basic but the games you are targeting are basic too, so I think you are good to go. Give us some more, though, for further comments :)

  • Interested! Need moar :)

  • Nice little thing that made me smile for some reason. Well done :)

  • Exellent style and theme, really enjoyed it. I think it's going to be awesome when you complete it. Mobile support will be excellent. Well done.

  • Thanks for the replies, everyone. I tried to implement the spatial hashing, but picking cost seems to be higher then the actual collision checks (that, or I really effed up in the events).

    So for now, I will try to design with lower counts of objects. And my grid based, real time map system will have to change completely...

    How nice would it be if someone could come up with a plugin or behaviour for this, as both the quad-tree and spatial hashing seem to be easy to implement...

  • I am imagining a screen-size invisible sprite with many imagepoints hand-placed by you and enemies moving through them in order via bullet movement? This way you can visualize the movement pattern before they come?

    Or you can use many small invisible sprites as waypoints?

    You could use arrays to store screen locations and let the enemies loop through various arrays for various flight patterns?

    You could also do it in a relativistic way, ie, instead of screen coordinates enemies could have "enters the screen from top, moves 50 pixels south, then 40 pixels west and 90 pixels further south (diagonal), then west until exits the screen... So what you put in 2d array 1: +40,0 2: -40,+90 3: -500,0 and these you add to instance variable called "target" of the bullet behaviour sprite.

    Just on the top of my head...

  • Hello friends;

    I am working on an rts game where player (and the computer) each might have up to a few hundreds of units. (I know, it sounds like bad design, but it's not, you will believe me when I show you the game:))

    And since most, if not all, units will need to react to enemy units when they are in range, I will need a real or pseude collision detection between the few hundred player objects and few hundred computer objects. Add to that the terrain pieces, which is a rather large terrain by the way, and you see I got myself in trouble. I am not even mentioning that each player unit currently doesn't check against collision for eachother, so they are able to pass through eachother.

    Now, I have tested this up to a 300 player units against 50 terrain objects and pc is able to handle this very well. But beyond this it will become bad, and I will not be able to expand.

    After some research I am convinced quadtrees may help me here. I have read some posts by Ashley where he says collision performance is on to do list but low priority. But I think I can create my own quadtree system via events and thats where I need help.

    First, check this beauty up:

    mikechambers.com/blog/2011/03/21/javascript-quadtree-implementation

    Now, then, any idea where / how to start :)

    EDIT: or this spatial hashing, which looks easier to implement:

    conkerjo.wordpress.com/2009/06/13/spatial-hashing-implementation-for-fast-2d-collisions

    Kind regards and thanks in advance;

    -Wind.

  • Hello Burvey I downloaded and played your game and I understand that core mechanics are in place and you have a nice ground for any other improvements or content additions in future if you so wish.

    The only thing I can advice would be on what people call polish, firstly, as adviced by friends above, in the interface design. Though if you ask for specific information, I would not be able to deliver as I am not any sort of artist. But googling for interface design may be a start, as well as asking for specific help on the forums. But even before all these, you should have a clear design goal in your mind - if you don't already have one. Like a color palette, a standard system for icons, placement... I understand you are targetting handhelds, so character sizes, icon/button sizes all come into consideration here. It took several seconds and attempts to understand that I had no tokens and thus I am unable to upgrade my skills, even though token amount indicator was conveniently placed just because it's not correct size and/or color. The token amount is the most important thing in that screen (upgrade shop) so it should be the most noticable somehow. I would also suggest to move away from the edges of the screen a little bit more for everything that is on the screen. Not much, but some.

    Of course it's better if all these support a master theme. ie you can go for sterilized/facility look and feel of Portal games, or steampunk look, or just cartoonishly cute looks and feels.

    Next up is sound and music and you are almost done. Currently there is a lack of rythim in the game, something in the background that needs to tell the player something is happening or nothing is happening at all. Like a rythmic music that is increasing the tempo as the timer runs out (if there is a timer that is) or just a looming sound like a cave echoing that feels like the game is waiting for input from the player. Of course all these sounds and musics should be in coherence with the theme you selected first.

    I am sorry I just talked (typed?) alot but your game looks so fundamentally complete - or ready to completion - that may have been exposed to some A.314/excitement :)