lucid's Forum Posts

  • well, I solved the problem like this:

    http://www.scirra.com/forum/viewtopic.php?f=7&t=6775

    super simple, but yeah, disabling collision per layer would be good too

  • all objects in a family

    loop through them ordered by y position

    make sure the hotspots are set up where the object touches the ground

    and setup the collision masks at the ground as well

    quick example:

    http://dl.dropbox.com/u/1013446/treetest.cap

    if any of that doesn't make sense

    I would recommend trying the ghost shooter tutorial and maybe the platform school tutorial before moving on

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • if it's going to repeat the same texture over and over, tiled background is better than sprite

    you can make a tiledbackground take up 100,000 with no slowdown

    but 100,000 sprites, well. that's another story

    huge sprites don't seem to be much of a problem, in my current cap I have only 30 unique sprites so far, but many of them are larger than 1024x768, and I'm having no slowdown problems yet

    as far as drop shadows, if you can, and you're not planning to have changing light sources, I would render the shadows into part of the sprite in 3dmax. I can't think of any really flexible shadows built into construct

  • Try the ghost shooter tutorial linked on the main scirra site

    To learn the basics

  • right click where you would create events

    create group instead

    honestly if the enemy spawning thing is the only thing the group will do, I see no reason to use a group instead of a pv, groups are more suited to large sequences of events, not just one simple action

    just use a global or private variable, I would suggest

    but do go ahead and test out groups anyway so you can see what they are

  • also

    if deleting the persist files is a pain because you have to navigate to the folder

    another way to recover seeing stuff is to go to the project bar, and find the layout or events, and double click on one and everything'll be back to normal

    as far as opening two things at once

    I usually just open up another instance of construct

    it doesn't seem to have any impact on performance

    and the two instances don't cause any conflict

  • depending on what you're really into

    I can say the motorola droid should be the bare minimum

    that's what I have

    it's fast enough to be very usable although not quite as silky smooth as the iphone

    but it plays video at phone maximum resolution beautifully, navigation works as well as a standalone device...better than some

    browsing feels like a pc limited to 3g speeds. even loads scirra chat and runs it correctly.

    gaming is smooth, except for the camera. that's as slow as molasses, and unless you can temporarily stop the earth from spinning, you'll get motion blur. also, you press the shoot button, and then thirty minutes later it takes the picture

    aside from the camera i never feel like it's running slowly basically, everything is responsive enough that i don't have to think about the response speed, so..

    everything above that in processor speed should be very nice indeed

    someone had an htc hero at a party recently and the screen was stupendously beautiful and huge

    haven't seen the wildfire in person yet

    if you're on a budget motorola droid is a great phone

    if you're not, well, take your pick

    I don't remember which, but some of the new ones can be used as a wifi hotspot for several devices at once without being unlocked. the droid can't

    so if you might need that, keep that in mind as well

    as a side note. all the hubbub about the crappy keyboard on the droid is blown way out of proportion. it's not the best keyboard i've ever seen or used, but it works, I can type on it just fine, wish the rows were staggered instead of lined up, but it's not the horrific mess people make it out to be

  • newts would work

    also just as easy would be a global variable ('spawningon')

    if ('spawningon') = 1

    system create enemy

    also if you want the enemy to be random, put all the enemies in a family

    let's say you put them in a family called enemies

    if you create object "enemies"

    it will choose something from the family at random to create

  • if I cache a directory, does it cache the subdirectories, too?

    and does it only cache the directory within the properties set cache limit?

  • there isn't a way unfortunately

    also, I should warn you, motion blur greatly reduces the performance on some systems

    there were caps that didn't have a hint of slowdown on my pc, and when I posted them here, people would complain they were unplayably slow and choppy

  • [quote:1474t2ta]and if someone knows how this could work just the same without the detector sprite, please let me know

    What does the detector have to do with stepping? stepping just makes it so that you can check for fast moving collisions without skipping through objects. Or was that just an additional question?

    I think he was using it for the "push out" on solids.

    Also, I'm not even sure you need to do stepping for something like this.

    I'd be willing to bet Davo could do a platform movement with one condition using control states.

    yeah, I know Davo could

    and you're right it's so it will hit the wall from the sides, and stay on top of the ground moving at the normal speed

  • elevator test for an early version of my game

    http://dl.dropbox.com/u/1013446/output.mkv

  • sometimes when using the platform behavior it's difficult to implement features that would require the platformer to temporarily ignore certain types of obstacles. For instance, an elevator carrying a platformer through the next floor will stay on the next floor after the elevator moves past if the floor is a platform, or will hit the ceiling and fall if it's a solid. Stairways are much more difficult to implement for the same reasons, and the added trouble that they are always in the way on the bottom floor and impossible to get to through the top floor. Those are the first examples that come to mind, but there are other cases, mostly moving platform scenarios, but other things, like ladders, or ghosts that can phase through walls the character can't, but should still obey the ground.

    The following proposed additions are to alleviate this problem by allowing the behavior to temporarily ignore user-specified object types.

    the altered files are here:

    http://dl.dropbox.com/u/1013446/platform/Platform.rar

    and the changes are summarized below:

    changes:

    in MAIN:

    added one vector for objecttypes to ignore, and the function for checking the ignore list

    	vector<CRunObjType*> ignorelist;
    	bool IsIgnoring(CRunObjType* objtype);[/code:vtkaqhm8]
    
    ACETABLE:
    added three actions,  Add Object to ignore list, Remove Object from ignore list, and Clear ignore list
    [code:vtkaqhm8]	ADDPARAM(PARAM_OBJECT, "ObjectType to Ignore", "Ignore platforms and solids of this object type");
    	ADDACT("Add Object to ignore list", "Ignore", "Add %0 to ignore list", &ExtObject::aAddToIgnoreList, "AddToIgnoreList", 0);
    	ADDPARAM(PARAM_OBJECT, "ObjectType to Stop Ignoring", "Stop Ignoring platforms of this object type");
    	ADDACT("Remove Object from ignore list", "Ignore", "Remove %0 from ignore list", &ExtObject::aRemoveFromIgnoreList, "RemoveFromIgnoreList", 0);
    	ADDACT("Clear ignore list", "Ignore", "Clear ignore list", &ExtObject::aClearIgnoreList, "ClearIgnoreList", 0);[/code:vtkaqhm8]
    	
    ACTIONS:
    implement the three actions with simple vector commands, doublechecking to make sure the user doesn't add the same type twice
    [code:vtkaqhm8]	long ExtObject::aAddToIgnoreList(LPVAL theParams)
    	{
    		for(int i=0;i<ignorelist.size();i++)
    		{
    			if (ignorelist[i]==theParams->GetObjectParam(pRuntime))
    				return 0;
    		}
    		ignorelist.push_back(theParams->GetObjectParam(pRuntime));
    		return 0;
    	}
    	//ADDPARAM(PARAM_OBJECT, "Object to Stop Ignoring", "Stop Ignoring platforms of this object type");
    	//ADDACT("Remove Object from ignore list", "Ignore", "Remove %0 from ignore list", &ExtObject::aRemoveFromIgnoreList, "RemoveFromIgnoreList", 0);
    
    	long ExtObject::aRemoveFromIgnoreList(LPVAL theParams)
    	{
    		
    		for(int i=0;i<ignorelist.size();i++)
    		{
    			if (ignorelist[i]==theParams->GetObjectParam(pRuntime))
    			{
    				vector<CRunObjType*>::iterator it=ignorelist.begin()+i;
    				ignorelist.erase(it);
    			}
    		}
    		return 0;
    	}
    	//ADDACT("Clear ignore list", "Ignore", "Clear ignore list", &ExtObject::aClearIgnoreList, "ClearIgnoreList", 0);
    
    	long ExtObject::aClearIgnoreList(LPVAL theParams)
    	{
    		ignorelist.clear();
    		return 0;
    	}[/code:vtkaqhm8]
    
    RUNTIME:
    implementation of IsIgnoring
    [code:vtkaqhm8]	bool ExtObject::IsIgnoring(CRunObjType* objtype)
    	{
    		for (int j = 0; j < ignorelist.size(); j++) 
    		{
    			if (ignorelist[j]==objtype)
    			{
    				return true;
    			}
    		}
    		return false;
    	}[/code:vtkaqhm8]
    	
    Add IsIgnoring check to the beginning of OverlapTest
    [code:vtkaqhm8]	bool ExtObject::OverlapTest(CRunObject* pObj)
    	{
    		if(IsIgnoring(pObj->pType))
    			return false;
    		...
    		...
    		...
    	}[/code:vtkaqhm8]
    	
    Add two IsIgnoring checks to IsOverlapping, one for the platform check, and one for the Solid check, and change the check solids to manually checking one by one, so that each object can be checked against the ignore list
    	[code:vtkaqhm8]bool ExtObject::IsOverlapping( bool solids_only )
    	{
    		...
    		...
    		...
    		...
    					int count;
    					CRunObject **objs;
    					pRuntime->GetTypeSelectedInstances(pObstacles, objs, count);
    					for(int i = 0; i < count; i++) 
    					{
    
    						{
    							CRunObject* platform = objs[i]; // do here	
    							if (!IsIgnoring(platform->pType))
    							{
    								if(pRuntime->QueryCollision(pLink, platform))
    								{;
    								pLink->info.x = fx;
    								pLink->info.y = fy;
    								pRuntime->UpdateBoundingBox(pLink);
    								return true;
    								}
    							}
    
    						}
    					}
    	...
    	...
    	...
    	
    						if(platforms_inside.find(platform) ==  platforms_inside.end())
    						{
    							if(!IsIgnoring(platform->pType))
    							{
    								if(pRuntime->QueryCollision(pLink, platform))
    								{
    									pLink->info.x = fx;
    									pLink->info.y = fy;
    									pRuntime->UpdateBoundingBox(pLink);
    									return true;
    	...
    	...
    	...
    	
    	}
    [/code:vtkaqhm8]
  • um

    so, anyone know how to work that custom movement thing?

  • there is a command

    just type distance(somethingx,somethingy,somethingelsex,somethingelsey)

    and sorry

    at the end of that example I gave you

    previousx = sprite.x

    previousy=sprite.y

    previousx and previousy being private variables you made

    also,physics does have an expression for speed

    this won't do anything, but just to help you find the expressions, do something like

    sprite - set angle

    instead of typing in a new angle, double click a sprite with physics behavior, when it brings up the list of expressions, click on the physics tab, that's the list of physics expressions

    velocity x component and y component