#๐Ÿ–ผ๏ธโ”ƒ2d-tools

1 messages ยท Page 11 of 1

clever stream
#

Like this

#

I already tried to modify the Order in layer

#

Must i use a canvas ? as it appear like this? I'm watching a tutorial where he don't do need this

clever stream
# solemn latch Why ARE you using a canvas?

Code and assets linked below. Learn how to make a 2D RPG turn-based battle system utilizing free assets and the powerful tools Unity has to offer. In this tutorial I walk through every step of the game making process. Characters have range and melee attacks, health bars and mana. This is the real deal. Linked below is a playlist of the full seri...

โ–ถ Play video
#

it's 3 y/o so maybe it's not updated to today's use

solemn latch
#

Basically, canvases are meant for UI.

#

I'm on mobile so not gonna watch the video. So I can't say why he chose that method.

clever stream
#

For a 2d game in Unity

solemn latch
#

Again, I'm on my phone UnityChanSleepy

clever stream
modest cargo
clever stream
tidal river
#

hi did someone know how this characters are called?

#

like with just legs that move, i cant find any assts with this style, please help me.

potent belfry
#

i change a button's parent and suddenly it becomes invisible

#

i dont know how i can change it back, i literally just created an empty object to sort my hierarchy and when i move the button into it, it just disappears

#

even when i just bring it out of the other parent

sharp lichen
#

You've got this in 2d, but is it UI?

modest cargo
potent belfry
#

oh well i didnt know what was wrong but i deleted it and done it again and it worked

still tendon
#

Hello, I want to replace assets in a tilemap with updated sprites but am not totally sure how to do so, any tips?

crystal lagoon
#

hey

cedar osprey
#

Any idea whats happening with left tile? I dont even have it in the rule set

modest cargo
brittle perch
#

Guys, has anyone here worked with 2D ragdolls? I need help with ragdoll balance

floral oyster
#

Hello everyone, I've been having a problem with Light 2D for some time now.

I work with pivot points so that the player can tell when they are behind a house, for example, and when they are not, in order to display the SpriteRenderer visually correctly. This works great, and at a certain point, the character disappears behind the house.

But now to the problem. The light stays there, of course, because it continues to illuminate the layer that was specified. My actual goal would be that as soon as the player disappears through the pivot point, the character no longer illuminates the target.

I've attached a picture, maybe someone knows the problem.

modest cargo
#

It's designed for fully top-down or fully side view

floral oyster
modest cargo
#

And a fake shadow height too, so shadow casters aren't infinitely tall

floral oyster
modest cargo
floral oyster
#

i need to work with that asset.

#

i wanted to avoid it because its a bit much. Its a good asset but for somone thats only working with unity for 1 year it can bit a bit to much.

solemn latch
#

It is easier than making your own 2d lighting system, probably. ๐Ÿ˜„

cedar osprey
tidal river
#

hi, i cant drop a sprite on the animation anyone knows why?

#

i cant even select this

modest cargo
spare current
#

hey im very new to unity and ive mostly been following tutorials but i cant figure out how to not make the background follow my camera like that, it may have something to do with the cinemachine tool but idk tbh

#

oh damb no embed

#

should i upload it to yt or something?

solemn latch
#

unless it is really big

solemn latch
#

Depends on what you are specifically trying to do, though

pulsar nexus
#

How do i make any gameobject instantiated from default tiles to save changes made to them during edit mode? I am able to instantiate gameobject using tiles in the tilemap and rotate them using "GetInstantiatedObject(position)" using my custom brush, but when i go into play mode those changes donยดt apply, if more info is needed, i can provide.

tidal river
#

hi anyone knows how can i put this tourches in my map
in the left walls of course

cobalt zenith
#

Using SpriteRenderer, is there a way to make the edges move inwards? I'd like to make them flush to the fill.

cobalt zenith
modest cargo
cobalt zenith
#

Hold on.

#

๐Ÿต

#

(This is gonna take a while)

cobalt zenith
# modest cargo What edges exactly? "Flush to the fill"?

Move the edges inside this line.
Since this same line is going to be matched by the polygon collider.
I need to have the ability to change the material without having the sprite shape adapting to it because the edges is a bit bigger/smaller and also expanding the collider if i do use one.

modest cargo
#

Do you want to change the sprite without affecting the collider?

cobalt zenith
#

Sorry if it was a bit confusing. ๐Ÿต

#

By edges, i meant the sprite edge. Currently, it just goes along in the centre of the line.

modest cargo
#

How should it go instead?

cobalt zenith
#

Like this one.
There's an offset parameter that I can use.

#

There's an offset parameter that I can use which can move the sprite edge more inward or outwards.

modest cargo
cobalt zenith
alpine pumice
#

how would I go about adjusting the pivot point for multiple sprites in a spritesheet at once?

alpine pumice
#

thanks

sullen wadi
#

can you tell me how to make a change of clothes and how it will be in the animator? Unity

modest cargo
junior elm
#

any suggestions of how to make the board to look better?

viral niche
#

hi im going insane why is my IK doing this when i generate the target

#

both the right arm and right leg are having the same issue

swift moat
#

why dont i have 2dlights

#

did i select the wrong project

#

where do i get this

still tendon
swift moat
#

i figured it out

#

no worries

still tendon
#

๐Ÿ‘Œ

solemn latch
copper sedge
#

Can't add anything to the image

viral niche
solemn latch
#

Hm, not sure what you mean, but interesting!

#

Might be worth bug reporting.

#

They should be basically independent

finite harbor
#

im kinda confused about hexagonal tilesets

#

how exactly do i set one up

wooden fossil
#

Hi everyone, i'm doing a 2d retro Aoe2/Cossacke like rts game .
I'm struggling to find rts 2d isometric ressources freetoshare .
Can somebody help me.
I need some 16th century Sprites.
If anybody want to help in any way, feel free to ping or dm ๐Ÿ’ฃ

mortal heron
#

guys, i have a 2d tilemap that i expanded alot by adding tiles, and then i removed tiles from it, but it seems like the gameobject is still bigger (it didnt automatically shrink when i removed the tiles). this makes my tools' (move/rotate/etc) anchor point to be completely off, anyone know how i can reset the tilemap to only be as big as the tiles it has?

topaz cosmos
#

Has anybody worked with animated tilemaps before?

topaz cosmos
zinc kernel
#

Hi all,

After years of developing 3d projects I am developing a 2d mobile game for the first time, I want to know an artistic pipeline from concept to exporting animated 2d characters into Unity.

I was reading and watching videos for a week, and I had no clear pipeline to follow: some creating characters through painting, others in a vectorial way, some using specific animation programs, others animating into Photoshop directly...I am lost

I thought about this pipeline, but as an absolute beginner, I do not trust my no knowledge:
. Creating a concept through IA
. Create the character itself through vectors in Adobe Illustrator.
. Animate the character in Adobe Animate.
. Maybe create the sprite atlas with the animations in Texture Packer (I do not know if need this software as I do not know if Adobe Animate can do the same work)
. Export from Adobe Animate or Texture Packer to Unity.

How do you see this pipeline? It is right for a simple 2d mobile game? I have access to all the mentioned software and I can purchase another one for this project, I only care the fast and easy production, not the money

I hope you can help

Thanks

still tendon
#

I have a 32x32 sprite sheet split into 2 sprites but for some reason i can see a bit of a pixel from the second sprite in the first sprite. any ideas?

modest cargo
modest cargo
still tendon
#

yeah the animation place seemed a little too high brow for me haha

#

but i got the padding thanks

tough moon
modest cargo
tough moon
#

I just want it to flip without it like jumping to somewhere else

#

And the origin point/pivot seems to be in a good place for that

#

I'm fairly new to Unity, so I'm not 100% with everything

modest cargo
#

This means you are not seeing where the pivot really is

tough moon
#

Ahhh

#

How would I see the real pivot?

modest cargo
#

Start by clicking the button

tough moon
#

ok. It's moved to its real pivot, so I now see why its jumping like that

#

Is there a way to center the real pivot?

modest cargo
tough moon
#

Now works perfectly

#

Thanks for your help

#

Ok, it works fine in scene, but not in game

#

nvm. My animation positions are causing it

#

there we are. fixed it

plucky estuary
#

ive been using firealpace to make these basic sprites

#

my sisters won't let me borrow their ipad or drawing tablet so how can I make sprites easily

#

with geometric shapes and a library of textures maybe

#

what software

restive delta
#

I have triangle sprite with collider. Pivot is on the bottom center.
When I place tile of the sprite into a tile palette I have an offset of half of a cell.
Then I enter the tile edit mode to set the y offset to -0.5f so the triangle fits the cell.
But a collider did not offset with its tile.
(Sorry for my English).

solemn latch
zinc kernel
modest cargo
zinc kernel
# modest cargo 100% depends on the kind of art style you want and what kind of art techniques y...

Not man, the topic is not about visuals, it is about a fast production-ready project, you can achieve almost any style with any software if you have the skills, it is a technique debate: whatยดs best for a 2d mobile game in a production way, to animate sprites or vectors, what software do you use for that if you published any game, software that enhances the unity bad points like tecturepackergui, and so on...

modest cargo
#

Unity's sprite atlas feature is completely fine, you don't need an external texture packer

#

Unless "2D mobile games" have all started using the same art direction you still have a lot of choices to make

#

If you want vector graphics, you will need to figure out if it's better to import them using the vector graphics package, or if you need to export them in a specific way into raster sprites
If they need to be animated, an art style may enable you to animate a hierarchy of transforms with each their own sprite, or it may restrict you to having to do flipbook animation
You may additionally be able to utilize 2D skinned rigs for a specific type of animation
Many different art programs can be used to produce assets for each of these workflows

restive delta
outer falcon
#

Hello guys, is there any way to save tilemap drawing as a prefab?

modest cargo
viral niche
#

can someone explain why my sprite looks like this in unity?

viral niche
#

oh word thanks

viral niche
#

I'm trying to import a .PSB rig with 32x32 sprites but the imported sprites aren't 32x32 unless they're .PNGs, how could i fix this? (left .PSB import, right .PNG import)

viral niche
#

yeah im trying to make them able to be easily swapped out with other sprites without causing issues later on

#

i've already tried doing it with the non-32x32 sprites and it didnt go well

#

if its a 32x32 sprite its position is predictable

modest cargo
#

sprite renderers will adjust their size when you swap the sprite reference
If you swap it in shader, it cannot adapt

zinc kernel
# modest cargo Unless "2D mobile games" have all started using the same art direction you still...

Thanks for replying. You need an external tool like texturepackingui cause Unity does not receive the info on the pivot point of the texture atlas, and u have to manually set then in every frame of animations, it is a productivity killer.....Yes, u are right about the exporting method question, and that was one of the key points of the debate, and still guessing between working with sprites or vectors, as vectors are easier to animate and u do not need a lot of art skills, it is a more technicall and less artistic process...But the point is that I want to start from AI concepts to save time and gain visual appeal, so at this point I would like to try if possible to vectorize the AI images that I create, so I can animate them as vectors, while having the appearance of bit maps.....As I did not have this process before I want to know if this is a possible and productive process, trying to avoid as much of the art procedure

modest cargo
#

What "debate" do you speak of?

#

The workflow you're suggesting seems a bit bizarre to me, a lot like asking how to make a burger using only microwave burgers but make it look like a tortilla

zinc kernel
# modest cargo Normally you make animations in whatever program, then export them as a sprite s...

I do not know if u are a 2d artist but there is a big difference between the time employed animating in a nonanimation-specific software and a dedicated one. Unity does not keep the info on the pivot point of Adobe programs, so u have to set it manually in all frames or use an intermediate program. The debate is the topic we are talking about...Ok, I see it is bizarre for you, I do not know at what point as I never did this 3d process before, I create the images, vectorize them, animate them, and use a program to optimize and organize the animations

modest cargo
viral niche
modest cargo
#

That it doesn't work seems to indicate that the PSB importer automatically crops them

viral niche
#

bummer, anyway to fix that?

modest cargo
# viral niche bummer, anyway to fix that?

I don't expect so, besides not using PSB importer
It's designed to rearrange each layer as an individual sprite so it makes sense for it to crop them
Are you fully sure you need the empty space?

viral niche
jaunty quarry
#

what pixels/inch should i use in Photoshop and how many pixels per unit in Unity

viral niche
#

i changed the sprite the SpriteRenderer on the head was using and now its not interacting with the skeleton or the rig (you can see here how the face is still bound to the head bone but the head itself isnt)

#

im trying to set up a character customization/gear system but i cant get it to work with my rig

modest cargo
#

Pixels per unit is a standard set by you to keep your graphics at the same resolution relative to each other

modest cargo
viral niche
#

thank you for saving my life sir

solemn latch
jaunty quarry
#

looks not blurry now ๐Ÿ˜„

modest cargo
#

@jaunty quarry Basically what you want to keep in mind is that the Unity camera is twice its Size tall in units, if orthographic
Those units are stretched to fit the user's screen vertically
Pixels per unit determines how many texture pixels a sprite will have per unit as a sprite renderer by default unless scaled

vague smelt
#

Can shadow casters be opened shapes? Because now its making shadow problems like this.

modest cargo
vague smelt
#

this is closed shape

modest cargo
#

2D URP's lighting can't really do isometric lighting of much any kind

frigid echo
#

guys, how i resolve this? when I change resolution from 1920x1080 to a resolution of a cellphone all the sprites and fonts of texts become pixelated

modest cargo
#

It likely will not appear like that when built

maiden sapphire
#

can u slice a sprite sheet like how u can with a single sprite? so when u make it bugger only certain parts get scaled up or how does this exactly work?

cold oyster
#

Hi! I know it's easy but I'm new to Unity: how to make the button's width fit the text inside it? Thanks

jaunty quarry
#

i am really getting frusterated with creating art for my game, what is the general size you guys go for Art? everything i do looks wrong and blurry to me

modest cargo
maiden sapphire
modest cargo
# maiden sapphire can u elaborate

9-slicing is the only thing that comes to mind from your description which is rather vague
You'd look up what it is, and determine if my guess was correct at all

modest cargo
# jaunty quarry i am really getting frusterated with creating art for my game, what is the gener...

Unity uses mip maps rather than resampling algorithms when sprites are viewed above or below their native resolution
(unless the display resolution is one of the mip maps, meaning reached by doubling or halving the resolution when scaling the sprite object)
Additionally you'll want to be sure that the resolution you're viewing your sprites at in editor through the Game window is not weird or zoomed out/in

finite harbor
#

ok im wondering

#

i currently have pickups in my game as puzzle elements

#

only thing is that my player character is based on a rigidbody with addforce, and touching pickups slows my character's momentum

#

is there a trigger system i can use instead for pickups instead of colliders?

#

ok found the istrigger option and ontriggerenter

#

awesome

tidal river
#

Hi guys, sorry for being annoying, does anyone know how I can fit these dungeon rooms into just one square?

#

like this

solemn latch
tidal river
#

I want to made just like the second picture i send like dungeons on square just like the photo with the walls but thats easy my issue is to make the dungeons with a format of a square and not like what i have in the 1 picture

#

I just want to make the dungeons walls like a room with 4 walls

tidal river
#

I want to make like that game

solemn latch
#

I do not.

tidal river
#

Just imagine its a 2d game with squares rooms

solemn latch
#

So you just... draw square rooms?

sullen copper
#

Hopefully this is the correct channel. I don't know much about optimizing assets, and I was wondering if there's a way to cut this down from 46mb, it contains a lot of sprites so I did have to up the size, it's 4000x3040 & 46MB spritesheet, but each sprite is 160x160 as the original canvas size from aseprite was, is there a way i can cut out all the extra space without automatic slicing?

solemn latch
solemn latch
# sullen copper

Well, it looks like you could definitely cut that down a lot. Either trim it in aseprite, or pack in unity I guess. You'll probably want to use a power of two size, to enable better compression options.

solemn latch
#

Power of two.

modest cargo
#

For sprite atlas it doesn't matter what shape or size or how much empty space your sprite sheets originally have

sly elbow
#

hello how would i properly cut my sprite in the skin editor in unity , im trying to animate this image buts its all together and i can't

modest cargo
#

One of them had totally broken selection functionality on all sprite editor tools

sly elbow
modest cargo
# sly elbow 2022.3.4f1

I think that indeed is the particular one that broke
Download the newest version of that editor (2022.3.20f1) and upgrade your project to it

sly elbow
modest cargo
# sly elbow any link on how to upgrade my projct so i dont break anything

There are no steps to it besides download the newer editor, then switch your project's version to it through Unity Hub's project list
The third number of the version means patches, and in my experience upgrading that hasn't ever broken anything in a project (besides introducing new bugs if the new version suffers from some too)
But if you're worried you can always make a copy of the project
Or, which you should always be doing anyway, use version control software

#

Swapping a project to an editor with a different year number or major version number (first and middle ones) is likely to break things, on the other hand

sly elbow
rough peak
#

Hi, I am implementing Perlin Noise Terrain Generation into my game and its going well.

An issue I am having is with Unity Ruleset tiles. I want single tiles to not have connecting tiles. It needs to be in a 2x2 to connect. I have a somewhat working solution however, tiles still are trying to connect to the single tiles. Is there anyway to add conditions to a rule set tile to not connect to a single tile?

modest cargo
#

I have a hunch what you might mean but I hope you can clarify it

#

Spelling it out what tile exactly should not connect will help you articulate it into tile rules

still tendon
#

I created an animation in Unity that changes the z-rotation of an object in 2D. However, the animation doesn't work in some cases, and during these times, I cannot make any changes to the z-rotation. How can I fix this issue?

solemn latch
real thicket
#

is there any way to get something like a sprite shape to act as a sprite mask?

modest cargo
solemn latch
#

I believe that the most recent version should support that directly, but if not you can always hack together your own masking with shaders.

viral niche
#

i have a skeleton rig with hinge joints with angle limits meant for ragdolling, but the problem is if i rotate the bone, the hinge joints and the angle limits rotate with it, any advice? i want to be able to use this rig for animations outside ragdolling

viral niche
real thicket
real thicket
smoky cave
#

Hi everyone - stupidly embarrassing question, but I'm a Unity beginner! I'm just building a flappy bird clone just to practice on something, but can't understand why my main orthographic camera keeps pixellating my bird asset in the game window. I think I'm fundamentally just not understanding something about cameras, but can't seem to fix it.

#

Main Camera Setting look like this:

modest cargo
smoky cave
#

Ahh, nevermind - solved it! @modest cargo yup, my issue was that in creating a new display resolution, I selected "Fixed Resolution" rather than "Aspect Ratio". ๐Ÿคฆโ€โ™‚๏ธ๐Ÿคฆโ€โ™‚๏ธ

real thicket
narrow bane
#

Would this be the right place to ask a Q about ShadowCaster2D & sprites?

Is there a way to disable shadows from casting on a particular sprite if the ShadowCaster is enabled in a scene?

#

Maybe change material to Sprite Unlit Default?

#

i'll try that

#

yeah, that worked cool

wide solar
#

Hi! I don't know if it's a good place to ask, but is this a good way of adding leaves to the tree?

modest cargo
wide solar
modest cargo
solemn latch
#

The actual sprite geometry will be batched, so most of the performance difference will be due to overdraw.

modest cargo
#

This is not really the place for asking for free work or for sharing pet pictures
!collab

barren orbitBOT
still tendon
#

I want to set up an arcing lightning graphic which would have to be longer or shorter based on the distance between the targets, is there an easy way to do this?

still tendon
bold remnant
#

anyone have advice for tilemap tile coloring? I have so far had 0 issues (besides this one now) with runtime based coloring on tilemaps. But for some reason this loop (pic 1) which I know is being called and is even (with the help of the debugs) actually changing the color of the tile. But for some reason isn't actually changing the color in the game itself (or the change isn't be reflected despite it happening?). I have done the same system elsewhere and it works so I am seeking advice as to why it wouldn't work now lol.

bold remnant
#

I figured it out

dusky magnet
#

Hey, is there a tool to cut spritesheet into sprites in a different order?
Instead of left to right then top to bottom I need top to bottom then left to right.

#

Normal spritesheet:

[1][2][3][4][5]
[6][7][8][9][10]

My spritesheet:

[1][3][5][7][9]
[2][4][6][8][10]
modest cargo
little pond
#

Hello,
I created an open Spriteshape and attached a child object into it. When I modify the spriteshape, it correctly creates its pivot in the center, but the child position is unchanged and stays at global position 0,0,0 and does not respond to changes in the spriteshape. I would like the child object to always move to the new center position of the spriteshape. How to achieve this? Thank you! ๐Ÿ™‚

The picture below shows the case when the circle is a child of the spriteshape and has the position 0,0,0

modest cargo
little pond
dusky magnet
#

and doing it manually is a pain

modest cargo
#

The forum post's mention of "pivot moving unpredictably" is a bit confusing to me, as if they were mistaking gameobject center for the pivot likewise
But that doesn't alter the sorting

modest cargo
#

It's flexible for many tasks

little pond
# modest cargo Pivot in unity is the "sprite's position relative to its transform position" whi...

I have two cases I would like to achieve:

The first is the case where I have a straight platform (from two points, not curved) and I want to place a sprite object in the center of it.

The second case is another straight platform, where I want to position pivot on platform to rotate the platform around that point. Because now I have to create spriteshape so that it intersects the default point 0,0,0 in the position where I want the platform to rotate.

modest cargo
#

In the first case the sprite has to remain at the dynamic center of the sprite shape even if it changes shape?

little pond
modest cargo
#

If you want it done automatically you'll need a script that gets the average position of the shape (from points or bounds) and sets the object there

little pond
#

@modest cargo kk, I will do that, thank you for everything! ๐Ÿ™‚ have a nice day ๐Ÿ™‚

dusky magnet
modest cargo
solemn latch
#

You can also just rotate the sprite sheet 90 degrees, cut it out, then rotate the other way

#

then reassemble the way you need ๐Ÿ˜„

sullen copper
#

how do i check when a player walks on a certain tilemap with a certain tag without using box colliders?

#

the tilemaps are animated and have physics outline in their sprite editors, composite colliders, rigidbody, tilemap 2d collider, etc, but they won't respond to oncollisionenter2D in my lpayer

modest cargo
sullen copper
# modest cargo The tilemap collider should work

idk if this is related, but i dont see the collision show around the tilemap when i place it like my other collision tilemaps have the collision visible in the editor but the animated water doesnt

#

but i configured everything the same for both of them

#

so maybe it has something to do with the fact this one is animated

raven topaz
#

Hi im having a problem on my sprite renderer, its like off the grid and scaled down.

modest cargo
solemn latch
#

Other than being a kinda inefficient texture layout.

alpine sleet
#

Could someone pls tell me how to fix this problem in unity, where 2d sprite look ugly (not blury) and break on movement, with default camera?

raven topaz
solemn latch
#

Because it is actually opaque?

viral niche
#

i have a problem rn

#

im trying to rotate a character rig that has bones, IKs and HingeJoint2Ds for ragdolling, but whenever i try to flip the character by setting my parent objects X to -1 my HingeJoint2D angle limits also get flipped

#

only way i've come across to fix this is by transforming my hip bone's (the root bone of my rig) Y axis to -1 but this messes up the IKs on my parent object and they dont line up with the rest of the rig

#

(the IK is not supposed to be there)

sullen copper
grand loom
#

I have a mechnic that lets you build gameobects via Drag-Release, Similar to Factorio. Im using a 2D Grid but im concerned about how accurate things are, especially when interacting with other game objects.

Should i be using a Tilemap system for the building instead of Grid based?

#

i think i have to right? especially if im building like a wall il need to have Auto Tiling

solemn latch
viral niche
#

Yeah, actually makes the issue worse because it offsets the anchors too

solemn latch
#

In that case, having a parent object to handle rotation and scale might be a good idea.

#

Or do what I do and render the entire rigged sprite hierarchy to a render texture and just put that on a quad that can be scaled and rotated.

#

(Which is usually not worth the trouble, but sometimes it is)

viral niche
#

Itโ€™s all being rotated by the parent object already, but maybe thereโ€™s a better way to handle it

hot fern
#

Hey, how can I fix this?
As you can see, the trunk is being placed on top of the leaves of the bellow tree.

#

Changing the pivot of the sprite does help a little bit, but then the tree isnt positioned properly on the tile

#

And it won't help much, as you can see

hot fern
#

Oh, I fixed.

dense glade
#

How can i avoid this in sprite editor?

modest cargo
dense glade
#

I alrrady separate icons from other stuff to avoid this

modest cargo
dense glade
#

Thats what i did, still thx for advice

brave prism
#

i havent worked with 2d sprite sheets much, i have this sheet where there are different tiles on it to animate the water moving for each directional/type block. what's the right/easy way to work with this? usually with character animations id highlight the frames and drag into the scene to create the animation, but that seems like a pain here with a tileset

solemn latch
#

Have you looked at the animated tile extension for tilemap?

bold remnant
#

Question, do anyone happen to have good enough knowledge to know how to mess with the Drawing gizmos. I want to customize them to be more suitable for my isometric game. I want to contort the blue square to something like red

proven plinth
swift knot
# bold remnant Question, do anyone happen to have good enough knowledge to know how to mess wit...

Depending on what version of Unity you are using you might want to use handle drawers instead. They have built in functions to do that kind of rotation.
If you are trying to use it just for highlighting you can use a ReactnagleHandleCap with any handle you might need.

Handles are like Gizmos that can mess with a game objects data directly.
Example the Transform tool for moving, rotating, and scaling an object is an Transform Handle.

bold remnant
swift knot
# bold remnant Ok interesting. I'll have to take a look when I get home and see what you are ta...

Just to give you some help in looking for the documentation. Here is a link to the Handles API.
Due note if you see things like handles and handles cap the easiest way to think about it is as following.

Caps are meant to allows drawing a visualization and choosing an editor event to update it on.
Based on the editor event you choose to update it on they do something different with the value they return.

Handles actually allow for returning data and editing variables. Example I use Handle.DrawArc to made a visual Line of sight detection system that I can see and debug in my 2D metroidvania project for AI. I can drag the handle out to increase the float value in AI Sight code for distance to check.

Depending on what you want you could honestly get away with the simple Handles.DrawOutline function.
It draws an outline on whatever gameobject, sprite, or anything you want it to.

https://docs.unity3d.com/2023.2/Documentation/ScriptReference/Handles.html

bold remnant
swift knot
bold remnant
swift knot
# bold remnant Fair question of my wording lol. No the flag is an object just a range number fo...

Ah okay so good news if you have logic to already get the tiles depending on what version of Unity you are using there is a Handles function that let's you pass in different size data. This can even be from sprites and tiles.

The Handles.DrawOutline function has an overload call for the method that lets you pass in an array of renderers.
You can actually just pass in the list of renderers from your tiles and that is all you need to do.

You can control the color by passing in a color into the method call for the outline.
If you want more than an outline and you want a box fill that is transparent you can do that as well.

https://docs.unity3d.com/2023.2/Documentation/ScriptReference/Handles.DrawOutline.html

bold remnant
swift knot
# bold remnant Omg that is amazing. Me in 2 hours when I'm out of work will be so happy

Glad that might be able to help you.

If you need help with an example script I think I can dive into my code and copy out an example for you or write one from scratch to match which version of unity you are using.
I say version of Unity because the Sprite Dataprovider tool set got some new ways recently to grab the sprite outlines into a single renderer.
Using that function to grab individual tiles and make an outline from their combined render.

I use the Handles.DrawOutline for debugging stuff in my game.

bold remnant
swift knot
bold remnant
swift knot
bold remnant
#

2021.3.8f1

swift knot
#

I can try and see if their is an easy API with handles to do that in.

#

If not you might have to rely on Gizmos drawing for now sadly, but that shouldn't be too hard.

bold remnant
#

would updating to a newer version add this feature lol

swift knot
#

That is always up to people if they want to try a newer version of Unity.

I know some people are stuck on the older versions of Unity because of their project and don't want to risk and API breaking changes.

bold remnant
#

that has been me lol

bold remnant
#

if it isn' t possible ill survive, was just really hoping to have some visual aids

swift knot
wanton blade
#

Is there any way to generate (and save to file) a Sprite Sheet during runtime?
(Even as far as manually write .meta file, to load as an external asset, somehow?) I can't find anything suggesting it's possible.

In the Editor, this works great: dataProvider.GetDataProvider<ISpriteOutlineDataProvider>().SetOutlines(spriteGUID, outlines);
However, I need to do it during runtime.

The only alternative I can think of, is to use the 'outlines' to build Mesh-es - all sharing one Material, individually offsetting the shared Texture.
Notably, estimated upwards of 5000 'outlines' (shapes) per image/texture - whether sprites or meshes.

bold remnant
#

I considered going back but from what I saw it's more complicated to go backwards

swift knot
swift knot
wanton blade
swift knot
# wanton blade I'm currently using 2023.2.10f1 - so should be pretty up with the new versions. ...

So just checking beofre I answer this. You have several sprites you want to combine together into one sprite sheet during runtime.
The file you want to save this, is there any specific file format you want it to be or are you just wanting to save into to a new sprite file itself.

Also does this file stay after the game closes. So the asset would actually be saved to your desktop if it was a desktop game.

wanton blade
#

Close, but not quite exactly. I can see how it was interpreted that way, though. (Also, meant to 'Reply' - woops)

I'm making puzzle-pieces out of a supplied image; however, I want the result to be saved to a file. (ie: A sprite sheet, or otherwise custom file)

I already am generating point-arrays that outline the shape of each piece, and can save that to a custom save file - but that just defines the shape/points.

I already can create individual textures/sprites, copying from the source image - but that's messy and inefficient. I'm trying to improve that. Ideally with sprite-sheets, or perhaps mesh-generation.

#

The point of saving the file is to be able to resume/share the resulting/created puzzle. So the format is moot, if it offers what I seek.

swift knot
# wanton blade Close, but not quite exactly. I can see how it was interpreted that way, though....

Let me open up Unity and see the name of function I am looking for. There is actually a one line command that send back the outline of several sprites/tiles and can be used to generate a new sprite like that.

For the saving file part sprites can actually have scriptable object data built into them or linked to them. There is API to do that during runtime as well. One way might be to have an scriptable object that holds a list of resulting sprites.

wanton blade
swift knot
wanton blade
swift knot
#

Also are you using Sprite Atlas to hold textures, because don't think my idea works for Sprite Atlases.

wanton blade
#

I don't believe I am using an atlas. Just the 'sprite editor' off an image.

#

Part of this push for sprite-sheet, is the assumption that having a sprite-sheet will be better/faster/less-memory/etc than generating meshes. This is an assumption, that I could be wrong on.

A) Load an existing sprite-sheet with 1000 sprites, displayed via SpriteRenderer.
B) Dynamically generate 1000 Mesh's, with MeshRenderer's pointing to a single Material, where each MeshRenderer independently sets the Texture 'offset' accordingly.

Correct me if I'm wrong - but (A) is the clear 'winner', right? Presuming it's possible, which is what my original question was.

swift knot
wanton blade
#

I am using URP atm. Though in a 3D game (there's a couple 3d elements, so it's not 100% 2d)

swift knot
#

That still works with batching.

#

Let me test this code out and see if it does exactly what you want real quick.

wanton blade
swift knot
# wanton blade Alrighty, muchly appreciate the dive into it. ... (Hey, I finally remembered to ...

So after playing with it a bit there are a couple ways to do this depending on what path you want to go.

  1. Generating a texture and setting it as the texture used by a sprite renderer.
    You can read the texture of the sprites you are wanting to fuse together. Get the pixels of the two sprites and create an array of pixels which would be an array of Colors.
    You can use the sprites rect to choose which pixels you want to sample instead of the entire sprite sheet for when getting the pixel colors.

There is a function on Texture2D called GetPixels(); This one has overloards for x and y on the texture you want to test. You can use the Sprite rect to choose the actual sprite you want.
There is also a function on Texture2D called CopyPixels that allow you to copy those pixels to another texture.

You can get the pixels of the Sprites so there actual colors and alpha. Create a new texture from the two sprites.
Set a sprite render texture using the MaterialProperty Block and choose the new texture.

This will render your new sprite from the created texture.

Have to step away for a second, but will type the other solution out in a second.

wanton blade
# swift knot So after playing with it a bit there are a couple ways to do this depending on w...

That's basically the solution I started with, and currently have implemented - but it is not efficient. It creates lots of individual textures, and does so at runtime, so all of the GetPixel()/SetPixel() and texture-generation slows things down during loading.
It works, it's a solution, but it's not the solution I'm hoping for.
(Thank you for the write up on that one, though)

And no worries, I should still be here when you return; thank you.

swift knot
# wanton blade That's basically the solution I started with, and currently have implemented - b...

Yeah, so you might want solution 2 or 3 than.

Solution 2. Use the Texture2D PackTextures function.

So funny thing Unity has a function that does most of the hard work for people in that case.
The PackTexture functions on completion returns an arrary of rects.

The pack texture function allows you to pass in an arrary of textures and what ever texture the function was called on will become a fusion of those textures.
So if you don't care about a lot of inidvidual control during set pixel and get pixel.

You can actual do that in one line of code.

Sprite SpriteOne;
Sprite SpriteTwo;

Texture2D FusedTexture;

public void FuseTextures()
{
  FusedTexture = new Texture2D(width,height);
  // PackTexture takes in an arrary of Texture2D, int for padding between the textures, int for max atlas size, and is new texture readable still.
  FusedTexture.PackTextures(new Texture2D[] { SpriteOne.texture, SpriteTwo.texture },1, 2048, false);
}
#

You can fuse the sprites together using this texture till it is as big as you want.
With this method you sample the texture using the sprite rect position and pull that sprite in a sprite render.

#

I should note you can pack previously fused texture into a new texture to keep everything as one simple texture.

wanton blade
swift knot
wanton blade
wanton blade
wanton blade
swift knot
#

Oh okay so you have one thing that starts off as a bigger whole puzzle sprite, and you want to cut the puzzle into pieces.
Is that correct.

wanton blade
#

Yawp. One starting image, cut into pieces.
My thought was to make a spritesheet - just like this. -- That was made using the editor-only sprite-sheet tools, that I pasted a line from earlier. Really neat... just... editor only x.x

#

Notably, I don't want to actually 'cut the image' - I want the image to remain in its original state. Just the sprites/mesh-material/whatever, the render of the pieces - they just use the one source image.
Much more efficient. (ie: Sprite Sheet) [or: MeshRenderer, 1 shared material, w/ individual offsets]

swift knot
#

My apologies, thought you mean started off with the smaller pieces and wanted to fuse the results into a bigger piece.
Okay, yeah that makes a lot more now.

Yeah, I wonder if SpriteDataAcessExtensions might be your friend than.
Let me see if it hasn't changed any real quick.

I haven't used that API in a while, so don't know if the split off the functions I am thinking of to it's own thing.
I think I heard the outline cut function was moved to a different extension script let me check real quick.

wanton blade
swift knot
#

I should note the sprite data access extension methods are run time usable like you want.

wanton blade
#

UnityEditor.U2D.Sprites.ISpriteOutlineDataProvider <<-- That's litterally under UnityEditor ?

swift knot
#

If you see the word provider it is mostly talking about the editor only features, but ones that don't say provider have some runtime functionality.

I know it stupid naming convention.

#

Let me look into if they moved it anywhere differently since last time I looked.

wanton blade
swift knot
#

They removed it in place of the SpriteDataOutlineProvider.....of course.

#

Oh wait I found the replacement process for this. Testing it out. and it is a lot simplier now by thelooks of it.

#

This is going to take a second to type up, but I tried it in Unity and it worked.

Was able to take a piece of a bigger sprite like the full puzzle you have and create a new smaller sprite that is just a piece of it.

wanton blade
#

Is it actually creating a sprite-sheet, though? Savable to a file? Loadable in a way that Unity will treat it as such, for good efficiency?

There's some approaches that can do it on the fly, but they all require building a mesh or sprite - instead of just using a sprite sheet. (Which is what I really want, since it's already efficient built-in by nature)

modest cargo
#

It might help for this to be a thread

swift knot
#

For the moment I am capturing the sprite as JSON data.
You can save the sprite any way honestly want to. JSON or as a binary file.

Due note there is a function in Unity to save or load binary or json into any object.

swift knot
wanton blade
swift knot
#

Sprite Puzzle Thread

#

You should be able to click inside this now to type in the thread.

bold remnant
#

btw @swift knot it seems like the Handles.DrawOutline wouldn't work since it only seems to accept renderers or game objects, and as far as I can tell it isn't possible to get a singular tile as a game object from a tilemap

swift knot
indigo star
#

Anyone ever tried to make sprites have some "Thickness" to them? Like the edges are rendered with some z-depth?

#

I feel like I've seen this done in games but can't find anyone talking about it

#

Something like this, although I'm not going for something quite so extreme

solemn latch
#

Other options would be voxel or raymarching, or using meshes instead of sprites.

indigo star
#

Hm, I'll try to look up ways to do that

#

With the multiple drawing method

shy onyx
#

How can I flatten the collider on my angled tiles?

#

I went and made "custom physics shapes" in the sprite editor but it didn't seem to actually change the collider

indigo star
#

Most references to it I can find seem to be hair-rendering tutorials and not necessarily applicable

solemn latch
#

Well, that is the most common use of the technique these days

#

And for a texture based approach you'd probably want to look up parallax mapping for the underlying process

indigo star
#

I'll check these out, thanks!

shy onyx
modest cargo
naive basalt
#

what software (preferably browser) is recommended to draw tiles for my tilemap? im lookign to create some natural tiles e.g. water, grass, ice

modest cargo
mystic nacelle
#

Hey! I've noticed in our project that after upgrading to unity version 2023.2.8f from 2022.3.10, we started encountering a significant degredation in performance from our 2d sprite animation. From profiling we have found the culprit, which is the sprite deformation caused by using IK. Before, we had about 100 agents (with around 20 sprites rigged each) take a constant 5ms time to deform. However, after upgrading, the time has jumped up to anything between 50ms to 75ms, depending on hardware. This all comes from the exact same operations that previously only took 5ms. We have tried to combat this via multiple optimization techniques, ranging from toggling simple things like culling of deformation to more hacky solutions like editing the library itself to spread the deformations out over multiple frames. Has anyone encountered a similar issue? We also tried to downgrade the 2d animation package back to the original version, however the newer unity version doesn't support this and requires us using the newer package.

modest cargo
limpid marsh
#

any suggestion for a good 2d illustrating program? (for 2d art, sprites, maybe even animating) - free/paid, I would like to be able to choose

swift scaffold
#

Hey there, where can I ask a question about Particle Effects?

sinful grail
swift scaffold
#

thx

#

So I want to have some Ambient particles. They are slowly falling, but I would like them to something like ping-pong randomly a little on the x axis, so that they really seem to be moving. What setting do I use for that?

#

Also, is there a way to spawn a particle effect mirrored on one axis?

swift scaffold
fleet oracle
#

it worked for my game so you could try that out

shy onyx
#

you are right, I should have also shared this image

fleet oracle
#

yes see the collider is curvy you want it flat right?

shy onyx
#

I don't see any relevant settings

fleet oracle
#

wait a bit

shy onyx
#

Ok

fleet oracle
#

try changing

#

vertex distance

#

reduce it

shy onyx
#

Hmm. It won't let me set it any lower than it is. But I can see that increasing it changes the mesh.

fleet oracle
#

i see does it meet your expectations

#

send screenshot btw

shy onyx
#

that seems to have worked, lemme check in-game

fleet oracle
#

change it to 0.45 for complete blocky shape

#

i see

shy onyx
#

if I set it too high the collider on the sloped tiles disappears entirely

#

also I just now noticed that janky bit that sticks out way too high lmao

fleet oracle
#

cause of low vertex count

shy onyx
#

I mean I saw that on the orange outline but not on the sprite

#

hmm, problem, now the collider is messed up on the square tiles

fleet oracle
#

huh why is that

#

your tiles are 16x16?

#

send me a full ss

shy onyx
#

actually the sprites are 1028x1028 lmao my artist made them too big

fleet oracle
#

i see was this happening before changing settings or after

shy onyx
#

the offset thing with the square tiles wasn't happening before I changed vertex distance

shy onyx
fleet oracle
#

from where it starts to where it ends

shy onyx
#

oh interesting

#

so it starts lined up

#

the rest of the square tiles seem to fit fine

fleet oracle
#

its cause of the low vertex count

#

as you can see

#

it slowly gets tilted towards the top

#

since the connection points of the paths are low on count it will be weird on some places

shy onyx
#

How can I address this?

#

nevermind, I set the value to the right balance and was able to get rid of both problems ๐Ÿ™

shy onyx
#

in my art tool these sprites are exactly 2048x2048

#

but when I import them, in the sprite editor they get aliased

solemn latch
shy onyx
#

Where would I find my texture max size

past hatch
#

why the default sprite is taking place where it shouldn't.....anyone know about this need some help on rule tiles

solemn latch
solemn latch
swift knot
shy onyx
solemn latch
shy onyx
#

4097x6146

solemn latch
shy onyx
#

Oh, 16x is 4k by 4k not 16k by 16k. That totally makes sense lmao

#

Hmm. Ok. Now, how do I change the source image for my tileset without having to repaint my whole map

solemn latch
#

Hah, well, that I can't help with; not much clue about tilemap.

potent belfry
#

when im using a tilemap collider, it seems like my character is getting stuck on the edges of walls when im jumping into them

modest cargo
potent belfry
#

when i use a composite collider, as soon as my character comes in contact with the timemap it all falls down as if its affected by gravity

modest cargo
#

It's also an option to use a capsule collider for your character instead of / in addition to the box collider

modest cargo
potent belfry
#

oh so im not meant to have a rigidbody component?

potent belfry
#

am i meant to delete the collider then the rigidbody?

modest cargo
# potent belfry

Ah, that's a weird detail I forgot about
It should work as we want if you set the rigidbody type to static

potent belfry
#

still the same problem

#

well the whole timemap doesnt fall anymore

#

but it still catches on the edge of a tile when jumping

modest cargo
# potent belfry but it still catches on the edge of a tile when jumping

I'm fairly sure it should work
Note that the composite collider should be on the same gameobject as the tilemap collider
But if that fails you have the option of using a capsule or circle collider to smooth the sides of the character's collider just enough to prevent the sharp edge from latching on

potent belfry
#

my character collider is already a circle and a box, the box having a slippery material with 0 friction, and ive checked that the box collider is inside the circle collider, so it doesnt stick out

modest cargo
solemn latch
#

Or the physics shapes of the tile could be too weird for the composite to smooth out

potent belfry
#

im getting these errors but it still works. can i just ignore them?

solemn latch
potent belfry
solemn latch
#

Then you probably have some useless code you can remove.

potent belfry
#

if that makes sense

solemn latch
#

So why have it in your code?

molten sail
#

is there any reason why the sprites arent going dark when theyre outside of lighting

#

this is the only light in the scene so idk whats happening

#

the sprites all have a material with sprite lit default

#

and im using urp idk if that changes anything

#

it worked before i switched to urp

solemn latch
#

Isn't sprite lit default the shader for 3d lighting?

modest cargo
molten sail
#

ohh thats probably my problem then

#

im using 3d lighting

potent belfry
#

i have a tile map to create ground walls and ceiling for my 2d platformer. my character controller involves a floor check to see if it can jump, so that it doesnt jump just in the air, but since the whole tile map is together, it means that the character can jump when its touching a wall, making it scale all the way up. whats the easiest way to change this? making a new tile palette?

solemn latch
potent belfry
solemn latch
#

You haven't said how you are handling ground checks, so not specifically.

potent belfry
#

i just realised that it didnt save my tilemap layer, so now ive changed it and its just a tilemap layer

solemn latch
#

Ok, which tells me nothing. Is it a collider? Raycasts?

potent belfry
#

the character is a circle collider and a box collider for the tilemap im using a tilemap and composite colliders

modest cargo
#

that also tells us nothing about how the script detects groundedness

#

You will have to understand the script to be able to modify it

potent belfry
modest cargo
#

You can probably adjust the m_GroundCheck position and k_GroundedRadius to ensure it's below the character, not to the sides

potent belfry
#

i have a game object ground check and its directly underneath

modest cargo
#

The radius relative to character's collider's width is not apparent here

potent belfry
#

uh dumb it down pls?

modest cargo
#

Your groundcheck might be wider than your character

#

But we cannot see that

potent belfry
#

how do i make sure that it isnt

modest cargo
potent belfry
#

how do i edit a circle collider so it shrinks uniformly around the centre?

#

or can i not do that?

modest cargo
potent belfry
#

i think i fucked something now because hes moving really fast

modest cargo
hollow panther
#

I'm working on a tetris game and I need to change the pivot mode of my L block for it to work properly, but when I do that only the collision moves and the sprite doesn't. Does anyone know what I can do to get the sprite where the collision is.

hollow panther
#

Nevermind

#

I ended up fixing it

#

Just needed to click "Reset" on my polygon collider

hybrid hornet
#

Hey guys!

I'm making a 2D game with a tilemap system where some tiles are terrain, some are interactable, some are quest triggers (which are a type of interactable), and etc.

Now if I wrote this game from scratch, this would be very easy. I would just make a class hierarchy of tile-types and have the game check which tile the player "touched" and respond accordingly.

However with Unity's system, this does not seem possible (unless it is?). For example, I made a tilemap with the tag "terrain" and that seems to imply that any tile from that map will follow "terrain" logic. Which then implies that I need a whole new tilemap for EVERY new tile type. Is that the case?

Does that also mean I can't implement a class hierarchy of them, where some tiles inherit from others? Honestly feels very suboptimal, I'm heavily considered discarding their system and writing it from scratch. But I'm very much willing to learn if I'm missing something!

modest cargo
hybrid hornet
#

I can't find any and the website has very minimal documentation on it

spring idol
#

I'm trying to render a very large crowd of sprites.

#

I'd like for each person in the crowd to be subtly moving around, even if they aren't actually walking somewhere

#

Currently, I just have a huge pile of SpriteRenderers, each of which is drawing a sprite that depicts a few people (with a shader that makes them wiggle a bit)

#

But the shader is proving difficult (it uses voronoi cells to offset the UVs, and I can only wiggle them so far before weird artifacts appear)

#

I'm wondering if there's a better way to just draw a huge pile of sprites at specific positions and rotations

#

Particles come to mind, but I need to be able to actively move the people around

#

big clumps are attached to rigidbodies

modest cargo
#

But it's a bit unclear how specific the "active motion" needs to be
I Particle System isn't adequate, VFX Graph can do basically anything

spring idol
#

Also, I'm targeting WebGL, so I can't use the VFX graph ):

#

I'd need to set the position of a bunch of particles every frame.

#

I see that you can just get an array of particles out and modify their positions

spring idol
#

the crowd is moving around, simulated with rigidbodies

#

so if I was using particles, I'd need to make sure that each particle followed its rigidbody around

potent belfry
#

how do i "scale from centre" brackeys somehow does it holding down alt but it doesnt do anything for me

modest cargo
spring idol
#

so each one is a whole blob of people

modest cargo
spring idol
#

I guess it's an inconvenient middle-ground where I don't want to have an entire particle system for each group of people

modest cargo
#

Don't want to?

spring idol
#

because the entire premise here was to just draw all of the sprites in one go, rather than having a bunch of renderers

modest cargo
spring idol
#

Right. And there would be one particle system per group of people.

#

Which isn't one renderer; it's many

modest cargo
#

One particle system per ridigbody sounds reasonable to me

spring idol
#

yeah, I probably just need to go and profile the dang thing

modest cargo
#

Indeed

spring idol
#

I wound up just sticking with sprite renderers for now because my performance was great -- and, as you noted, the rigidbodies are more costly right now

modest cargo
#

Quite so

#

Significantly more

spring idol
modest cargo
#

Sprite renderers (which are batched automatically) vs multiple small particle systems vs a large particle system with a loop overriding particle positions

spring idol
#

I was seeing if I could do GPU instancing on the sprite renderers. I was getting weirdly inconsistent results

#

Some frames would have just a few draw calls and some would be drawing each sprite individually in the Frame Debugger

modest cargo
#

Sprites use some type of dynamic batching I think

solemn latch
#

Or just heightmap if there are no obstacles.

hybrid hornet
#

@civic knot Like right now, the way it works is, you build the tilemap in Unity and then you use code from collisions to detect which tile you hit

#

this is so backwards to me

#

what I wish I could do is, setup a class hierarchy of tile definitions, make an array of tile objects and then render that array

#

but unity does not seem to be setup that way at all

civic knot
#

Which you're free to do.

hybrid hornet
#

I know but that seems to be the common theme with Unity, unless I just don't know how to do it.

I don't know how to separate UI logic from core logic

#

in this engine I mean

civic knot
#

Where did the UI come from again? How is it related to tilemaps?

hybrid hornet
#

and I commend the tool for that, it worked out great

#

But the issue is, how do I create abstract definitions for tiles that the UI/Scene can use?

lethal niche
#

Best way to think about UI separation is your tool should still be usable and functional without the use of the UI

hybrid hornet
#

and have Unity's tilemap only render it

civic knot
hybrid hornet
#

private void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.CompareTag("Tilemap")) { Vector3Int tilePosition = collision.gameObject.GetComponent<Tilemap>().WorldToCell(collision.contacts[0].point); Debug.Log("Player collision with tilemap at : " + tilePosition); Debug.Log(collision.gameObject.GetComponent<Tilemap>().GetTile(tilePosition).name); } }

Okay so this is what code I have so far. This code can tell me which tile I collided with

#

But this means that the definitions for each different tile are going to be essentially goverened by sprite names

#

hence no abstract class definitions possible

#

(the reason I want abstract class definitions is because unity is not the only UI in this project, I'm also doing mobile and web non-unity based)

#

(and they all rely on the same definitions)

civic knot
#

So it's totally possible to do abstraction.

#

In fact, it even has implicit cast, so you should be able to get a tile of the right class.

hybrid hornet
#

Oh? Can I ask you to elaborate on that? Like if I had a class ExampleSpecificTile

civic knot
#
ExampleSpecificTile myTile = tilemap.GetTile(pos);
hybrid hornet
#

That would work but would force the ExampleSpecficTile to derive from BaseTile which isnโ€™t bad but essentially means I have to only use these tile definitions within unity

#

Like another project which might rely on the same definitions could not use them anymore because basetile does not exist there

#

I think you might be right, I may need to simply abandon the built in system

hybrid hornet
#

Both projects use the same core game logic

civic knot
#

Well, you can use conditional compilation for example.

#

Unity relies on the tiles to be of a type it recognizes as they're used for internal logic. It's the same as if you say that you want unity physics without actually using Rigidbody and Colliders.

#
#if Unity
public abstract class CustomTileBase : UnityTileBase
#else
public abstract class CustomTileBase : OtherEngineTileBase
#endif
{}
hybrid hornet
#

like if it's on a server

#

Is it the conditional compilation?

pliant hearth
#

Usually in that case Unity just acts as a complicated view? No?

#

Receiving visual updates from the backend.

hybrid hornet
#

here it seems even when I make an abstract class, it still needs to derive from some unity definition

pliant hearth
# hybrid hornet Ideally but I don't know how to make that work

I don't know the specifics of what you're doing, but If you want to separate your business logic from Unity completely so it can be "easily" ported to other platforms or ran on a server or whatever, then you're going to need to define your own tile logic/system in a pure C# land.

civic knot
pliant hearth
#

And then when updates happen in the business logic, events/updates are sent to the Unity view.

#

And likewise, Unity's systems/callbacks will send messages to the business logic related to what the user does.

civic knot
#

And need to sync it to the client?

hybrid hornet
pliant hearth
#

And some type of communication layer to handle messages between the two.

civic knot
pliant hearth
#

Yep

civic knot
#

When you deserialize a message from the server, generate a proper unity tile

pliant hearth
#

You'll likely need to ID the shit out of everything btw.

hybrid hornet
#

Oooh wait, I like that idea!

#

Wait so like, the server will provide some class, for example, TerrainTile

#

and then

civic knot
#

I mean, it's not like you have too many options when you use separate engines for backend frontentd.

hybrid hornet
#

the unity/client will make a UnityTerrainTile which derives from TileBase

pliant hearth
#

Can you give an example of a tile?

#

Like what are we doing >_>

#

With these tiles.

hybrid hornet
#

then I guess what happens is, on the client side, it's cast to a Unity tile type like TileBase as @civic knot mentioned

pliant hearth
#

Is this a realtime game?

hybrid hornet
civic knot
#

It's called deserialization and is a critical part of implementing networking.

#

Basically, it has nothing to do with class hierarchies, inheritance, abstract classes, etc at this point.

pliant hearth
#

You literally send raw bytes at the client, and deserialize that into whatever you want.

#

Usually in the form of "Messages".

hybrid hornet
pliant hearth
#

For example if you wanted to change a tile to from Terrain to something like Desert, you might send a "TileChangeMessage", which contains the ID for the tile you want to change, and a string that contains the name of the type of tile we're swapping to.

pliant hearth
#

Yes obviously it's ideal to do so.

#

But it's hard.

#

And time consuming.

#

And are you really going to swap to Unreal half way through development?

#

Probably not.

#

Obviously you should separate code along domains all the time.

#

UI should be UI.

#

Logic should be logic.

civic knot
pliant hearth
#

Turn based games are much easier to do a full separation than real time.

civic knot
#

To make it clear, your implementation depends on unity tilemaps, since you want it to render them. When you have a hard dependency like that, you can't make your implementation entirely independent.

#

The best you could do is abstract it as much as possible and use conditional compilation for parts that are impossible to separate.

pliant hearth
#

What is this game anyway?

hybrid hornet
pliant hearth
#

Well... more than 1 layer deep.

pliant hearth
#

Don't Starve?

#

Is this your first game?

hybrid hornet
#

in the past when I make a game

#

I write the entire class logic and then I write a separate rendering system to draw it

#

I'm not used to an engine linking them so closely

pliant hearth
#

Well when you did this before, how does your business logic tell your visuals to draw things?

hybrid hornet
pliant hearth
#

Well I mean Unity basically does that too.

#

You tell your visuals what to look like and then Unity renders all that at the end of the frame.

#

Ish

civic knot
#

When you write your own implementation, your rendering is dependent on your tilemaps logic and hierarchy. If you suddenly swap the tilemaps API, I bet your project would break as well. Since unity doesn't know what the tilemaps logic might be, it provides a basic interface(base class actually) for your logic that needs to meet the minimum standards of their API.

pliant hearth
#

I mean you could do something where you define your own Interface for controlling the tiles, and then make an implementation of the Tiles that has that interfaces and extends from Unity's tiles.

#

Then just toss those objects into your system and boom?

#

But idk

hybrid hornet
#

that unity can work with

pliant hearth
#

Alright. I just hope you know when we say convert we don't mean cast.

hybrid hornet
#

if (collideWithTile){ if tile.name == "terrain_0": // create the pure C# object and use its properties

#

(pseudocode)

hybrid hornet
#

if (collideWithTile): if (GetTile().tile.name == "terrain_0"): TerrainTile mytile = new TerrainTile(); myTile.doLogic();

#

again, pseudocode sorry

#

but basically that

civic knot
#

Why do you need to do the logic on your custom tile on the client side?

hybrid hornet
civic knot
#

The only case where I'd have it(if at all) is to represent the server data before converting it to clients side representation.

civic knot
#

Classes extending TileBase

hybrid hornet
#

the core game logic is its own project so that multiple UI

#

can use it

civic knot
civic knot
hybrid hornet
#

what is the general standard way of defining tile logic

civic knot
#

There are no standard ways. But it's logical to extend whatever your engine requires of you and provide different implementations for different engines via conditional compilation. I feel like I've been saying the same thing over and over again for an hour now...

#

You can hide the conditional stuff in your own base class such that none of your logic beyond it depends on the specific platform.

#

That's how multiplatform stuff is usually implemented.

pliant hearth
# hybrid hornet Now I'm just curious, how is this normally done? Putting aside UI-logic separati...

Speaking from my own experience with an online turn-based CCG.

  • All business logic is ran on the server.
  • Client is dumb and is just a puppet for the server.
  • Business logic is set up in a way where it generates "events" that represent changes to the state.
  • Events are sent to the client.
  • Client interprets these events and, using data packaged in the event, updates the view.
  • Player actions on the client generates events that're sent to the server.
  • Server validates player actions and then changes the state.
#

Both the client and server have these communication layers that handle the incoming and outgoing of messages.

#

The view in the client and the logic on the server literally know nothing of eachother and can run separately.

#

Don't think this simplified set up works all that great for real time games though.

#

A player is fine with waiting a bit (like around a second) before seeing changes, and you can hide delays by queuing up animations and a bunch of other tricks.

#

I'm just unfamiliar with techniques for real time games.

hybrid hornet
#

@civic knot @pliant hearth you two have helped me so much!

I think what I'm going to do is go with the flow of Unity for now and implement it how it works best and then worry about separation when it comes up instead of trying to force it right now

#

Out of curiosity, do you guys worry about separation that much in your own games?

#

If not, why not? (just curious)

civic knot
#

No, because it's a pain in the ass. Unity supports all the required platforms, so you can use it for all the builds. The only case I think justifies any separation is when you plan to change engines, which in itself is not always the wisest idea.

#

But regardless, I usually limit dependencies on the engine wherever possible, so if it's gonna come to it, it would be relatively easy to refactor it to work on a different backend.

pliant hearth
#

The most I do really is write some "Wrapper" classes.

#

Like my NPC task scheduler needs to update every frame? Sure make a wrapper Monobehaviour that calls the scheduler's tick method in the Monobehaviour update.

#

I end up with a lot of monobehaviours whose sole job is just to bind some shit together.

#

But ya like dlich said it's though and kind of not in an indie dev's time budget.

#

This is the type of rabbit hole that can consume dozens of hours.

civic knot
#

Even with AAA games, changing engines is a highly complicated thing and often ends up in introducing a lot of bugs.

real thicket
#

how would you get a tilemap in unity to act as a sprite mask as well?

tribal crag
#

I attempted to get rid of small gaps between my sprite-based tiles by placing them in a sprite atlas to add padding, but it hasn't worked. What am I doing wrong? The platform is a single large rigidbody filled with smaller sprites which are its visible tiles (the rigidbody itself is invisible).

finite harbor
#

what the hell does this mean

solemn latch
finite harbor
#

aight

upbeat edge
#

So I've got a ground tilemap that spawns trees at a 50% rate on grass. These trees will need to be chopped down by players for wood and therefore each tree needs to hold its own scripts for health, drops, and more...

What are some of the first things you'd do in order to reduce the weight of all these game objects? Do they even need to be game objects? Trying to think outside the box here because I'd like to have about 100 trees on screen at a time which might start to bog things down.

real thicket
upbeat edge
real thicket
upbeat edge
#

Oh right, but for the TreeHealth script -- that's correct, right?

real thicket
#

pretty much

#

what you can then do is expand that to say, ore deposits as well

upbeat edge
#

Nice, that is actually a super smart way to do it. I'll try it soon ๐Ÿ™‚

real thicket
#

do a switch case based upon the interacted tile's sprite or similar to find if you're chopping a tree or mining some ore, and award the player the appropriate resource

low mural
#

how do I delete a sprite from a sprite sheet

abstract olive
#

You open it in an art program and remove it

#

Otherwise, just don't use it if it's in the sheet?

solemn latch
hardy dagger
#

how do i get a pixel perfect camera effect on only some objects in my scene?

modest cargo
hardy dagger
#

is there another way to get a similar effect?

modest cargo
#

How similar precisely?

hardy dagger
#

I want my player character, who points towards the mouse, to be on like a local pixel grid

#

so the pixels dont rotate

#

also im noticing that my pixels arent consistent

#

ill try to fix that first

#

guess i needed to use the pixel perfect camera anyway

modest cargo
hardy dagger
hardy dagger
modest cargo
rare edge
#

There is no real section to ask question about text or TMPro :/
When I migrated an asset from a temporary project to the main one, the icons (which are part of the text/"smileys") switched from being in front of the font to being behind (yes, the font is what draws this ribbon thing. It allowed me to make a nice effect that made the text very readable).
...Any idea of how I could configure TMPro to ensure the icons/smileys are in front of the font? Thanks

split leaf
#

hey y'all. i'm working on some pixel art for an astronaut themed game. can i get some opinions on a sprite i made?
for example, i'm unsure about the straight row of pixels as the back of the back leg

rare edge
covert wind
#

Can we display only the lines of the tilemap on the 'Game' tab?

noble mountain
modest cargo
noble mountain
#

Followed a guide by AdamCYounis on parallaxes for this. Don't really see what would cause the bug

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Parallax : MonoBehaviour
{
    public Camera cam;
    public Transform subject;
    Vector2 startPosition;
    float startZ;

    Vector2 travel => (Vector2)cam.transform.position - startPosition;

    float distanceFromSubject => transform.position.z - subject.position.z;
    float clippingPlane => (cam.transform.position.z + (distanceFromSubject > 0? cam.farClipPlane : cam.nearClipPlane));
    
    float parallaxFactor => MathF.Abs(distanceFromSubject) / clippingPlane;

    public void Start() {
        startPosition = transform.position;
        startZ = transform.position.z;
    }

    public void Update() {
        Vector2 newPos = startPosition + travel * parallaxFactor;
        transform.position = new Vector3(newPos.x, newPos.y, startZ);
    }

}
chilly shell
#

Hi I am trying to make a 2d game where i can launch stuff and the further you go the more money you get and the player is a water melon. does anyone know what to do?

sinful grail
chilly shell
#

ok

#

how do i make my own sprite in unity?

sinful grail
#

Then attach it to a sprite renderer

chilly shell
#

where do i draw it

#

what is a renderer

sinful grail
sinful grail
#

!learn

barren orbitBOT
#

:teacher: Unity Learn โ†—

Over 750 hours of free live and on-demand learning content for all levels of experience!

chilly shell
#

can you name a website @sinful grail

chilly shell
#

no to draw

sinful grail
#

I named two ๐Ÿ˜ธ

chilly shell
#

to draw : )

#

for unity

#

for unity

sinful grail
chilly shell
#

what do you use?

sinful grail
#

Hell, ms paint, or whatever comes with mac

chilly shell
#

ok

#

do you think i can work with this?

#

or do i make him not stear into your soul (he looks scary)

keen field
#

purchase aseprite

#

best $20 i ever spent. seriously. i am a proud aseprite shill.

viral nest
#

Isn't Aseprite free

#

On github

keen field
#

is it

#

i dont think so

viral nest
#

Not directly

#

I think it's u build the project for free

#

The direct built one is paid

keen field
#

well if you compile it yourself i suppose

#

that's an option

viral nest
#

Yeah

keen field
#

it's well worth the money imo

viral nest
#

I've been told

keen field
#

i'm literally on it right now

split leaf
#

aseprite was the first 2d art program i purchased and i have never looked back

still tendon
#

unity is messing up the colours on my pixel art sprite and i dont know why? what i did was press import asset, pick the png i just made, change pixels per unit to 16 and change filter mode to point no filter

torpid night
#

is it on a sprite atlas?

#

becauss for a game like this, you will want a sprite atlas

torpid night
#

the default is wrong for pixel art

still tendon
torpid night
#

i have never had to change the color format

#

that is one more dimension than 2D

coral torrent
#

yeah soz

still tendon
#

only change is from automattic to 32 bit colour

torpid night
#

there should be an option for compression, where you select no compression

#

i think it is hidden due to your current settings

#

i think it should be automatic format

#

this inspector is not set correctly. but it shows the compression option

#

which should be set to no compression

tribal crag
#

Why does this happen? I have this falling platform Rigidbody2D that is made up of individual sprites serving as the tiles. For some reason, in the editor, it appears to look normal. However, in the game view, these odd lines appear in between the sprites. How can I fix this, I've tried for so long...
(left is in editor, right is game view)

hollow blade
#

This probably happens because they are separate sprites and it has physics, i wouldnt know how you fix it but thats probably the reason

#

Maybe try using a tilemap

hollow blade
modest cargo
#

Pixel perfect camera component is the only surefire way to combat it

tribal crag
tribal crag
hollow blade
tribal crag
modest cargo
#

Doesn't have all the features but should carry you until you get the cash

modest cargo
#

It's enough to ask on only one relevant channel at a time

flint sigil
#

Is there a way to change where the center of my pixel art is?

solemn latch
#

If so, you can set the pivot in the sprite editor.

#

(Otherwise, use either probuilder or your own script to set it.)

slow vapor
#

Can someone help me out with sprite masks i need to know ifs theres a way to know if a sprite is being partially masked out

solemn latch
slow vapor
#

like if the sprite is or isnt being mask at all

solemn latch
#

Can you just use a collider or an AABB test?

slow vapor
#

whats a AABB test

#

i honestly might just be trying to do this the most complicated way possible

#

theres probably an easier way to do what i want to do

solemn latch
#

Almost certainly

slow vapor
#

yeah im just gonna do it a different way

solemn latch
#

It is a very cheap way to tell if two rectangles are intersecting, assuming no rotation.

modest cargo
slow vapor
odd wraith
#

anyone know how i can make a rule tile like this

#

and not this ๐Ÿ˜ญ

low osprey
odd wraith
#

i kinda fixed it but how do i make it have random pieces in the middle

#

if thats possible

odd wraith
#

^^ nvm

gray loom
#

Hi, also on the topic of tilemaps and rules... I'm a little bit confused why the rule tile isn't applying to the tiles in the scene but in the little preview they appear to be working?

I have the red and blue ones configured but theyre just... not working in the scene

gray loom
#

Got it figured out. Apparently I missed a step somewhere along the way that said you have to drag the Rule Tile asset onto the Tile Palette editor...

silver cliff
#

i have this cube i want to rotate normally, but whenever it spins it gets distorted like this. any ideas how i can fix this?

modest cargo
patent sparrow
#

does anyone have a good free or cheap 2d asset pack. Just trying to learn to animate them and create a little scene

spice geyser
#

I want to put in unity a custom cursor wich is a pixel art but is blurry. I have no commpresion and no filter but is still blurry.

vernal zenith
#

I made a 3d unity project, but I wanted to create a 2d scene. Why is there no option to create a sprite?

solemn latch
#

Because you ALWAYS need to check a build to see how the custom cursor looks.

modest cargo
#

In modern versions of the editor the package manager groups typical 2D packages under the 2D "feature"

lunar scaffold
#

when importing aseprite, is it normal that the pixel art in an animation gets weird?

#

left is ingame right is aseprite

#

it changes when going from the scene to the game too

#

while in unity

solemn latch
#

And/or when using pixel art without either a smooth pixel shader or a pixel perfect camera.

#

I'd say the latter seems to be the issue here.

sullen copper
#

traditionally, what method is used for making props such as plants and flowers interact with the player when they walk on them. I don't think this is achievable by a tilemap.., so I guess do I just copy all the interactable plants I need into several different game objects for each map area?

#

Or is there a better way?

sullen copper
#

Where it moves

modest cargo
# sullen copper like brushing against it

You'll likely want those as gameobjects, which can be associated to tiles of a tilemap
Tilemap Extras package gives you the "gameobject brush" to streamline the process

sullen copper
#

Thanks!

solemn latch
#

If you only want visible interaction.

#

I suppose it really depends on the specifics.

modest cargo
#

Shaders work too but they're generally a bit trickier to make

lunar scaffold
#

idk if i need to set something up tho

#

when scale is set to 5 it makes sprite bad but 6 works lmao

#

id like to know if theres a better solution tho

#

does the scale have to be a multiple of 2?

modest cargo
#

@lunar scaffold Sprite pixels get stretched or squashed if their scale or position does not perfectly match the pixel grid of the camera
This is a fundamental fact of rendering to a limited number of pixels on a computer monitor

lunar scaffold
#

i see

#

thanks :)

modest cargo
#

Pixel perfect camera matches the scale and position correctly for you, so you won't be tweaking those variables forever

#

Or a texture antialiasing shader alternatively, as pinballkitty suggests

#

Which smudges the edges of the pixels that don't fit the grid rather than squasing and stretching them

solemn latch
#

Not smudges. Supersamples.

#

Effectively, the shader makes it as if you actually increased the texture size(making each pixel into a block of pixels) and then used normal texture filtering.

#

Actually increasing the texture size would work, too, but that is a pretty annoying workflow. And it greatly increases file size, memory, etc.

modest cargo
# solemn latch Not smudges. Supersamples.

In the situation where the sprite pixel falls between screen pixels supersampling does smudge it between them
Perceptually that usually makes it clearer, though not sharper

solemn latch
#

That feels a lot like calling anti-aliasing 'blurring' ๐Ÿ˜›

narrow olive
#

Hopefully, this is the right place to ask (apologies if not).

In the attached video I'm getting some pretty strange glitching with my tile map background. I'm not entirely sure what's going on as the tilemap itself doesn't move.
It looks like some render error -- I'm using URP & cinemachine

lunar scaffold
#

i thought id have to put them all in the same order in layer but thats not it

#

:(

narrow olive
# lunar scaffold How do i fix this (I want the player sprite to go behind the statue when actuall...

Break it down conceptually:

If everything is on the same layer (ie. all on a background layer) then what matters is no longer the layer, but your sorting order/order in layer.

For example, if both your trees and ground tiles are on a background layer, you'd want the ground to have an order in layer of 0, as you always want to show that last. The trees would then be 1 or 2, something like that.

If your player character is on a layer of 3, it will always display in front of either of the aforementioned elements. You'd likely need to splice the sprites in half so that the top half of the statue is on a different layer than the bottom half. This is how I recall it being done in the past but I could be wrong

#

also worth noting if your objects have the same sorting layer the lowest one in your hierarchy will show on top.

pulsar chasm
#

I need to add the pose detector inside Canvas in my scenes how?

pulsar chasm
#

Hahah sorry for the wrong explanation.....I want to add the Pose Detector using capsule hands into my 2D Scenes how shall i perform this?

jolly narwhal
#

What is "the pose detector"? It's not something that Unity has built in

solemn latch
pulsar chasm
#

Using a Leap Motion device I am capturing sign languages in Unity using a package. This package offers pose recordings and pose detection, so I have already recorded some poses. Now I need to bring this to the 2D UI inside my scenes. I need a C# script for this.

jolly narwhal
#

It's impossible to say without knowing what package you're using. But the chances of someone here knowing that package and how to do what you want are pretty slim

pulsar chasm
#

I imported these files inside my Unity project to get the Pose detection and Pose Recorder

violet agate
#

why does unity add this brown layer on my sprite?

#

its transparent

#

i dont want it

#

just somehow fixed it

modest cargo
meager belfry
#

Hey, does anyone know what causes those black additional lines to appear on some elements in TilemapCollider2D? It seems like everything is cut properly in Custom Physics Shape in Sprite Editor, at least judging by those green lines, but on those black ones, the character sometimes struggles to pass through and occasionally gets stuck strangely

warm pawn
#

do i need photoshop to make sprite sheets

modest cargo
warm pawn
#

okay thanks!

spice geyser
#

i can t see particles in game

#

the project is 2d

spice geyser
#

can somone help me?

solemn latch
spice geyser
#

thanks

swift knot
#

Need some feedback on colors and width of outlines. Working on a non-official community package update for Sprite Editor that allows for selecting multiple sprites and editing multiple sprite values at once.

In this picture I have a set of red rectangles that show previously multi selected sprites and a green rect showing the most recent highlighted sprite. I am looking for thoughts on default colors and width of the outlines to make it easier to see, but also making sure they don't make it hard to see the sprites selected.
I am thinking of making the outline a bit bigger and add the ability to change colors in Unity preferences. Does anyone have any suggestions for how they would like to be able to see whihc sprites are multi selected in the Sprite Editor.

modest cargo
swift knot
# modest cargo Unity tends to use blue and green for outlines, and red only when there's a prob...

So there is a hot key to switch the UI between single sprite value editing or multi sprite editing.
The last sprite selected will have a different color to show when editing in single sprite editing mode what sprite is currently being edited.

When switching back and before between single and multi edit mode you don't lose context of the previously group of sprites. This allows for editing a certain value on a single sprite without having to reselect the previously grouped sprites.

Example of this you have sprites with the same width neding the same x value for a pivot point, but one sprite is two tiles high so you might want to edit that sprites y value seperately without having to lose the other selected sprites context.

modest cargo
swift knot
#

Going to try the bright blue and dark orange real quick. Didn't even think of an orange color outline so curious to see how it looks.

modest cargo
swift knot
#

Going to go through this and see if I can find the color value to add to the Sprite Editor.
https://www.foundations.unity.com/fundamentals/color-palette

A color palette is a combination of colors used by UI designers when creating interfaces in the Editor. A color palette forms the visual foundation of the user experience, helps maintain consistency, and helps users better navigate the user interface.

solemn latch
swift knot
pulsar chasm
#

So this is done in Unity. Using leap motion, I can show my capsule hands, but the problem is that when I show my right hand, the left hand appears on the screen, and when I show my left hand, the right hand appears on the screen.

solemn latch
#

Rename your left and right hand to the correct ones? =p

#

And maybe check where the problem is; whether the input is reversed or if you are just triggering the wrong object.

tidal gazelle
#

Hello I desining a map, and would like to copy-paste chunks in the same tileset, is that possible?
I know I can move then, but copy paste I dont know how to do, right now when I try is duplicating my tilesets in the hierarchy tree, thats not what I desire

modest cargo
#

A palette can contain many premade structures

tidal gazelle
bleak flume
dull cradle
#

does anyone know of any good tutorials for creating tilemaps or environments (brand new to this, not sure of the correct terminology) for 2d games?

real bolt
solemn latch
#

Every time someone recommends a brackeys tutorial, a cute pixel art puppy dies.

wind ember
#

How do i draw text in the world? so not on the screen

sinful grail
#

It has two versions. World space and UI

solemn latch
#

You can also use the ui version of textmeshpro inside a wirld space ui, if you need other ui stuff with it.

real bolt
modest cargo
real bolt
solemn latch
#

He had one particular tutorial with millions of views that even when it came out was completely missing the script he says to use... at one point perps needing help with that one tutorial was like a third of the traffic in the 2d channel.

#

But generally speaking, he is attractive to brand-new users, who then learn incorrectly at the most formative stage and it takes a lot to recover from that.

spring idol
#

Do Tile Palettes actually have any effect on tilemaps, or are they just a convenient way to pick tiles?