I'm looking to make a game that looks similar to old PS1 games with their rough edges for the rendered models. I'm just starting with Unity, coming from Game Maker, and in Game Maker you could set the width and height of the game's viewport and then upscale it, doubling each pixel's scale, essentially incrementing the render view to achieve a "scaled look". I was wondering if there was a way to do this with Unity.
If anyone has any information on this, that'd be great!
I ended up finding a script to do it for me. After much searching, I found this snippet to that accomplishes what I'm looking for.
Related
There's a lot of code so I'm not going to put it here. I'm just wondering if anyone has had a similar issue to this and how they solved it.
I'm trying to create a 3d scene in C# using OpenGL and have got lighting working as well as basic primitive models and more complex models. But now I'm trying to texture the walls and I'm getting these weird lines running through the texture. Whenever I move the camera the lines change and glitch around but are always vertical lines.
I have noticed there is a sweetspot for the camera when looking directly at the wall and being at the right distance from it.
The sweetspot
Rotate left - lines appear
Camera at right angle but wrong distance - texture dissapears
I know it's not a lot to go off so I'm not expecting anyone to be able to tell me exactly what to do. I just want to know if anyone knows what these weird results could be. I'm thinking I may need to change some texture parameters but not sure which ones. Is there a clipping parameter or something? Any sort of guidance here would be appreciated
This looks a lot like z-fighting, which is caused by rendering two surfaces at the same depth. Numerical instability will cause some areas to be drawn over others in a changing pattern.
If you can find out which surfaces you're drawing twice and get rid of one of them, then this problem should go away.
So I've been searching everywhere for a tutorial on how to create this kind of effect INK the Game
But I can't seem to find anything helpful, I know I have to use render targets to draw the splatter over my map and some kind of shader to remove the splatter that is not overlapping the map. So if anyone would guide me in the right direction for this it would be really helpful since I'm a total beginner in shaders and render targets.
So I am making all my models is Blender and then exporting it to .fbx format using the File ->Export and then checking off XNA Strict Options. This works just great, except that when I put my model in XNA, it has been stretched along the up-down axis and it is always the same scale. No matter how much I scale it in Blender, it is always the same size in game. Any ideas? Also, I'm not sure if this is related, but if I have a model with multiple parts, it will only show one part of it. Any help is appreciated!
I am more familiar with 3ds max than blender, but if this was happening in max I would know what's going on so I'll say it in case Blender works in a similar fashion.
When you modify something in a 3d modeling app (like scaling the model on a particular axis), it does not actually change the positions of the vertices like you may think. It only creates a transform matrix that can be applied to the original vertex positions at render time to make it appear the way you expect.
So when you import the model into Xna, you are importing the model with it's unscaled vertex positions and all the transform matrices it takes to render the model the way you would expect it to. But you have to apply those transforms in your Xna code or the model wont appear the way it did in your modeling app. (the issue you are having)
The way you apply the transforms is by calling the Xna Model.CopyAbsoluteBoneTransformsTo(Matrix[]). Make sure you do not call Model.CopyBoneTransformsTo(Matrix[]), you need the one with the word 'Absolute' in it.
Here is a tutorial that shows how to implement that method: http://msdn.microsoft.com/en-us/library/bb203933(v=xnagamestudio.40).aspx
In this game im trying to create, players are going to be able to go in all directions
I added one single image(1024x768 2d texture) as background, or terrain.
Now, when player moves around I want to display some stuff.
For example, lets say a lamp, when player moves enough, he will see lamp. if he goes back, lamp will disappear because it wont be anymore in screen
If Im unclear, think about mario. when you go further, coin-boxes will appear, if you go back they will disappear. but background will always stay same
I thought if I spawn ALL my sprites at screen, but in positions like 1599, 1422 it will be invisible because screen is only 1024x768, and when player moves, I will set place of that sprite to 1599-1,1422-1 and so. Is it a good way to do this ?
Are there better ways?
There are two ways you can achieve this result.
Keep player and camera stationary, move everything else.
Keep everything stationary except the player and the camera.
It sounds like you are trying to implement the first option. This is a fine solution, but it can become complicated quickly as the number of items grows. If you use a tile system, this can become much easier to manage. I recommend you look into using a tile engine of some sort. There are a lot of great tile map editors as well.
Some resources for using Tiles:
Tiled -- Nice Map Editor
TiledLib -- XNA Library for using Tiled Maps
What you're describing there is a Viewport, which describes a portion of the 'world' that is currently visible.
You need to define the contents of your 'world' somehow. This can be done with a data structure such as a scene graph, but for the simple 2D environment you're describing, you could probably store objects in an array. You would need to bind your direction keys to change the coordinates of the viewport (and your character if you want them to stay centered).
It's a good idea to only draw objects that are currently visible. Without knowing which languages or packages you are using it's difficult to comment on that.
I would look into Parallax scrolling. Here is an example of it in action.
If this is what you require, then here is a tutorial with source code.
XNA Parallax Scrolling
After you are finished with basic scrolling, try to implement some frustum culling. That is only draw objects which are actually visible on the screen and avoid unnecessary drawing of stuff that cannot be seen anyway.
I would prefer solution number 2 (move player and camera) - It would be easier for me, but maybe its just personal preference.
I am going to make a game like XNA example game "Platformer1" which comes with the XNA. But I need longer levels which doesn't fit in the screen (like Super Mario levels). How can I manage this kind of level? Do I need to use a 2d camera that follows the sprite? If I do this way how can I load the level? I am a bit confused and I am not sure if I could explain my problem clearly. Hope someone can help?
The tutorial based on Platformer Starter Kit in MSDN has a step Adding a Scrolling Level which guides you through creation of longer levels. The tutorial is very detailed, I highly recommend it.
I couldn't find the tutorial in the section for XNA Game Studio 4.0, but differences should be minimal. According to the comment at the bottom of the page, all you need to change is replace
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.None, cameraTransform);
with
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearClamp, DepthStencilState.Default, RasterizerState.CullCounterClockwise, null, cameraTransform);
in the tutorial code.
If you want to create a side scrolling game, then I would look into parallax scrolling. A quick google/bing will help you find lots of tutorials. Also, another useful tip is to search YouTube for XNA videos has we a lot of posters share their source code .
Here is a link to Microsofts Parallax Scrolling.
Sounds like you have a few problems ahead of you.
But I need longer levels which doest'n fit in the screen(like super mario levels). How can I manage this kind of levels.
There are several ways to do this, but a fairly easy way would be to have a 2d array (or sparse array, depending on how large your levels are) of a class named Tile that stores info about the tile image, animation, ...whatever.
Yes, you'll probably want a "camera". This can be as simple as only drawing a certain range of that array or a more featured camera that uses transforms to zoom out and translate across your level.
Hopefully this will help get you started.
I've done a decent amount of work in XNA, and from my experience, there are 2 ways to draw a 2D scene:
1) Strictly 2D. This method is much easier, but has a few limitations. There is no "camera" per se, what you do is move everything underneath the fixed 2D "camera". I say "camera" in quotes because the camera is fixed (as far as I know). The upside is that it's easy, the downside is that you can't easily zoom in or out or do other camera effects.
2) 2D in 3D. Set up a 3D world with a 2D plane. This is more flexible, but is also more challenging to work with because you will need to set up a 3D world and 3D camera. If this is your first attempt with making a game, I would highly recommend against this method.
I'm really only familiar with the strictly 2D method, and you would want a list of map objects that have a 2D coordinate. You would also want to store which section of the map you are looking at, I do this with a Rectangle or Vector2 that stores this. This value would move forward as the character moves. You can then take your 2D map objects' coordinate and subtract the (X,Y) of the top-left of what you are looking at to determine an object's screen position. So:
float screenX = myMapObject.X - focusPoint.X;
float screenY = myMapObject.Y - focusPoint.Y;
An other thing to note, use floats or Vector2/3 to store locations, you may not think it's required now, but it will be down the line.
It might be overkill, but my SF project uses XNA to draw a Strictly 2D scene that you can move around: http://sourceforge.net/projects/asteroidoutpost/
I hope this helps.
Have a look at Nick Gravelyns tutorials. They helped me tonne when I was first starting out - Really really worth a look for learning a lot on 2D games.
All the videos are now on youtube here