How to decide sprite size for isometric tile textures?

enter image description here

I want to draw isometric tiles with arbitrary tile sizes. For example above picture there are 1×1 and 3×2 sized tiles.

The textures have arbitrary height because of decoration. a is the tile’s height b is texture’s height c is tile’s width. I can’t figure out what the sprite size should be when I lay these out on screen.

Maybe I should have exact tile sizes cover the whole texture without decorations (a == b). But still what the sprite size should be?

Does a sprite familiar’s equipment count against its carrying capacity?

Under Lifting and Carrying (PHB 176) it says:

Your carrying capacity is your Strength score multiplied by 15. This is the weight (in pounds) that you can carry… You can push, drag, or lift a weight in pounds up to twice your carrying capacity (or 30 times your Strength score).

and also specifies that a tiny creature can carry half as much

A sprite familiar summoned through a warlock’s Pact of Chain feature has a strength score of 3 and so has a carrying capacity of 22.5 pounds and a push, drag, lift limit of 45 pounds. The sprite stat block also specifies, however, that they wear leather armor and carry a longsword and shortbow.

Supposedly these weigh 10 pounds, 3 pounds and 2 pounds respectively but considering they are smaller than those worn by a medium humanoid it is unlikely that they weigh as much.

Is there any official guidance as to how much the sprite familiar’s equipment counts against its carrying capacity?

What would be the most optimal way for a Pact of the Chain warlock to make use of a Sprite familiar?

I am playing an Archfey Warlock with the "Pact of the Chain" Pact Boon. For thematic reasons, I have chosen for my familiar to take the form of a sprite with the "fey" creature type.

The restriction I place on this question is that the above facts must remain true, these are fixed aspects that I do not want to change; hence any answer that states that the familiar should take another form, like an imp, are not valid answers to this question, regardless of how much more optimal that might be. In other words, this is not "how to optimise a Pact of the Chain warlock", but "how to optimise the use of the sprite as a Pact of the Chain warlock’s familiar".

Further restrictions are that I do not plan on multiclassing, so answers that require multiclassing are also not valid answers, and that I am limiting the range of levels in play to between 3 and 7, so answers that require me to be a higher level warlock are also not valid (although if an answer includes a "here’s what you can do at high levels too" section as an added extra, I won’t complain).

Given these restrictions, I want to get the best use out of my sprite familiar. Because of it’s tiny HP pool, so far I’ve just had it remain invisible and hide out of sight so that it doesn’t get shot and killed, since I’m still currently only level 3 and don’t really want to waste the resources resummoning it (later in the game, I assume this won’t be as much of a problem, but let’s assume that the familiar’s survivability is a concern of mine nonetheless, but not actually a hard restriction).

What are the best tactics to employ to make the sprite familiar as useful in combat as possible during late tier 1/early tier 2 play? I’m happy for people to suggest spells and invocations that the warlock themselves should pick in order to support the tactics that would enhance the sprite’s usefulness, but I don’t want this to turn into a question about optimising the warlock themselves; the focus should be on the sprite (in other words, assume the warlock is already optimised well enough for the purposes of this question).


Related Q&A: What can a familiar actually do? (except this question is about familiars generally, and the answers do not take into consideration the traits specific–if not unique–to a sprite, such as invisibility or potentially being able to poison an enemy or make it fall unconscious with the sprite’s shortbow attack)

Related Meta Q&A: Would this question about when it's better for a Pact of the Chain warlock to have their familiar attack be an on-topic bounded list question? (although no-one seemed to have an opinion either way, so I’ve gone ahead and asked it anyway; however, this meta Q&A can still be used as a platform to discuss the on-topic-ness of the question, should that become necessary)

Prevent sprite from rotating with camera

I am creating a small 2d game and looking for a way, to prevent certain sprites from rotating with the camera.

I could not find any settings that would allow me to do so, so my next best guess would be, to do that in a vertex shader. Since my knowledge on shaders and math is quite limited, I could not figure out a way to accomplish that, either by rotating it back after all default transformations are done or setting the skip_vertex_transform flag and transform the vertex without rotating it.

Another option would be, to manually set the angles for each object individually, but I feel like that would not be the cleanest option, since there can be quite a few sprites on the screen that would need frequent “counter rotating”.

How to enable the option “edit physics shape” in the Sprite Editor?

I can successfully import .png files, create tilesets, and use them in my tilemaps in Unity. Thanks to DMGregory, I just learned that there exists an option to customize the Tilemap Collider 2D in the Sprite Editor, which allows me to set a custom collider for every tile instead of going through them one by one.

The steps I follow while creating a tileset in Unity is as follows.

  1. Import the .png file.
  2. Open the Sprite Editor.
  3. Select the option Multiple for Sprite Mode.
  4. Select Slice from the Sprite Editor.

Then, I create a Tile Palette in a folder, drop and drag my created tiles, and start creating my level.

I have never encountered the option to modify the colliders tile by tile. What am I doing wrong?

Artifacts on top of platform sprite only when moving

I made a floating platform in Unity which has a propeller movement animation. I attached a script I wrote to the game object that adds slight vertical and horizontal movement using the game object transform.position. This is creating some weird artifacts at the top of the sprite, but only when the movement code is active. When I don’t move the platform and just leave it still to animate there are no artifacts.

Gameplay:

gif of gameplay

Sprite Import Settings:

sprite import settings

Sprite Renderer:

sprite renderer settings

Camera Settings:

camera settings

Resolution:

resolution settings

Sprite Distortion (Ghosting While Moving and Artifacts when Mirroring to External Display)

I am working on my first MonoGame project. I love the framework so far!

I have implemented my own letterbox/pillarboxing to scale my native resolution by the maximum integer scale allowable on my display. Basically, I determine the maximum integer scale, set my PreferredBackBuffer to the screen resolution, create a Viewport that is my native resolution * maximum scale, and then set my SpriteBatch to draw everything at Matrix.CreateScale(max_scale).

This works much better than rendering to a texture that has my native resolution and then scaling it up. (Scaling using a Matrix in SpriteBatch, as opposed to just rendering to a texture and then scaling it up, allows you to fake “subpixel rendering” to some extent).

That said, I am facing two issues.

  1. When my sprite moves, there is very subtle “ghosting” happening. The sprite is subtly blurry and there’s a faint ghostly trail behind it.

  2. When I mirror to an external monitor, there is less ghosting, but there is ugly artifacting on the outside of sprite when stationary. See below.

enter image description here

Rounding my player’s position to integers in the Draw() command doesn’t help for either problem.

Does anyone have any thoughts about how to fix these issues?

Here is my game class:

using System; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input;  namespace MyMonoGame {     public class MyGame : Game     {         // declare variables         GraphicsDeviceManager graphics;         SpriteBatch sprite_batch;          // resolution management         int native_width;         int native_height;         int screen_width;         int screen_height;         int max_scale;         int horizontal_margin;         int vertical_margin;          // objects         Player player;          public MyGame()         {             // create GraphicsDeviceManager instance             graphics = new GraphicsDeviceManager(this);             // specify root directory             Content.RootDirectory = "Content";         }          protected override void Initialize()         {             // set window title             this.Window.Title = "My Game";              // create SpriteBatch instance, which can be used to draw textures.             sprite_batch = new SpriteBatch(GraphicsDevice);              // initialize some variables             native_width = 160;             native_height = 144;              // resolution management             // get screen size             screen_width = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;             screen_height = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;             // get max_scale, the maximum integer scale that will fit on the screen             // note: must be integer to prevent pixel distortion             int width_divisor = (int) Math.Floor((float)screen_width/(float)native_width);             int height_divisor = (int) Math.Floor((float)screen_height/(float)native_height);             max_scale = Math.Min(width_divisor, height_divisor);             // get margins for letterboxing and pillarboxing             int max_width = native_width * max_scale;             int max_height = native_height * max_scale;             horizontal_margin = (int)((screen_width - max_width)/2f);             vertical_margin = (int)((screen_height - max_height)/2f);              // toggle fullscreen             graphics.PreferredBackBufferWidth = screen_width;             graphics.PreferredBackBufferHeight = screen_height;             graphics.ToggleFullScreen();             GraphicsDevice.Viewport = new Viewport(horizontal_margin, vertical_margin, native_width * max_scale, native_height * max_scale);             graphics.ApplyChanges();              // objects             player = new Player(this);         }          protected override void LoadContent()         {         }          protected override void UnloadContent()         {         }          protected override void Update(GameTime gameTime)         {             if (Keyboard.GetState().IsKeyDown(Keys.Escape))                 Exit();              // update objects             player.Update(gameTime);         }          protected override void Draw(GameTime gameTime)         {             // clear window & fill with solid color             GraphicsDevice.Clear(Color.DarkRed);              // draw objects             var transform_matrix = Matrix.CreateScale(max_scale);             sprite_batch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, transformMatrix: transform_matrix);             player.Draw(sprite_batch);             sprite_batch.End();         }     } } 

How to animate two or more unrelated properties on a sprite GameObject using animation layers?

I have a sprite in Unity 2019.3. It is animated like so (with provided mockups):

  • Its base animation is just one frame; i.e. it has the same Sprite whether idle or moving.
  • When the player is invincible, the ship flashes in and out. This is implemented by setting the alpha to 0 and 1 and back.
  • The player can acquire up to three levels of shields. The is implemented as a child GameObject with its own Sprite (but not its own Animator).
  • When a player acquires a power-up, they briefly flash colors. This can happen while they’re shielded, invincible, or both. This is implemented with a custom palette-swap shader, not by replacing the Sprite.

These animations are all independent of one another, and can all occur at any time. For example, when a shielded player takes a hit their shield downgrades but they also gain brief invincibility. It would look like this:

A single state machine to account for these possibilities (and others, depending on whether or not I add other power-ups or mechanics) would be prohibitively complex. So I’m going with animation layers.

I was hoping that it would be as simple as adding separate animation layers with their own state machines, then marking each layer as additive. Nope. I have no idea what I’m doing.

How can I use Mecanim to animate my sprite as I have previously described?

How do i draw sprite on fixture position?

b2BodyDef bd;     bd.position.Set(1700 / sfdd::SCALE, 150 / sfdd::SCALE);     bd.type = b2_dynamicBody;     b2PolygonShape squareShape;     squareShape.SetAsBox(70 / sfdd::SCALE, 13 / sfdd::SCALE);     m_body1 = m_world->CreateBody(&bd);     m_body1->CreateFixture(&squareShape, 100);     squareShape.SetAsBox(38 / sfdd::SCALE, 16 / sfdd::SCALE,b2Vec2(-54/sfdd::SCALE,-30/sfdd::SCALE),90*DEGTORAD);     m_body1->CreateFixture(&squareShape, 20);      squareShape.SetAsBox(30 / sfdd::SCALE, 10 / sfdd::SCALE, b2Vec2(60 / sfdd::SCALE, -20 / sfdd::SCALE), 90 * DEGTORAD);     m_body1->CreateFixture(&squareShape, 100);