Vinnaren i pepparkakshustävlingen!
2010-11-25, 22:10
  #13
Medlem
Citat:
Ursprungligen postat av Spaghettios
Klicka på Edit > Render Settings. Och då borde du se lite alternativ i Inspectorn. Där finns Skybox Material alternativet. Då drar du bara en skybox-textur till Skybox Material! Då är du klar :P

Jag håller själv på lära mig Javascript Kodning i Unity. Jag funderar på att köpa boken "Unity Game Development Essentials". Har någon läst den?


Tackar
__________________
Senast redigerad av FarleY 2010-11-25 kl. 22:23.
Citera
2010-11-26, 22:52
  #14
Medlem
Spaghettioss avatar
Citat:
Ursprungligen postat av FarleY
Tackar

Varsågod!

Just nu håller jag på med en Minecraft-Klon. Blev klar med en första prototyp ikväll. Jag har gjort så att spelaren kan ta upp en låda! Kanske inte låter så komplicerat, men jag tycker att jag har lyckats bra som första spel ;-)
Citera
2011-02-05, 20:25
  #15
Medlem
Citat:
Ursprungligen postat av Roflstein
Ni som nu har köpt pro är det värd pengarna?

JA
Citera
2011-05-25, 18:57
  #16
Medlem
Citat:
Ursprungligen postat av Roflstein
ja, Kan du använda det riktigt bra och sedan använda 3ds max och importera och skapa välgjorda animationer så kan du förmodligen skapa ett riktigt grymt spel.

Finns väll stora spelskapare som använder denna motor tror jag?

Sent ute kanske, men det är gratis bara man registrerar sig. 30dagar innan dess bara.
Citera
2011-05-26, 00:06
  #17
Medlem
wotofokos avatar
Väldigt intressant. Vet inte riktigt om det är tillräckligt för att bli en del av marknaden för PC eller Mac, men för att bygga webbläsarspel verkar det intressant. Problemet är att få tillräckligt många att installera deras plugin.

En fråga till er som har erfarenhet av spelprogrammering i Flash, Java, C# med XNA och så vidare, hur svårt är det i jämförelse?
Citera
2011-05-28, 02:17
  #18
Medlem
Citat:
Ursprungligen postat av wotofoko
Väldigt intressant. Vet inte riktigt om det är tillräckligt för att bli en del av marknaden för PC eller Mac, men för att bygga webbläsarspel verkar det intressant. Problemet är att få tillräckligt många att installera deras plugin.

En fråga till er som har erfarenhet av spelprogrammering i Flash, Java, C# med XNA och så vidare, hur svårt är det i jämförelse?

Scriptingen är ju genom JS, C# eller Boo, och alla modells måste göras själv. Unity är i princip en motor bara med scriptingeditor inbyggt i princip.
Citera
2011-05-28, 11:33
  #19
Medlem
spindrifts avatar
Citat:
Ursprungligen postat av wotofoko
Väldigt intressant. Vet inte riktigt om det är tillräckligt för att bli en del av marknaden för PC eller Mac, men för att bygga webbläsarspel verkar det intressant. Problemet är att få tillräckligt många att installera deras plugin.
Det verkar väl fungera bra att göra nedladdningsbara spel till Win och OSX med. Problemet är snarare att det inte är en speciellt lukrativ marknad för indieutvecklare, och de stora bolagen har sina egna motorer eller licensierar exempelvis CryEngine.

Det kommer snart vara möjligt att kompilera till en swf med Molehill och få fullt hårdvaruaccellerad 3D i webbläsaren den vägen, vilket kommer göra att tillgängligheten blir hög.
Citera
2011-05-31, 00:28
  #20
Medlem
kEzis avatar
Någon som är på att göra ett spel då? Jag har manus osv färdigt. Behöver bara någon som verkligen kan Unity, jag själv är inte heller så duktig på animeringar osv.
Citera
2011-07-27, 17:45
  #21
Medlem
shafsens avatar
Citat:
Ursprungligen postat av kEzi
Någon som är på att göra ett spel då? Jag har manus osv färdigt. Behöver bara någon som verkligen kan Unity, jag själv är inte heller så duktig på animeringar osv.

nyfiken, berätta va spelet handlar om osv
Citera
2011-07-27, 21:47
  #22
Medlem
Dubsteps avatar
Citat:
Ursprungligen postat av spindrift
Det verkar väl fungera bra att göra nedladdningsbara spel till Win och OSX med. Problemet är snarare att det inte är en speciellt lukrativ marknad för indieutvecklare, och de stora bolagen har sina egna motorer eller licensierar exempelvis CryEngine.

Det kommer snart vara möjligt att kompilera till en swf med Molehill och få fullt hårdvaruaccellerad 3D i webbläsaren den vägen, vilket kommer göra att tillgängligheten blir hög.
Unity funkar ju till iOS och Android också, och DÄR har vi lukrativa marknader. Synd att licenskostnaden är ganska hög bara.
Citera
2011-07-28, 12:27
  #23
Medlem
spindrifts avatar
Citat:
Ursprungligen postat av Dubstep
Unity funkar ju till iOS och Android också, och DÄR har vi lukrativa marknader. Synd att licenskostnaden är ganska hög bara.
Självfallet, jag kommenterade just marknaden för Win och OSX.

Sedan är det så att appar har potential att vara mycket lukrativa, men om du inte har ett enastående spel och bra marknadsföring kan det vara svårt att tjäna pengar på Market och App Store.
Enligt vad jag har från de flesta små indieutvecklare som utvecklar både för webb och mobiler, så tjänar de oftast mer på webben. Att även publicera appar tenderar att ge en liten extrainkomst om man inte lyckas få den "featured" i App Store eller Market.
Och det bästa är om man kan nå ut till både webb och appar. Ett halvskapligt spel får lätt några miljoner besök på webben, och det kan nyttjas för att sälja webbversionen.

Sen finns det undtantag med spel som en ensam utvecklare kodat på ett par månader som drar in hundratusentals kronor, men det är lite lotteri och lyckas du inte bli featured kan det bli knappt någon inkomst alls.
Ett bra exempel är Trainyard som blev featured en fyra månader efter det släpptes:
http://struct.ca/2010/the-story-so-far/
Kolla sista grafen så ser du hur stor effekt det hade.
Publicerar du för Flash är du i princip garanterad en inkomst om spelet är ok, även om det mycket sällan rör sig om hundratusentals kronor.
Citera
2012-05-13, 14:45
  #24
Medlem
Hej har öppnat island demo och gjort en ny scene och får fel meddelande Assets/Scripts/UnderwaterEffects.js(23,46): BCE0022: Cannot convert 'UnityEngine.GameObject' to 'float'. hur ska jag göra? här är koden
Kod:
var fpsCounter : FPSCounter;
var water : IslandWater;
var terrain : Terrain;
var messageTime = 10.0;
var scrollTime = 0.7;

private var messages = new Array();
private var times = new Array();
private var lastTime = 0.0;
private var doneNotes = false;
private var origDetailDist = 0.0;
private var origSplatDist = 0.0;
private var origTreeDist = 0.0;
private var origMaxLOD = 0;
private var softVegetationOff = false;
private var splatmapsOff = false;

private var lowFPS = 15.0;

private var skipChangesTimeout = 1.0;
private var nextTerrainChange = 0;

function Start()
{
	if( !fpsCounter || !water || !terrain ) {
		Debug.LogWarning("Some of performance objects are not set up");
		enabled = false;
		return;
	}
	
	origDetailDist = terrain.detailObjectDistance;
	origSplatDist = terrain.basemapDistance;
	origTreeDist = terrain.treeDistance;
	origMaxLOD = terrain.heightmapMaximumLOD;
	skipChangesTimeout = 0.0;
}

function Update ()
{
	if( !fpsCounter || !water || !terrain )
		return;
		
	if( !doneNotes && !Application.isEditor )
	{
		var hwWater = water.FindHardwareWaterSupport();
		if( hwWater == IslandWater.WaterMode.Simple )
		{
			AddMessage( "Note: water reflections not supported on this computer" );
			// in this case it also happens that terrain splat maps are not supported :)
			AddMessage( "Note: high detail terrain textures not supported on this computer" );
			splatmapsOff = true;
		}
		if( hwWater == IslandWater.WaterMode.Reflective )
			AddMessage( "Note: water refractions not supported on this computer" );
			
		var gfxCard = SystemInfo.graphicsDeviceName.ToLower();
		var gfxVendor = SystemInfo.graphicsDeviceVendor.ToLower();
		if( gfxVendor.Contains("intel") )
		{
			// on pre-GMA950, increase fog and reduce far plane by 4x :)
			if( hwWater == IslandWater.WaterMode.Simple )
			{
				ReduceDrawDistance( 4.0, "Note: reducing draw distance (old Intel video card detected)" );
			}
			
			softVegetationOff = true;
			QualitySettings.softVegetation = false;
			AddMessage( "Note: turning off soft vegetation (Intel video card detected)" );
		}
		else if( gfxVendor == "sis" )
		{
			softVegetationOff = true;
			QualitySettings.softVegetation = false;
			AddMessage( "Note: turning off soft vegetation (SIS video card detected)" );
		}
		else if( gfxCard.Contains("geforce") && (
			gfxCard.Contains("5200") || gfxCard.Contains("5500") || gfxCard.Contains("6100") || hwWater == IslandWater.WaterMode.Simple) )
		{
			// on slow/old geforce cards, increase fog and reduce far plane by 2x
			ReduceDrawDistance( 2.0, "Note: reducing draw distance (slow GeForce card detected)" );
			
			softVegetationOff = true;
			QualitySettings.softVegetation = false;
			AddMessage( "Note: turning off soft vegetation (slow GeForce card detected)" );
		}
		else
		{
			// on other old cards, increase fog and reduce far plane by 2x
			if( hwWater == IslandWater.WaterMode.Simple )
			{
				ReduceDrawDistance( 2.0, "Note: reducing draw distance (old video card detected)" );
			}
		}
		
		skipChangesTimeout = 0.0;
		doneNotes = true;
	}
	
	DoTweaks();
	
	UpdateMessages();
}

function ReduceDrawDistance( factor : float, message : String )
{
	AddMessage( message );
	var underwater : UnderwaterEffects;
	underwater = FindObjectOfType(UnderwaterEffects);
	RenderSettings.fogDensity *= factor;
	if( underwater )
	{
		underwater.uDensity *= factor;
		underwater.aDensity *= factor;
	}
	Camera.main.farClipPlane /= factor;
}

function OnDisable()
{
	QualitySettings.softVegetation = true;
}

function DoTweaks()
{
	if( !fpsCounter.HasFPS() )
		return; // enough time did not pass yet to get decent FPS count		
	
	var hwWater = water.FindHardwareWaterSupport();
	var fps : float  = fpsCounter.GetFPS();
	
	// don't do too many adjustments at time... allow one per
	// FPS update interval
	skipChangesTimeout -= Time.deltaTime;
	if( skipChangesTimeout < 0.0 )
		skipChangesTimeout = 0.0;
	if( skipChangesTimeout > 0.0 )
		return;
	
	// water tweaks
	var curWater = water.GetWaterMode();
	if( fps > 35.0 )
	{
		// frame rate high, use refractions | reflections
		if( hwWater == IslandWater.WaterMode.Refractive && curWater < IslandWater.WaterMode.Refractive ) {
			water.m_WaterMode = IslandWater.WaterMode.Refractive;
			AddMessage( "Framerate high, turning water refractions on" );
			return;
		}
		if( hwWater == IslandWater.WaterMode.Reflective && curWater < IslandWater.WaterMode.Reflective ) {
			water.m_WaterMode = IslandWater.WaterMode.Reflective;
			AddMessage( "Framerate high, turning water reflections on" );
			return;
		}
	}
	else if( fps > 25.0 )
	{
		// frame rate sort of high, can use water reflections
		if( hwWater > IslandWater.WaterMode.Simple && curWater == IslandWater.WaterMode.Simple ) {
			water.m_WaterMode = IslandWater.WaterMode.Reflective;
			AddMessage( "Framerate ok, turning water reflections on" );
			return;
		}
	}
	else if( fps < 10.0 )
	{
		// frame rate very low, turn water to simple
		if( curWater > IslandWater.WaterMode.Simple ) {
			water.m_WaterMode = IslandWater.WaterMode.Simple;
			AddMessage( "Framerate very low, turning water reflections off" );
			return;
		}
	}
	else if( fps < 25.0 )
	{
		// frame rate sort of low, use reflections only
		if( curWater > IslandWater.WaterMode.Reflective ) {
			water.m_WaterMode = IslandWater.WaterMode.Reflective;
			AddMessage( "Framerate low, turning water refractions off" );
			return;
		}
	}
	
	
	// terrain tweaks
	if( fps > 25.0 )
	{
		// bump up!
		++nextTerrainChange;
		if( nextTerrainChange >= 4 )
			nextTerrainChange = 0;
			
		if( nextTerrainChange == 0 && terrain.detailObjectDistance < origDetailDist )
		{
			terrain.detailObjectDistance *= 2.0;
			if( !softVegetationOff )
				QualitySettings.softVegetation = true;
			AddMessage( "Framerate ok, increasing vegetation detail" );
			return;
		}
		if( nextTerrainChange == 1 && !splatmapsOff && terrain.basemapDistance < origSplatDist )
		{
			terrain.basemapDistance *= 2.0;
			AddMessage( "Framerate ok, increasing terrain texture detail" );
			return;
		}
		if( nextTerrainChange == 2 && terrain.treeDistance < origTreeDist )
		{
			terrain.treeDistance *= 2.0;
			AddMessage( "Framerate ok, increasing tree draw distance" );
			return;
		}
		if( nextTerrainChange == 3 && terrain.heightmapMaximumLOD > origMaxLOD )
		{
			--terrain.heightmapMaximumLOD;
			AddMessage( "Framerate ok, increasing terrain detail" );
			return;
		}
	}
	if( fps < lowFPS )
	{
		// lower it
		++nextTerrainChange;
		if( nextTerrainChange >= 4 ) {
			nextTerrainChange = 0;
			lowFPS = 10.0; // ok, this won't be fast...
		}
			
		if( nextTerrainChange == 0 && terrain.detailObjectDistance >= origDetailDist / 16.0 ) {
			terrain.detailObjectDistance *= 0.5;
			QualitySettings.softVegetation = false;
			AddMessage( "Framerate low, reducing vegetation detail" );
			return;
		}
		if( nextTerrainChange == 1 && !splatmapsOff && terrain.basemapDistance >= origSplatDist / 16.0 )
		{
			terrain.basemapDistance *= 0.5;
			AddMessage( "Framerate low, reducing terrain texture detail" );
			return;
		}
		if( nextTerrainChange == 2 && terrain.treeDistance >= origTreeDist / 16.0 )
		{
			terrain.treeDistance *= 0.5;
			AddMessage( "Framerate low, reducing tree draw distance" );
			return;
		}
		if( nextTerrainChange == 3 && terrain.heightmapMaximumLOD < 1 )
		{
			++terrain.heightmapMaximumLOD;
			AddMessage( "Framerate low, reducing terrain detail" );
			return;
		}
	}
}

function AddMessage( t : String )
{
	messages.Add( t );
	times.Add( messageTime );
	lastTime = scrollTime;
	skipChangesTimeout = fpsCounter.updateInterval * 3.0;
}

function UpdateMessages()
{
	var dt = Time.deltaTime;
	for( var t in times )
		t -= dt;
	while( times.length > 0 && times[0] < 0.0 ) {
		times.Shift();
		messages.Shift();	
	}
	lastTime -= dt;
	if( lastTime < 0.0 )
		lastTime = 0.0;
}

function OnGUI()
{
	var height = 15;
	var n : int = messages.length;
	var rc = Rect( 2, Screen.height - 2 - n * height + (lastTime/scrollTime*height), 600, 20 );
	for( var i = 0; i < n; ++i )
	{
		var text : String = messages[i];
		var time : float = times[i];
		var alpha = time / messageTime;
		if( alpha < 0.2 )
			GUI.color.a = alpha / 0.2;
		else if( alpha > 0.9 )
			GUI.color.a = 1.0 - (alpha-0.9) / (1-0.9);
		else
			GUI.color.a = 1.0;
		
		GUI.Label( rc, text );
		rc.y += height;
	}
}
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback