Press J to jump to the feed. Press question mark to learn the rest of the keyboard shortcuts
Log In
Found the internet!
Talvara commented on
Posted by
1 point · 9 hours ago

I'll leave this here, its a 17:46 minute video by Leonard French broaching the subject.

https://www.youtube.com/watch?v=dBX1DqWbEU8

the short of it, We won't know untill its tested in court.Generally origional works are only granted copyright protection when they're made by a human author. (monkeys taking selfies = no copyright).

its currently unclear what the 'minimal level of creative input' a user of AI tools needs to provide to have copyright. is doctoring a prompt enough creative input in the eyes of the court testing your copyright? is providing a custom input image with img2img enough? etc etc we dont know where the threshold lies untill it is tested.

Its likely that images generated by SD are public domain. Any editing you do afterwards would give you a copyright on the derivative work, not the origional image. and again a derivative work needs to exceed a minimum level of creative human input.

3 points · 9 hours ago

my personal opinion is, almost all of us have a limited or flawed understand of copyright, people have passionate opinions and interpertations but the truth is that laws and the arbitration of those laws are very human and subjective things.

Unless there is a ton of prior cases to fall back on. the fact is we just don't know for sure untill push comes to shove. Personally I'd be carefull when it comes to trading in AI generated images, its a brave new world out there and I'm sure the unknowns will be tried and tested sooner rather than later.

Talvara commented on
i.redd.it/wkzbhk...
Posted by
3 points · 2 days ago

Because generating a random number is very fast. Just implementing the weighting algorithm for 4 rectangles will use more CPU than just retrying. In the OP case, it's about 50% in the blue, so only 2 tries on average. It's only when the blue gets thin, eg. 20%, that retrying would start to be less efficient.

see more
10 points · 2 days ago · edited 2 days ago

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using System.Diagnostics;

public class SpawnTester : MonoBehaviour

{

Rect spawnZone;

Rect spawnExlusion;

Rect spawn1;

float area1;

Rect spawn2;

float area2;

Rect spawn3;

float area3;

Rect spawn4;

float area4;

float sumArea;

Stopwatch simple;

Stopwatch complex;

Vector2[] simpleSpawns;

Vector2[] complexSpawns;

int ci = 0;

int si = 0;

// Start is called before the first frame update

void Start()

{

spawnZone = new Rect(-120, -200, 240, 400);

spawnExlusion = new Rect(-80, -160, 160, 320);

spawn1 = new Rect(-120, -200, 240, 40);

area1 = spawn1.width * spawn1.height;

spawn2 = new Rect(-120, 160, 240, 40);

area2 = spawn2.width * spawn2.height;

spawn3 = new Rect(-120, -160, 40, 320);

area3 = spawn3.width * spawn3.height;

spawn4 = new Rect(80, -160, 40, 320);

area4 = spawn4.width * spawn4.height;

sumArea = area1 + area2 + area3 + area4;

simpleSpawns = new Vector2[10000000];

simple = new Stopwatch();

simple.Start();

for(int i = 0; i < 10000000; i++)

{

simpleSpawns[i] = spawnSimple();

}

simple.Stop();

UnityEngine.Debug.Log("simpleSpawn 10000000 times took : " + simple.ElapsedMilliseconds + " Milliseconds");

complexSpawns = new Vector2[10000000];

complex = new Stopwatch();

complex.Start();

for (int i = 0; i < 10000000; i++)

{

complexSpawns[i] = spawnComplex();

}

complex.Stop();

UnityEngine.Debug.Log("complexSpawn 10000000 times took : " + complex.ElapsedMilliseconds + " Milliseconds");

}

// Update is called once per frame

void Update()

{

DrawRectGizmo(spawn1, Color.red);

DrawRectGizmo(spawn2, Color.green);

DrawRectGizmo(spawn3, Color.blue);

DrawRectGizmo(spawn4, Color.yellow);

DrawCrossGizmo(simpleSpawns[si], Color.red);

DrawCrossGizmo(complexSpawns[ci], Color.blue);

si++;

ci++;

si = si % 10000000;

ci = ci % 10000000;

}

Vector2 spawnSimple()

{

bool spawning = true;

while(spawning)

{

Vector2 pos = new Vector2(Random.Range(spawnZone.xMin, spawnZone.xMax), Random.Range(spawnZone.yMin, spawnZone.yMax));

if (!spawnExlusion.Contains(pos))

{

return pos;

}

}

return Vector2.zero;

}

Vector2 spawnComplex()

{

float rand = Random.Range(0, sumArea);

if (rand < area1)

{

return new Vector2(Random.Range(spawn1.xMin, spawn1.xMax), Random.Range(spawn1.yMin, spawn1.yMax));

}

else if( rand < area1+area2)

{

return new Vector2(Random.Range(spawn2.xMin, spawn2.xMax), Random.Range(spawn2.yMin, spawn2.yMax));

}

else if( rand < area1+area2+area3)

{

return new Vector2(Random.Range(spawn3.xMin, spawn3.xMax), Random.Range(spawn3.yMin, spawn3.yMax));

}

else

{

return new Vector2(Random.Range(spawn4.xMin, spawn4.xMax), Random.Range(spawn4.yMin, spawn4.yMax));

}

}

void DrawRectGizmo(Rect rect, Color col)

{

UnityEngine.Debug.DrawLine(new Vector3(rect.xMin, rect.yMin), new Vector3(rect.xMin, rect.yMax), col);

UnityEngine.Debug.DrawLine(new Vector3(rect.xMin, rect.yMax), new Vector3(rect.xMax, rect.yMax), col);

UnityEngine.Debug.DrawLine(new Vector3(rect.xMax, rect.yMax), new Vector3(rect.xMax, rect.yMin), col);

UnityEngine.Debug.DrawLine(new Vector3(rect.xMax, rect.yMin), new Vector3(rect.xMin, rect.yMin), col);

}

void DrawCrossGizmo(Vector3 pos, Color col)

{

UnityEngine.Debug.DrawLine(new Vector3(pos.x - 0.1f, pos.y), new Vector3(pos.x + 0.1f, pos.y),col,0.5f);

UnityEngine.Debug.DrawLine(new Vector3(pos.x, pos.y - 0.1f), new Vector3(pos.x, pos.y + 0.1f),col,0.5f);

}

}

so I decided to test this,

Simplespawn 1000000 times took : 222 milliseconds;
Complexspawn 1000000 times took: 142 milliseconds;

I'll give that theres caviats here where a smaller exclusion zone could cause the simple spawn to reject fewer cases and thus be faster. and my code might not be the best.

edit: added a little code to draw debug crosses in the spawn spots generated by the 2 methods. and upped the amount of spawn points for both simple and complex methods.

u/LoosePomegranate1585, Feel free to nab this code and adjust it to suit your purposes.

Op1 point · 2 days ago

UPDATE : So i did a bit of adjustment to the code you make at the Start method to fit my coding.

public void Start()

{

Vector3 point1 = new Vector3 (-18f, -50f, 30f);

Vector3 point2 = new Vector3 (-18f, -50f, -30f);

Vector3 point3 = new Vector3 (18f, -50f, -30f);

float dist = Vector3.Distance(point1, point2);

float dist2 = Vector3.Distance(point2, point3);

float playZone = dist*dist2; // Calculate the play zone

Vector3 point1_area1 = new Vector3 (-25f, -50f, -30f);

Vector3 point2_area1 = new Vector3 (-25f, -50f, -35f);

Vector3 point3_area1 = new Vector3 (25f, -50f, -35f);

float dist_area1 = Vector3.Distance(point1_area1, point2_area1);

float dist2_area1 = Vector3.Distance(point2_area1, point3_area1);

area1 = dist_area1*dist2_area1; // Calculate the area 1

Vector3 point1_area2 = new Vector3 (-25f, -50f, 35f);

Vector3 point2_area2 = new Vector3 (-25f, -50f, 30f);

Vector3 point3_area2 = new Vector3 (25f, -50f, 30f);

float dist_area2 = Vector3.Distance(point1_area2, point2_area2);

float dist2_area2 = Vector3.Distance(point2_area2, point3_area2);

area2 = dist_area2*dist2_area2; // Calculate the area 2

Vector3 point1_area3 = new Vector3 (-18f, -50f, -30f);

float dist_area3 = Vector3.Distance(point1_area1, point2_area2);

float dist2_area3 = Vector3.Distance(point1_area1, point1_area3);

area3 = dist_area3*dist2_area3; // Calculate the area 3

Vector3 point1_area4 = new Vector3 (18f, -50f, -30f);

Vector3 point2_area4 = new Vector3 (25f, -50f, -30f);

float dist_area4 = Vector3.Distance(point3_area2, point2_area4);

float dist2_area4 = Vector3.Distance(point1_area4, point2_area4);

area4 = dist_area4*dist2_area4; // Calculate the area 4

sumArea = area1+area2+area3+area4; // The total area that enemies should spawn

StartCoroutine(spawnEnemies());

}

(I pinpoint the coordinate of each part manually and calculate the 4 area by multiply the height and width that are created by the pinpointed coordinate (the y= -50 is the default y coordinate in my scene and it wont effect the code if it is changed) )

I did the same to the spawnComplex();, adding manually the min and max coordinate for enemies to spawn.

Vector3 spawningComplex()

{

float rand = Random.Range(0, sumArea);

if (rand < area1)

{

return new Vector3(Random.Range(25f,-25f), -50f, Random.Range(-30f, -35f));

}

else if ( rand < area1+area2)

{

return new Vector3(Random.Range(25f,-25f), -50f, Random.Range(30f,35f));

}

else if( rand < area1+area2+area3)

{

return new Vector3(Random.Range(-18f,-25f),-50f, Random.Range(30f, -30f));

}

else

{

return new Vector3(Random.Range(18f,25f),-50f, Random.Range(30f,-30f));

}

}

It works perfectly as i expected . Thanks for the code you give , you save me this time.

see more
1 point · 1 day ago · edited 1 day ago

Nice work, If you wanted to make this code better you'd make it use less 'hardcoded values' and instead make it all work based on a few simple inputs from which the all the other values are derived. Bonuspoints if you expose those simple imputs to the unity editor.

A+ if you also make it able to debug render in the editor while editing. ;) (as a hint, you'll be looking at either 'OnDrawGizmos' or '[ExecuteInEditMode]')

Could you refactor the code so that it'd work while taking a 'Topleftcoordinate ', a 'bottomrightcoordinate' an 'insetAmount' and maybe a 'spawnHeight' (though that can also be contained in the two coordinates)

Mind you this hardcodedness was also a weakness of the code I threw up here. I was more interested in testing the efficiency hypothosis than I was with writing good code.

https://i.imgur.com/30o7SNj.png

Its alot more work upfront but it'll make your code much easier to reuse and alter in the future. (like if you feel like you need to change some things for the gameplay, or you suddenly want to make your game work on a different aspect ratio screen or whatever)

Load more comments

Talvara commented on
i.redd.it/p5vrtm...
Posted by
50 points · 10 days ago

Genshin impact really isnt a bad game. the only concerning thing would be their buisness model. where if you're vulnerable to such things you can easily spend much more than reasonable.

you can play the game for free no problem though I've spent like 6 euros on it an had a ton of fun and definitely got my moneys worth of entertainment. updates over the past year have also been significant. Graphics are amazing if you're into the Ghibli/anime aesthetic. exploration is well done and encouraged by scattering interesting sights and treasures all over. and while the combat mechanics might not be for everyone, they're not simplistic.

and you can't beat the price of free to play (provided you're not suspectible to overspending on micro transactions)

7 points · 10 days ago

It's honestly great. I buy the monthly card and that's pretty much it. Obviously that means that at some point I've paid more than I would for a fully released game but they keep updating the game so I'm paying $7 for consistent monthly content which is a good deal imo. Plus if I ever decide I don't want to I can just not buy the card sometimes but the game is still there with all of the updates

see more
2 points · 9 days ago

I think that is reasonable yeah, Everybody has a price that they're comfortable with spending for an hour of entertainment from a game. for me if I get about an hour of fun out of a euro I won't feel bad or cheated. Game development is a buisness and they've got wages to pay too.

I think in the case of the freemium buisiness model my only objection is that there is no cap on what someone could spend. healthy people generally won't spend more than they can afford but I must confess concern for the whales.

and I think we've all heared those horror stories about kids, tablets and microtransactions ;)

Talvara commented on
Posted by
1 point · 12 days ago

Link to game please

Hard to give criticism based on text alone.

see more
1 point · 11 days ago

That wouldn't be possible while also maintaining anonomity required to air complaints about their superiors.

Talvara commented on
i.redd.it/rtm8ha...
Posted by
58 points · 13 days ago

Better to not look at the code either just to be safe, quantum mechanics and all that.

Talvara commented on
Posted by
11 points · 28 days ago

Looks like you've got some reversed normals there.they wont show on renders that render faces doublesided, but alot of unitys' shaders only render singlesided (which is usual for games)

in Blender, under viewport shading (the dropdown in the topright of your 3d view) enable 'Backface culling' checkmark.

then select anything that looks inverted, and use 'mesh -> normals -> flip' then export your object again and import it again into unity.

Talvara commented on
Posted by
68 points · 1 month ago

I think the real answer is that tripple A games are a huge investment, most companies aren't willing or able to take a risk when the money involved is as high as it is for the production of games at this scope.

as a result most tripple A games will cast a wide net and try to appeal to players of all skill levels. meaning that the game defaults to handholding to not alienate the players (or customers) that aren't looking for a challenging experience.

0 points · 1 month ago

That's stupid. You have a source on this?

see more
1 point · 1 month ago · edited 1 month ago

If you're interested in this stuff. I did find a post mortem for God of War.https://80.lv/articles/god-of-war-designer-on-building-accessible-games/

slide 5:Accessibility
focuses on removing or avoiding unecessary barriers to play that would otherwise prevent players with a range of impairments from playing a game.

slide 8:New Beginnings
Create an ambitious, reimagining of a epic franchise...
... AND make sure a much wider audience can enjoy the game.

Ofcourse these post mortems when made public tend to be positive, and wont state things like 'wider audience = more money'.accessibility also isn't a bad thing. but at some point (if not done carefully) it does leave potentially interesting features on the chopping block in its name.

1 point · 1 month ago

Don't think I could get you a source from tripple A side of things. if I went looking I think the most I would dig up would be indie developers justifying their place in the world stating flexibility and higher tollerance for risktaking.

The thoughts aren't illogical though. The bigger a project gets, the more money that flows into it, the more peoples livelyhoods that depend on it. the more carefull design decisions need to be made. Especially when theres outside investors involved who also enact influence on the design process. things will naturally get more risk adverse.

Theres reasons why we get sequels (of increasing budget) of games that have proven to sell well. past success are things that calm the fears of investors. an exception I can think off is when a superstar designer is involved. Though the only name that still comes to mind is Hideo Kojima. we used to have Will Wright, Steven Molineux and Sid Meyers. but I feel all those names aren't as illustrious as they once were.

Load more comments

Talvara commented on
Posted by
7 points · 1 month ago

I suspect, going from some reactions to AI art generation. that keeping it quiet that you're using it is the best bet.

I can definitly see review bombing and brigading being a thing in the near future.

edit: that said, I think atleast for AI image generation. with image to image, iteration and carefull curation coherent works can already be made.

a convincing text to speach solution will make people who are great at narative but have a limited budget able to make more amazing things I think.

User avatar
u/Talvara
Karma
322
Cake day
September 10, 2013

Trophy Case (3)

Nine-Year Club

Verified Email

Place '22