Jump to content
  • Advertisement

Flicklizic

Member
  • Content Count

    18
  • Joined

  • Last visited

Community Reputation

1070 Excellent

About Flicklizic

  • Rank
    Member

Personal Information

Social

  • Github
    https://github.com/RodrigoHolztrattner
  • Steam
    Flicklizic

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Flicklizic

    Resource Management Library

    This was really helpful. Thanks for your insight guys. I totally forgot about the steam auto-update system, Its something that I plan to support on my engine. I'm a little more confident with this project and I'm planning to continue improving it. 😁
  2. Flicklizic

    Resource Management Library

    This is interesting. Do your system handle packed data updates? Like comparing a manifesto containing info about each file and then adding each one that is outdated/new into the pack itself? I'm planning to add this feature soon because right now I'm adding network code to my (learning) game engine and I'm planning on building an auto updater for it. Yes this is something that can be done in this way, but I'm thinking about including an option just to support thinks like this, but for now two (or more) systems can be instantiated (the mode don't matter) without problems.
  3. Hello! I need some advice on my new library, I'm not really confident about it... First a little of introduction: One of my biggest problems when creating a game or a game engine was how to perform the resource management (loading files, editing them, etc). I could just use a default "Data" folder, put all my files here and load them using the standard ways but we know that this is something problematic when the project starts to grow. I also don't think (or at least I don't know) there is a good library that could help with this task. Yeah I could use zlib or something like that but I decided to create my own, I did some improvements here and there, created a decent (at least I think) introduction/tutorial on its git page but I really don't know if any developer would use it on its currently state. Here is the link https://github.com/RodrigoHolztrattner/Packet (written in c++). It uses hashed paths to perform fast-mapping searches, it has 2 operation modes (one that allows editing and the other that is focused on performance), all resources uses reference counting and it has some other things that are listed on its github page (like the hot-reload capability for example). Unfortunatelly there are no working examples for now but I plan to add them in the future. Now I ask you, what do you think about using a library like this? Is it something that you would use for your game? Have I done some kind of overthinking when building it? Like I said I'm not really confident about it (although I'm using it on my projects and I feel it suit them really nice). Thank you for your time!
  4. You can store the data inside your heightmap, use R and G channels for the height level, B for the construction data and the alpha channel for the speed factor.   Using this approach you will only need a short lookup function. Just remember to store the texture info inside the heightmap when you "paint" your terrain.
  5. Flicklizic

    Storing textures (game engine)

    I will probably structure my engine that way, thanks for the reply!
  6. Just a short question... I need to store and compress all my textures inside a single file...   Its better to save them as .dds, compress using zlib (for example) and load using directX "D3DX11CreateShaderResourceViewFromFile" after decompressing or should I store them as raw pixel data (RGBA channels), compress using zlib (again, zlib or any other) and load creating an empty texture, updating the buffer and then generate the mip maps?   Just some notes:   - Yes I need mip maps always. - I use the 4 channels (RGBA) almost always. - Currently I'm using DirectX11 and C++.   Thanks :)
  7. Flicklizic

    Terrain render process

      Sorry, I mean by "other things" Tangent and Binormal.     But as the terrain can change frequently this will generate alot of data processing, no? I will need to calculate the normals, tangent and binormals if they arent stored.   I could use just 2 textures for the pre baked data:   For the height, the x and y in the first texture (so i can have the height up to 65536 or +- 32,768) For the normals, the z, w in the first texture and the x on the second For the tangent, the y, z, and w in the second. For the binormal I can calculate it in the shader w/ the tangent and normal.   2 texture lookups only...     GPU: GeForce 8400 GS (yeah I need a better one) CPU: I5 (belive this is ok)
  8. Hello, I'm in doubt about which method should I use to render my terrain.   First, some information about my terrain style:    - My game came is like Diablo, torchlight type so I dont need to worry about LOD or anything like it.  - Currently I divide my terrain into 9 parts, each part is divided using a quad tree, rendering only what I can see.  - Im using a 128x128 heightmap for each terrain which occupies an area of ??64 game units.  - Each terrain has it own textures, up to 8, and 2 alpha maps (so I can "paint" the map).   So, these are the methods that I thought:   1) Store only the texture info, the heightmap and the 2 alphamaps, calculate all the other things at the runtime only when that terrain is needed. Store this data and sent it to the shaders when the render time comes.   2) Pré calculate anything on the "building" phase and store ALL data, when that terrain is needed, just load the data and send to the shaders.   3) Store the texture info, the heightmap, a pre baked normal map texture and the alphamaps, when render comes send ONLY the textures, on the shader, do something like this:    - Calculate the position using the index, for a 128x128 heightmap will be like this: // PRIMITIVE_INDEX is the primitive index provided by the shader (I dont remember the semantic now) uint COUNTER = 0; // Global ----------------------------------------- uint xPos; uint yPos; uint zPos; uint currentX; uint currentZ; currentX = PRIMITIVE_INDEX%128; currentZ = PRIMITIVE_INDEX/128; if(COUNTER == 3) { COUNTER = 0; } if(COUNTER == 0) { xPos = currentX/2; zPos = currentZ/2; yPos = TextureLookUp(currentX, currentZ); } else if(COUNTER == 1) { xPos = currentX/2 + 0.5; zPos = currentZ/2; yPos = TextureLookUp(currentX, currentZ); } else { xPos = currentX/2; zPos = currentZ/2 + 0.5; yPos = TextureLookUp(currentX, currentZ); } COUNTER++;    - Compute the normals using the normal texture (same idea that I used for the position, the normal texture NOT the same texture for the pixel shader, this is a pre baked VERTEX normal texture)    - Compute the texture coordinates using the positions.    - Compute the tangent and binormal using more texture lookups.   Currently Im using the first ideia, but my fps is at 30~20 and I need to improve this (ok, my GPU is not that good, but I can play SC2 normally and Im only rendering the terrain).       Sorry for my bad english.
  9. What I mean by loading using virtual memory is that I dont use normal functions like fopen, I use memory mapping to load the asserts into the memory and then create the "buffers" for each one and give the acess to the GPU.   But really thanks for the replies, they showed me the right way.
  10. Well, I'm building a game engine using directX10 and I need to discuss some ideas and conclusions.   Some informations:   - My game is something like diablo/torchlight style mixed with DotA, usign a third camera view from top to bottom. - Currently I'm using a quadtree to split the terrain and cut some unnecessary draw calls (frustum culling). - Each chunk of terrain has its own materials: 2 alpha textures, 8 diffuse textures and 8 normal textures, the alpha texture determine where I should use each texture (I use some logic to cut some unnecessary process at the pixel shader). - For lightning Im using the Light Pre-Pass system, so I render all the geometry 2 times (only normals first). - All the meshes are well stored and indexed, so when I need to draw the scene, first I look for all meshes of the same type, put all information from them into an Instance Buffer and then just do 1 draw call for them.   1) Just a conclusion, as I will always be facing almost the same number of triangles because Its a third camera view from the top to the bottom and the camera zoom is fixed (maybe a little zoom will be allowed but almost 99% there will be no zoom) I dont need to worry about LOD, correctly?   2) Now Im using some heightmaps to store the height for the vertices from each terrain, they are stored like a texture, this way Im getting +- 1Mb for each terrain chunk, but I need a better way to do this, just using the heightmap dont allow me to do things like this:    - The terrain isnt continuous, to do this I need to store the x, y and z float information that is expensive...There is a bette way do archive the same result?   3) They use alot of meshes or just bump/parallax occlusion techniques?   -Look to the ground   -Ground too   4) A quad tree still is a good idea for this or there is a better way?   5) Each time that I need to load an assert I load it using virtual memory, this is correctly? (all my assert data (texture, meshes, etc) are edited custom file types).   Sorry for my bad english, tutorials, books and examples are welcome too!
  11. Hello, Im currently working on a project using directX 10 and I wondering how I could archive the same effects for spells at games like warcraft 3, diablo, torchlight, wow, starcraft2, etc...   I know that fire (and other similar things) I can get using billboards, particles are easy to implement, but things like those spells:   -  (0:42 to the end).   Can someone tell me examples or articles that I could read?
  12. Hello, I'm trying to put the Light pre-pass lightning method in my game-engine, but as I use Instanced Skinning (hardware skinning) I dont know If rendering 2 times the geometry would be nice (cause I will need to skin 2 times).   Currently Im doing foward lightning, my game Is a third view camera game (like diablo and starcraft) and I really really need a good way to use many many lights at the same time, almost every mesh on the scene is skinned (instanced too if there is more the one of the same type).   Anyone know any good way to implement it or if there is another good alternative... I was thinking about using the Stream-Out, but I dont know if it would work because we are talking about a scene using something around 200~300 skinned meshes, some of then using instancing and all of them in diferent animation stages.   Another solutions and tutorials are welcome too
  13. Ok I solved the problem, if anyone is having this same problem remember to see if the previous buffer is working correctly first (this can cause a ripple effect on all upcoming buffers)
  14. Hello, I'm having problems with the use of constant buffers with arrays, currently I'm sending an array of size 100 for my vertex shader, like this:     ///////////// // DEFINES // ///////////// #define MAX_NUMBER_INSTANCES 100 ///////////// // STRUCTS // ///////////// struct InstanceInfo { matrix InstanceWorldMatrix; uint CurrentFrame; uint TotalFrames; uint AnimationType; float DeltaTime; }; ///////////// // BUFFERS // ///////////// cbuffer InstanceBuffer { InstanceInfo Instance[MAX_NUMBER_INSTANCES]; };     And I'm getting wrong results... Here is my C++ buffer: (almost the same)   struct InstanceInfo { D3DXMATRIX worldMatrix; unsigned int currentFrame; unsigned int totalFrames; unsigned int animationType; float deltaTime; };       The buffer is initialized correctly with the size: sizeof(InstanceInfo)*MAX_NUMBER_INSTANCES (MAX_NUMBER_INSTANCES in my c++ code is 100 too) and the data is copied correctly too. (I double checked them)   I know that there is the packing rule but I cant find where is my error (probably is in front of me but I cant see it...)   If someone can help me...
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!