• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

172 Neutral

About Tthe13th

  • Rank
  1. Update: Added Actor. You can now be part of the world and give your robots commands. How to use actor commands is shown in in-game Tutorials and also in the following video: https://youtu.be/cDnhUEiUQlk Also quad-copters were added to observe your robots.
  2. Hello, Virtual Robots is a robot programming simulator, currently submitted to Steam Greenlight. https://youtu.be/T0M2dJ-VygA The objective of this game is to write code for your robots. Yes, WRITE. Ironically, this game does not have a code editor. The best code editor you can get for Virtual Robots is probably Notepad++. After you write code, you can assign it to your robots and watch them to do, what you told them to do. Robots can carry boxes, use guns and swords, navigate through a maze and open doors with sensors. Virtual Robots use Pyrois scripting language for its code: http://www.pyroisscript.com/ If you like this game, please vote for it on Steam Greenlight: http://steamcommunity.com/sharedfiles/filedetails/?id=877343086
  3.   Hello, at some point of game programming process i realized that simple NPCs that can attack player or run away won't be enough. I needed a better way to tell a NPC what it is supposed to do. I know there are many scripting languages that are able to do this, but i'm a noob and i couldn't implement them. So i decided to make my own scripting language. One with a C like syntax, that would be easy to implement and easy to use. Pyrois Scripting Language is designed mainly for NPC scripting in computer games but can be used in any application that requires custom command execution. Pyrois is writen in C++ and released under GNU General Public License (GPLv3) as C++ library. Pyrois Scripting Language has syntax similar to C programming language and supports arrays and structures. Pyrois is approximately 20-300 times slower than C++ (this depends on type of code you write with Pyrois). You can download Pyrois SDK from official website: http://www.pyroisscript.com/
  4. Hello After some time i finally decided to release my HeightMap editor. I decided to release it as freeware with optional donations.   Zemnik is a HeightMap Editor for small to medium-size HeightMaps. Maximum tested safe working size was 12000x12000 (depends on RAM size). Zemnik comes with many build in functions for manual HeightMap editing. Zemnik supports per-vertex and per-pixel texturing with maximum of 255 different textures. Maximum tested per-pixel texture size was 7000x7000 (depends on RAM size). Zemnik also allws you to place markers with text, position and orientation on your map. With the ability to place 3D models it could be used as map editor for games. Last, but not least, Zemnik can load already created HeightMaps, and use them as models.   Zemnik uses DirectX 11 for rendering so it's for Windows only although maps and other files created with Zemnik are usable in any other application. After downloading Zemnik you can find c++ header and source on how to load and use Zemnik  HeightMap files. It also contains HLSL example of how Zemnik HeightMaps are rendered with DirectX.   official website: http://www.zemnikeditor.com   This is the very first project i officially released so i'm sure i made some beginner mistakes. If you find any bugs or something that should be different please post it here.   I made a short video on how make a simple map with Zemnik: https://www.youtube.com/watch?v=uFFmlsOyNAw
  5. Solved with pDeviceContext->CopySubresourceRegion(pTextureArray, i * 9, 0, 0, 0, pNewTexture, 0, 0); pDeviceContext->GenerateMips(pTextureSRV);
  6. Hello, a while ago i started to use texture arrays for multitexturing in terrain shader. I didn't know how to load image files for texture array, so i used ID3D11DeviceContext::CopySubresourceRegion to populate texture array with textures loaded with WICTextureLoader. That looks like this: D3D11_TEXTURE2D_DESC textureDesc; D3D11_SHADER_RESOURCE_VIEW_DESC shaderResourceViewDesc; ZeroMemory(&shaderResourceViewDesc, sizeof(shaderResourceViewDesc)); ZeroMemory(&textureDesc, sizeof(textureDesc)); textureDesc.Width = TEX_PIXEL_SIZE; textureDesc.Height = TEX_PIXEL_SIZE; textureDesc.MipLevels = 1; textureDesc.ArraySize = v_texFName.size() + 1; textureDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; textureDesc.SampleDesc.Count = 1; textureDesc.Usage = D3D11_USAGE_DEFAULT; textureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE; textureDesc.CPUAccessFlags = 0; textureDesc.MiscFlags = 0; shaderResourceViewDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; shaderResourceViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY; shaderResourceViewDesc.Texture2DArray.MostDetailedMip = 0; shaderResourceViewDesc.Texture2DArray.MipLevels = 1; shaderResourceViewDesc.Texture2DArray.ArraySize = v_texFName.size() + 1; shaderResourceViewDesc.Texture2DArray.FirstArraySlice = 0; HRESULT hr; hr = pd3dDevice->CreateTexture2D(&textureDesc, 0, &pTextureArray); if (FAILED(hr)) debugMsg("FAIL pTextureArray: %d", hr); hr = pd3dDevice->CreateShaderResourceView(pTextureArray, &shaderResourceViewDesc, &pTextureSRV); if (FAILED(hr)) debugMsg("FAIL pTextureSRV: %d", hr); WCHAR wcharstr[260]; ID3D11Resource *pNewTexture; for (UINT i = 0; i < v_texFName.size(); i++) { MultiByteToWideChar(CP_ACP, 0, v_texFName[i]->text, -1, wcharstr, 260); CreateWICTextureFromFile(pd3dDevice, wcharstr, &pNewTexture, 0); DXUTGetD3D11DeviceContext()->CopySubresourceRegion(pTextureArray, i, 0, 0, 0, pNewTexture, 0, 0); SAFE_RELEASE(pNewTexture); } Now after reading some articles i noticed that WICTextureLoader can automatically generate mipmaps. CreateWICTextureFromFileEx(pd3dDevice, pDeviceContext, wcharstr, 0, D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET, 0, D3D11_RESOURCE_MISC_GENERATE_MIPS, false, &pNewTexture, 0); But now i don't know how to copy these mipmapped textures into texture array. According to some articles it should work like this:     textureDesc.MipLevels = 0;     textureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;     textureDesc.MiscFlags = D3D11_RESOURCE_MISC_GENERATE_MIPS;     shaderResourceViewDesc.Texture2DArray.MipLevels = -1;     // if texture has 9 mipmap levels for (UINT i = 0; i < v_texFName.size(); i++) { MultiByteToWideChar(CP_ACP, 0, v_texFName[i]->text, -1, wcharstr, 260); CreateWICTextureFromFileEx(pd3dDevice, DXUTGetD3D11DeviceContext(), wcharstr, 0, D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET, 0, D3D11_RESOURCE_MISC_GENERATE_MIPS, false, &pNewTexture, 0); for (UINT j = 0; j < 9; j++) DXUTGetD3D11DeviceContext()->CopySubresourceRegion(pTextureArray, i * 9 + j, 0, 0, 0, pNewTexture, j, 0); SAFE_RELEASE(pNewTexture); } But this doesn't seem to work. (it works only for the nearest mip level)   My questions are: Why does a 256x256 px texture have 9 mip levels, and how do i get number of mip levels from a texture? Why does the last code work only for the first mip level? How do i populate a texture array with mipmapped textures?
  7. Thanks for the replies, at first i thought i shouldn't use slerp as i couldn't simply transfer from one orientation to another, and really need angular velocity. Then i realized i can use slerp to create angular velocity if i simply lerp between identity quaternion and Q1->Q2 quaternion. What i did:   get quaternion that points from matrix 1 to matrix 2: Q1 -> Q2 to get this i did q = Q1^(-1) * Q2   now q is orientation that is requires to rotate Matrix 1 to Matrix 2 to get a small part of this orientation every frame update quatnow = XMQuaternionSlerp(XMQuaternionIdentity(), m_vAdjustQuat, fElapsedTime / CLIENT_POSITION_ADJUST_TIME); m_mWorldMat = XMMatrixRotationQuaternion(quatnow)*m_mWorldMat;   This looks kinda promising but there are still some visible lags.
  8. Hello, first, i don't really understand quaternions, so please keep it simple. I have 2 transformation matrices and i need one of them to move and rotate so, that over time, it becomes the exact same matrix as the second one. Moving this matrix is simple. Let's say M1 has position P1 and M2 has position P2. I want that over time t, P1 moves to P2. I create vector v = P2 - P1 v = normalized(v) * (length(v) / t) Now every frame i just have to P1 += v*ElapsedTime t -= ElapsedTime while t>0   How do i do this with a quaternion? Until now i used axis based angles and rotation matrices to rotate an object. This was simple M = RotationMatrix( alpha * ElapsedTime )*M I'm using DirectXMath, to get quaternion from matrix there is XMQuaternionRotationMatrix method, to create rotation matrix from quaternion there is XMMatrixRotationQuaternion.   I need quaternion that i can use as M = XMMatrixRotationQuaternion( quaternion* ElapsedTime )*M But i don't think i can simply multiply a quaternion with a scalar.   Questions are: How do i get a quaternion that can be used to rotate one matrix to another and how can i use this quaternion to rotate that matrix over time t?
  9. Sorry i forgot to mention, i'm using C++ with RakNet library.
  10. Hi, For a while i started with network programming. So far i created networking part for my game and a simple game server. To play the game, players have to log in with their username and password. So far, the login procedure is simple, player sends their user name and password as simple strings. Passwords on the server are also stored as simple text files. When player attempts to log in, server reads the password from file and compares it with the received password. At this point we really can't talk about security, so here is what i wanted to ask. I have read that passwords are usually stored in a salted hash form. The salt is also stored. When the server receives password from player it tries to hash it again and then compares it with stored hash. Now to the question: How do i send the password over the LAN / internet? Sending plain text isn't secure. What are the usual methods to send passwords? What are the usual methods to log in to games that require user name, password?
  11. Hello all, Let's say i have an array of objects and i want to test each object in this array with every other object in this array. The single threaded solution would be a for for test: for (UINT i=0; i < v_obj.size() - 1; i++) // -1 - no need to test the last one for (UINT j = i + 1; j < v_obj.size(); j++) doSomething(v_obj[i], v_obj[j]); I want to ask how the multithreaded solution would look like? I was thinking about leaving the first for loop and dividing the second based on number of threads. Each thread would do the test with part of the remaining array. Is there a standard way to do tests like this? How would your solution to this look like?
  12.   THIS, thank you good sir.
  13. Scene rendered with shadows: Here size of shadow map texture is same as size of window: http://postimg.org/image/oiliy12xp/ Here size of shadow map is 1024x1024, different than size of window: http://postimg.org/image/cz226jcgh/   Maybe i asked a wrong question in the first place. This is how i switch render targets: ID3D11RenderTargetView *prentw = 0; ID3D11DepthStencilView *dsw = 0; float ClearColor[4] = { 0.0f, 0.0f, 0.0f, 1.0f }; pd3dImmediateContext->OMGetRenderTargets(1, &prentw, &dsw); pd3dImmediateContext->OMSetRenderTargets(1, &m_ShadowCtrl->m_pShadowRTV[0], m_ShadowCtrl->m_pDSV); pd3dImmediateContext->ClearDepthStencilView(m_ShadowCtrl->m_pDSV, D3D11_CLEAR_DEPTH, 1.0, 0); pd3dImmediateContext->ClearRenderTargetView(m_ShadowCtrl->m_pShadowRTV[0], ClearColor); // // rendering // pd3dImmediateContext->OMSetRenderTargets(1, &prentw, dsw); SAFE_RELEASE(dsw); SAFE_RELEASE(prentw); After pd3dImmediateContext->OMSetRenderTargets(1, &m_ShadowCtrl->m_pShadowRTV[0], m_ShadowCtrl->m_pDSV); the size of render target changes from size of window to size of texture. Does ID3D11DeviceContext know that the size changed? If no, how do i tell him?
  14. What i want to do: i want to apply blured shadows to my scene. I know how shadow maps work. First i render the scene depths from point of light with (yes) orthogonal projection matrix to a texture. First image Then i apply blur efect to this texture. Second image. Then i use this texture to determine whitch parts of the rendered scene are in shadows.     Now this is where things get complicated. The third image is renderd in the same way as the first. Same projection matrix. The fourth image is the same as the second image. Same blur effect same projection matrix. The only difference between first/third, second/fourth image is the size of texture to whitch i render. First and second textures have same size as screen and third and fourth have size 1024 x 1024.
  15. Problem isn't creating custom sized texture, problem is using custom size texture as render target. I show it, these are textures with screen size: depth: http://postimg.org/image/6op6bvezj/ blur: http://postimg.org/image/6431k9ibt/ These are textures with size 1024 x 1024: depth: http://postimg.org/image/k3c8wuaoh/ blur: http://postimg.org/image/bufazvrex/ Rendered scene wont fit into that texture.