Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411579 Posts in 69386 Topics- by 58445 Members - Latest Member: Mansreign

May 05, 2024, 05:13:11 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsMimix - Rediscover the lost art of Mimicry
Pages: 1 2 [3] 4 5
Print
Author Topic: Mimix - Rediscover the lost art of Mimicry  (Read 21918 times)
Spennerino
Level 1
*



View Profile
« Reply #40 on: June 07, 2016, 01:21:15 PM »

Hey, this looks cool. Nice graphics and an interesting game concept. So will it be like Kirby where getting hit loses your power, or do you keep it until later? Does it really matter which job you choose in terms of traversing the level (i.e. some jobs can jump higher than others, which is necessary for completing the game)?

Thanks! I need to play test it to make sure it is what is best for the game but the idea is to keep the power until you die with 3 hp max, rather than losing the power per hit. Not all enemies will have powers, only the human enemies do...so losing it every hit will make you spend top much time powerless.

The job does matter. You will be able to beat the game without any of the powers, but it will change what the second button does on the controller and may offer an additional passive element. The default class of mime will jump with A, but the B button will do nothing. The knight will have the same jump, but the B button will control a shield. The mage will have a short projectile...and so on. Any passive elements would just allow you access to secrets or make the level easier.

Looks great and I'm loving the pixel art! Following!

Thank you!

-Spencer
Logged

Twitter: @Spennerino TIG: Mimix

Spennerino
Level 1
*



View Profile
« Reply #41 on: July 03, 2016, 05:43:40 PM »

Mini Update: Tileset

My current progress replacing my programmer art grass tileset with something better.
Logged

Twitter: @Spennerino TIG: Mimix

crusty
Level 2
**



View Profile WWW
« Reply #42 on: July 03, 2016, 06:59:42 PM »

I love Chic Khan.  I love the subtitle MimicKing's Masquerade.  Any info on the game's story?

Also I would be so happy if you did a tutorial or deep dive on that pixel perfect render texture biz..  What is your base resolution?

I have a pretty high base resolution and I'm not sure how to scale it besides 2x w/ a lot of cropping and panning.  Is there some secret math I'm missing?
Logged

Caravan: devlog | website
Spennerino
Level 1
*



View Profile
« Reply #43 on: July 03, 2016, 07:41:23 PM »

I love Chic Khan.  I love the subtitle MimicKing's Masquerade.  Any info on the game's story?

Also I would be so happy if you did a tutorial or deep dive on that pixel perfect render texture biz..  What is your base resolution?

I have a pretty high base resolution and I'm not sure how to scale it besides 2x w/ a lot of cropping and panning.  Is there some secret math I'm missing?

Thank you! The story is still really in flux right now. I have a few ideas that I'm flip flopping on right now...probably won't nail it down until after I finish a demo. The just of it is that it'll revolve around collecting crystals in each level and taking down all the members of MimicKing's Kingdom. The 4 (co-op) mimes are all part of a traveling troupe of actors. Chic Khan was intended to be a tutorial / demo boss.

My base resolution is 640 by 360 which is 2x at 720p and 3x at 1080p so its a nice number for the most common resolutions. I was originally going to go with 480 by 270 but I needed more room to fit the co-op players on the same screen.




The render texture is set to the output size you want. I added a few extra pixels so that when i screen-shake it doesn't show black on the edges.



Then you put a quad on screen with a material of the render texture set up earlier. Set the layer to something unique for the one quad.



Then the output camera, not the camera that follows the players. Set the culling mask to see the layer of the render texture quad, the projection to ortho, and the Size to your resolution / 2. So...360 / 2 = 180. Make the camera a child of the texture so that 0,0,0 position centers it on the quad.

Below is the code for the two objects I wrote to control the whole thing. The screenshake render bonus and the Global singleton references would need to be removed for it to work.

Code:
public class ResolutionManager : MonoBehaviour
{
public Camera outputCamera;
public Camera nativeCamera;
public RenderTexture renderTexture;
public NativeRenderTextureController renderTextureManager;

[HideInInspector]
public Vector2 outputResolution;
[HideInInspector]
public Vector2 nativeResolution = new Vector2(640, 360);

//(if you change this setting run the game twice for it to take effect)
private Vector2 renderBonusDistance = new Vector2(Globals.tileSize, Globals.tileSize); //Additional render area for screen shake

[HideInInspector]
public float pixelScale;

[Header("Output Configuration")]
public Globals.PixelRenderMode renderMode;
public FilterMode filterMode;

void Awake()
{
Globals.Instance.resolutionManager = this;
renderTexture.width = (int)(nativeResolution.x + (renderBonusDistance.x * 2));
renderTexture.height = (int)(nativeResolution.y + (renderBonusDistance.y * 2));
}

void Update()
{
outputResolution = new Vector2(outputCamera.pixelWidth, outputCamera.pixelHeight);
renderTexture.filterMode = filterMode;

UpdatePixelScale();
UpdateCameraSize();
}

private void UpdateCameraSize()
{
outputCamera.orthographicSize = outputResolution.y / 2;
nativeCamera.orthographicSize = renderTexture.height / 2;
}

void UpdatePixelScale()
{
float width = outputResolution.x / nativeResolution.x;
float height = outputResolution.y / nativeResolution.y;

float scale;

if (renderMode == Globals.PixelRenderMode.PixelPerfect)
{
scale = (int)Mathf.Max(Mathf.Min((int)width, (int)height), 1);
}
else
{
scale = Mathf.Min(width, height);
}

pixelScale = scale;

renderTextureManager.UpdateScale(renderBonusDistance);
}
}

Code:
public class NativeRenderTextureController : MonoBehaviour
{
public void UpdateScale(Vector2 renderBonus)
{
if (Globals.Instance.resolutionManager.renderMode == Globals.PixelRenderMode.PixelPerfect)
{
transform.localScale = new Vector3(
((int)Globals.Instance.resolutionManager.pixelScale * Globals.Instance.resolutionManager.nativeResolution.x) + ((int)Globals.Instance.resolutionManager.pixelScale * renderBonus.x * 2),
((int)Globals.Instance.resolutionManager.pixelScale * Globals.Instance.resolutionManager.nativeResolution.y) + ((int)Globals.Instance.resolutionManager.pixelScale * renderBonus.y * 2),
1);
}
else if (Globals.Instance.resolutionManager.renderMode == Globals.PixelRenderMode.AspectStretch)
{
transform.localScale = new Vector3(
(Globals.Instance.resolutionManager.pixelScale * Globals.Instance.resolutionManager.nativeResolution.x) + (Globals.Instance.resolutionManager.pixelScale * renderBonus.x * 2),
(Globals.Instance.resolutionManager.pixelScale * Globals.Instance.resolutionManager.nativeResolution.y) + (Globals.Instance.resolutionManager.pixelScale * renderBonus.y * 2),
1);
}
else
{
float width = Globals.Instance.resolutionManager.outputResolution.x / Globals.Instance.resolutionManager.nativeResolution.x;
float height = Globals.Instance.resolutionManager.outputResolution.y / Globals.Instance.resolutionManager.nativeResolution.y;

transform.localScale = new Vector3(
Globals.Instance.resolutionManager.outputResolution.x + (width * renderBonus.x * 2),
Globals.Instance.resolutionManager.outputResolution.y + (height * renderBonus.x * 2),
1);
}
}
}

Enjoy! Let me know if you have any questions.

-Spencer
« Last Edit: July 03, 2016, 09:45:48 PM by Spennerino » Logged

Twitter: @Spennerino TIG: Mimix

crusty
Level 2
**



View Profile WWW
« Reply #44 on: July 03, 2016, 09:10:00 PM »

Enjoy! Let me know if you have any questions.

This is amazing!  Thanks a lot!  I think am going to have to shoot for that resolution as well.  Currently I'm at 960x540 (I looked up that 1440x1080 was the most common resolution) but there will be so much empty space when I extend the background to hit 1920x1080...

The last time I tried to tackle this I ended up doing some gross stuff at scene loading time trying to find/set up the camera in the newly loaded scene.  This is such a perfect solution for me since I can leave those scene cameras alone and just have them output to the render texture that I'll keep in my additive "master scene".

 Smiley Smiley Smiley
Logged

Caravan: devlog | website
Spennerino
Level 1
*



View Profile
« Reply #45 on: July 03, 2016, 09:44:24 PM »

This is amazing!  Thanks a lot!  I think am going to have to shoot for that resolution as well.  Currently I'm at 960x540 (I looked up that 1440x1080 was the most common resolution) but there will be so much empty space when I extend the background to hit 1920x1080...

The last time I tried to tackle this I ended up doing some gross stuff at scene loading time trying to find/set up the camera in the newly loaded scene.  This is such a perfect solution for me since I can leave those scene cameras alone and just have them output to the render texture that I'll keep in my additive "master scene".

 Smiley Smiley Smiley

The most common resolution might be different if you include mobile, im not sure, so keep that in mind. I am working based on the steam hardware survey where 36.5% of users have 1080p monitors...and although 720p isn't common for computers it is still really common for TV's. I want to make my game for steam and consoles which is why I focused on both of those. My code does work at any resolution though. I tried to design this solution in a way that allows the resolution to change on the fly at any point during gameplay without having to change the actual monitor resolution. I have never been a fan of the screen flashing black and then being forced to confirm the resolution change in other games.

I didn't want to work at anything higher than 640 by 360 because it will simply just be way too much work to make pretty backgrounds at anything higher than that resolution. Haha.

I really hope this solution works for you, please share your results with me.  Beer!

-Spencer
Logged

Twitter: @Spennerino TIG: Mimix

Spennerino
Level 1
*



View Profile
« Reply #46 on: July 04, 2016, 04:29:57 PM »

Question: Border, Alpha or Nothing?

Today I am playing around with the my new tiles to see if I need to, or how I can make collidable tiles more obvious to the player vs the background.

1. Black border on all collidable tile edges.


2. Make the background less pronounced by playing with the alpha channel. This definitely breaks the NES limitations and I am conflicted about doing that.


3. Do nothing. It's fine as it is.


I also played around with white / light colored borders and it looked horrible. Then I tried darker colors but it was hard to tell the difference between the dark colors and black when it is a single px thick line.

Please share your opinions!

-Spencer
Logged

Twitter: @Spennerino TIG: Mimix

crusty
Level 2
**



View Profile WWW
« Reply #47 on: July 04, 2016, 04:49:50 PM »

2. Make the background less pronounced by playing with the alpha channel. This definitely breaks the NES limitations and I am conflicted about doing that.

Is this the same as lowering saturation?  What exactly are NES limitations?  Were there hard limits on color values and resolution, or was it just limited by processing power?
Logged

Caravan: devlog | website
crusty
Level 2
**



View Profile WWW
« Reply #48 on: July 04, 2016, 05:00:58 PM »

just read this. pretty cool: http://www.gamasutra.com/blogs/DavidDAngelo/20140625/219383/Breaking_the_NES_for_Shovel_Knight.php
Logged

Caravan: devlog | website
Spennerino
Level 1
*



View Profile
« Reply #49 on: July 04, 2016, 05:11:28 PM »

2. Make the background less pronounced by playing with the alpha channel. This definitely breaks the NES limitations and I am conflicted about doing that.

Is this the same as lowering saturation?  What exactly are NES limitations?  Were there hard limits on color values and resolution, or was it just limited by processing power?

No, alpha and saturation are different. Alpha is how transparent the color is to the color behind it. Saturation is the amout of grey or vibrancy in the color.

The NES supported only an alpha of 0 and 255 and there is a limited color choice of an 64 colors. There are more limitations but i haven't been following them 100% strictly. They involve tile size and maximum amount of colors used per tile and max sprites on screen at once.


Yeah, I've read that before. Definitely a good read. I think generally they made the background elements use darker colors on the palette. But lots of their tiles use a light or darker color border as well.
Logged

Twitter: @Spennerino TIG: Mimix

Spennerino
Level 1
*



View Profile
« Reply #50 on: July 04, 2016, 07:48:11 PM »

Question: Border, Alpha or Nothing?

Update!
I moved the dirt tiles up on the ramp and it seems to have fixed the issues i was having with confusing them with the background.



Made another test image to see which angles i still needed to make.

Logged

Twitter: @Spennerino TIG: Mimix

Storsorgen
Level 2
**


View Profile
« Reply #51 on: July 07, 2016, 12:38:56 PM »

Oh man, that tree has such a great sense of volume! Beautiful stuff!
Logged
Spennerino
Level 1
*



View Profile
« Reply #52 on: July 07, 2016, 05:41:05 PM »

Oh man, that tree has such a great sense of volume! Beautiful stuff!

Thank you! I'm excited to make more art for the game.
Logged

Twitter: @Spennerino TIG: Mimix

Spennerino
Level 1
*



View Profile
« Reply #53 on: July 22, 2016, 08:03:25 AM »

Update 7: Mime Art

Trudi Castle made this fantastic character art of my Mime character for Mimix.


I plan to use it for both promotional purposes and i hope to translate it back into pixel art for use in game as well for character selection or other places in the Menu.

-Spencer
Logged

Twitter: @Spennerino TIG: Mimix

You Blister My Paint
Level 0
**



View Profile
« Reply #54 on: August 12, 2016, 11:06:07 AM »

Love the Mime art. That will grab a lot of eyeballs when you are promoting the game.
Logged

Spennerino
Level 1
*



View Profile
« Reply #55 on: August 12, 2016, 11:35:33 AM »

Love the Mime art. That will grab a lot of eyeballs when you are promoting the game.

Promotion was my original plan for the art when i got it made. Hopefully it works well for that purpose and i would love to be able to get the rest of the character classes drawn as well if i can find a way to afford it. I would especially love to have a big combined poster of all the characters together for release.

Thanks,


Spencer
Logged

Twitter: @Spennerino TIG: Mimix

Pixel Noise
Level 10
*****



View Profile WWW
« Reply #56 on: August 12, 2016, 02:13:15 PM »

I don't know how I'm just seeing this for the first time - but I was hooked from the first post. Seeing the progress you've been making is all the more exciting. I love the core gameplay mechanic of the Mimic, and I'll just heap my praises on top of everyone elses for the art, etc. Looking great!

Logged

Pixel Noise - professional composition/sound design studio.
 https://soundcloud.com/pixel-noise
 https://twitter.com/PixelNoiseMusic
 https://pixelnoisemusic.bandcamp.com/

Recently completed the ReallyGoodBattle OST!  https://www.youtube.com/watch?time_continue=2&v=vgf-4DjU5q
Spennerino
Level 1
*



View Profile
« Reply #57 on: August 12, 2016, 03:00:37 PM »

I don't know how I'm just seeing this for the first time - but I was hooked from the first post. Seeing the progress you've been making is all the more exciting. I love the core gameplay mechanic of the Mimic, and I'll just heap my praises on top of everyone elses for the art, etc. Looking great!



Oh wow! I don't know if I can live up to such high praise haha. Thank you! The first post didn't used to look as great as it does now as I've been editing it as I go. It's been a bit slow for me the past few months so that might have something to do with it being a pretty hidden project. I hope to keep impressing you with my future updates as well.

-Spencer
Logged

Twitter: @Spennerino TIG: Mimix

Spennerino
Level 1
*



View Profile
« Reply #58 on: August 14, 2016, 05:18:49 PM »

Update 8: WIP Background Art

I am resuming development this week and i am starting off by working on the first background art that will be seen for most or all of the levels during the demo. Only time will tell if I sink additional time on a second background for the demo.


This background is extremely WIP and I still haven't finished blocking out the colors but i felt like i needed to share something early anyways.

-Spencer
Logged

Twitter: @Spennerino TIG: Mimix

Spennerino
Level 1
*



View Profile
« Reply #59 on: August 19, 2016, 04:09:40 PM »

Update 9: Designing the First Level

This week i started on the mock-up for the first level of the game. The purpose of this level is to serve as a tutorial for the game. The level starts off with nothing going on so that you can play around with the movement. The first element introduced is a slope followed by the most basic enemy of the game, a chicken. Next you are forced to jump to proceed if you didn't already learn that from the chicken. Following that there are pitfalls and more enemies that ramp up in difficulty over time. Lastly you are introduced to how platform physics work before being introduces to two other enemy types.


To start out i will be making all of the levels without any art assets so that i can really focus on the design of them without any distractions. Below is a second pass where i made tried out a concept where the level is following along the path of a broken wall to explain all of the terrain and platforms.


Hopefully i will have a playable version of this level really soon to show off. There are just a few things left to do, for example i need to program the AI for the additional enemy types. Once i am happy with the design and it feels fun then i will do a proper art pass with new tiles.


Also i made this design for the Berserker class:


-Spencer
Logged

Twitter: @Spennerino TIG: Mimix

Pages: 1 2 [3] 4 5
Print
Jump to:  

Theme orange-lt created by panic