Jump to content
    1. Past hour
    2. In the tab "Styles" you see the styles your window has. You have to pass the exact same ones to AdjustWindowRect(Ex). Make sure to include both regular and extended styles, and use AdjustWindowRectEx. Still, I'm pretty sure HGE should account for that by itself. All these engines usually care for the actual usable (client) area only.
    3. I tried the spy ++ tool and got this: The wanted/fullscreen resolution was 1600x900. The corrected was 1616x939 (after AdjustWindowRect this is what I sent to the engine) but the above show something different still. Still lost:) Any idea why this differs and how to fix it? How can I use GetClientRect? Im not sure how to get a handle to the window...
    4. Greedy Goblin

      Slopey McSlopeface (part 1)

      Hmmm, I love sausage rolls. Oh sorry, just having a tasty sausage roll for my lunch while thinking about the problem of... slopes. So I have this nice terrain an' all, that I can now walk around on. But those hills aren't exactly challenging my player character. I breeze up those as easily as I descend a vertical drop. Why is that? Because I'm just making the player follow the terrain like it's on rails, that's why! No fancy pants physics engines here guv. I need to make the player ascend steep inclines more slowly than flat terrain and also come to a halt against any vertical, or near-vertical inclines. I also need to make the player fall or tumble if they attempt to go down any incline too steep... but that's for another blog. I first messed around with attempting to stop the player if they tried to walk up anything with a gradient over a certain threshold... that didn't work out too well. Lots of jittery movement ensued. Then I realised my approach was all wrong! When I climb a steep hill, I don't just come to a dead stop in reality, I just move more slowly as I ascend. So this just became a case of factoring in the terrain gradient to my player speed... simples! // Test slope in direction of travel let direction = new THREE.Vector3().copy( this.collisionBody.resolveMoves().normalize() ); let p1 = new THREE.Vector3().copy( this.position ); let intersection1 = _this.terrain.heightAt( p1.x, p1.z ); let p2 = new THREE.Vector3().addVectors( this.position, direction ); let intersection2 = _this.terrain.heightAt( p2.x, p2.z ); let grad = intersection2.h - intersection1.h; _this.playerController.currentSpeed = Math.clamp( -_this.playerController.DEFAULT_SPEEDS.WALKING * grad + _this.playerController.DEFAULT_SPEEDS.WALKING, 0, 2 ); Works a treat.... except (sigh) when I'm up against a near vertical incline. I can still climb those, just a bit more slowly (sigh). In fact, no, this doesn't look right at all. The graident should be so large when approaching a near vertical incline that it should reduce my speed to 0. But for some reason I get this.... TheBerg-SlopeyMcSlopeface-01.mp4 Much head scratching ensued! Then I realised it must be something to do with the order of processing. The way I handle movement is through a "CollisionBody" object which is attached to the player. I call a "move" function on the CollisionBody which basically stores it in an array until the "PhysicsManager" decides to resolve it (reminder: there is no fancy physics going on at all yet... I just decided to call it a PhysicsManager). The thing is, my PlayerController was calling "move" before I had changed my speed to zero, so the movement vectors were already baked in (I know, I know, this is getting complicated already!) and changing the speed did nothing. Each alternate frame I was then resetting my speed back to normal walking speed.... You know, it's only when I write all that down I see just how crazy dumb it was! 😂 So I decided on an alternative approach. Instead of setting an absolute velocity vector when calling CollisionBody.move I now pass a direction vector and speed as a new Velocity object... however... the speed doesn't have to be a number... it can be a function! Thereby I can delay the resolution of the velocity until absolutely necessary (i.e. when the PhysicsManager needs to apply the moves). It may sound complicated but I quite like it. I can then make any other adjustments to the speed (not velocity) during the frame update and it will take effect when the PhysicsManager resolves everything! e.g. PlayerController handles movement -> player.collisionBody.move( new Velocity( direction, () => player.speed ) Player object "update" tests for slopes and adjusts speed accordingly PhysicsManager "update" resolves all player.collisionBody movements, in turn resolving all Velocity values using the new updated speed rather than the speed as it was in step 1 So how does this work out now? TheBerg-SlopeyMcSlopeface-02.mp4 Better... if you watch very closely you might notice I've added in a subtle acceleration too which gives a smoother feel to the player movement (later I'll add in head bobbing). However, I'm still not entirely happy with it. When you stop the player doesn't decelerate, but comes to an abrupt stop... which is fine but feels a little unnatural. Near vertical inclines are also handled better, although I still find with the "right" movements I can still climb them so I definitely need to work on this more. Acceleration is done by adding in a targetSpeed property on the Player, so the actual speed will accelerate towards that speed until it is reached. It does decelerate too as the incline increases, but when you lift your key from the keyboard the direction vector is reset to {0, 0, 0} so the speed has no effect. I'll have a think a bit more about this later. Ideas and suggestions are welcome!
    5. Today
    6. vinterberg

      How To use mouse Events

      I normally use the WM_INPUT method: https://docs.microsoft.com/da-dk/windows/desktop/DxTechArts/taking-advantage-of-high-dpi-mouse-movement
    7. mathematical

      Quaternion, why divide angle by 2?

      Thanks everyone for helping, i think this post is resolved @Maciej Mizerski between your two posts i gained a lot of insight into how quaternions work, tough it's much less visual than i'd hoped 😛 Your insight was very helpful and much appreciated.
    8. Projection, viewport, render target size and windows client dimension (check with GetClientRect) all need to match. Debug if this is the case at the moment of drawing. A graphics debugger can also help.
    9. How do I detect the mouse event of moving my mouse left or right and wheel up or down? I have used Get_X_LParam for mouse movement and WParam for wheel movement. Like DWORD x = HIWORD(wParam) but both of these events return continuous values. for eg. if(x>0) { //do this } else { //do this } the Wparam only returns the same value every time even if I am moving my wheel downwards. Same with Get_X_LParam
    10. Ciaphas

      RTS design techniques?

      I would say that Mount & Blade strategical aspect evolution would produce something like Battlezone as final result. The strategy from the eyes of commander in first person view so to say. This is an interesting and fruitful approach (I believe its merger with RPG can be especially fruitfull. ), but too deviating from classical strategy (not even RTS but any strategy game). This evolution can be viewed as extention "downwards" the detail scale -- to include single unit level. The other direction I can think of is to extend game "upwards" -- to a higher level. This would meen to add global strategy aspect in real time where RTS battle would be a single battle on some global map. My idea here is that it can be a global map without any division from which player "zooms" to certain points to control RTS battles. Kind of Supreme Commander maximum distance view where bases and large masses of units turn to dots, map details fade into physical map like view and hubs from global strategy (like province centers or cities) added to the same space. It would be an RTS so big in map and scale that it would grow to global strategy size, if you understand what I mean.
    11. You are trying to extract material from proprietary format an you feel you have rights to that content?
    12. I'm working on a small arcade-style Android game for phones and tablets( using Android Studio and Java ) and I'm not 100% satisfied with the touch screen controls. The game has five buttons for control; left and right, and three buttons for firing three different bullet types( essential to the main mechanic of the game itself ). The irony is that they respond very well even with scaling on different devices and the coding is bullet-proof( zero crashes or bugs since extensive testing ), but as the game is as fast paced as Space Invaders or Columns it kinda falls apart as I switch between pressing buttons in the heat of the action. I am now at the point where I'm having to slow the game down to make it easier to cope with the touch-screen buttons, or adopt a harsh attitude that the player will need an Android-compatible gamepad for the best possible experience... Quality controls with standard input is something I take very seriously, but in this case I feel action games are not suited for tablets without a gamepad. Would this be a correct assumption or could I do better? Any thoughts would be most welcome - even if you are just a gamer. Cheers.
    13. If you're using Visual Studio there's a tool called Spy (or Spy++). You can use it to inspect your window while running. Make sure the client size is what you expect it to be.
    14. Adeilton Alves

      Reverse Engineering .RAW files from PS2 game

      why it matters that i neet to have the rights to it? i'm just trying to extract it
    15. lawnjelly

      Beginning developing

      Yeah there does seem to be a lot of association of autism and programming. My friends and family have said I've got some kind of autism / assburgers going on, as well as OCD. People without these traits tend to suck at programming imo, because they haven't got the interest / attention to detail. I wouldn't say it worsens autism, more it is well suited and calming, because it gives a fully controllable world (whereas real world is not controllable). Perhaps going a little off topic there (needs its own topic). I would think in terms of ruining lives, rather than autism, people speak of certain overtime practices in the industry, job uncertainty etc. Well your questions are vague. You are, I'm guessing referring to 'indies', but the answers vary according to how you approach the money-making side. Here are some options I would rank by financial risk, from the least risky to the most risky Don't rely on games to pay your rent - Have another main income source, make games in spare time Work making games for a company that pays you wages and takes the risk for you Run your own company with games as main income Also most people would agree this also ranks how crazy you are, most sane people would not rely on games for income, whereas most people who run an indy game company for their income will agree that they are crazy. Aside from this, most of the principles are similar to investing, don't put all your eggs in one basket, have a certain percentage of solid options, with a smaller percentage of more volatile options etc. Again it totally depends on your situation. (1) has the option for more free time as they are not reliant on game for money. (2) may have to work overtime at the job, it depends on the employer. (3) varies according to how successful the business I guess, I couldn't tell you I have never done this. Most people who should be game developers would choose to spend their free time on gamedev, other free time is only there for life balance and variety. Because they enjoy it. Yeah sure, like cocaine, on steroids.
    16. LOL, you are not getting the point.
    17. Adeilton Alves

      Reverse Engineering .RAW files from PS2 game

      So noway to extract it? :[
    18. JoeJ

      Programming and Higher Mathematics

      But qualified programmer == mathematician. Offtopic: Fulcrum, you take a quoted quote and make it appear as if i said that. But i did not - i've quoted NikiTo, and like you i totally disagree with this. I share your opinion instead. Now i'm confused, thinking you disagree with me and argue, although we both say the same things. Please let me mention this because i've noticed you do this quite often. You can avoid this kind of confusion by making the text selction more carefully.
    19. Pretty sure reverse engineering Sony's tech is frowned upon around these parts. (That will also go for reverse engineering in general - as 'reverse engineering' in itself means you are trying to access something which you don't have the rights to).
    20. Anri

      Am I biting too much?

      If you have made a (digital) card game previously then I think you should be alright., although the big variable in the equation is your previous experience in developing a program. Personally, I recommend a warm-up project before hand, such as Solitare or Top Trumps. It gives you time to think things over and gauge what kind of game you are capable of. Also, you will have a finished game! Hurrah!
    21. Hello everyone, I'm new here and sorry if this isn't the right place to ask but i asked in a few forums around the internet and no one yet help with it.. I'm have been trying to mod this game for years, but I still stuck with the raw files from RACJIN games, Raw Files https://drive.google.com/file/d/1_LD5uCWewHncJLRlHR-X0_Zh0h7qTvFl/view I would like to identify the compression algorithm used to compress these files so that they can be decompressed and analyzed. Game : Naruto Uzumaki Chronicles 2... A.K.A Naruto Konoha Spirits in Japan.
    22. Cool, I messed with it a bit and got as far as doing the same assignment you did but I I didn't figure out putting the * after the a. and not before. In any case I'll almost for sure never need it. It's pretty esoteric, but at least I know what it is now.
    23. Fulcrum.013

      Programming and Higher Mathematics

      As said our lector: - "Good programer it for first a excelent mathematist. And for main it so lazzy mathematist, so able to organize computations by way that make illusion that computer transforms required for specific cases formulas automaticaly, instead to code it equations manually". Also if we translate a term "software" to Russian and then literally translate it back to English it will have "Mathematical supply of elecronical computational machines". But qualified programmer == mathematician. At least here. Programmer qualifictiond can be obtained together with Applicative Mathematic and CS degree only. Say more on 90-th when i study in technical university, our university has a branch of Higher Mathematic that has not been included to any faculty becouse trainers from branch make lectures for students of all faculties, but studens from Applicative Mathematic branch, that has a own lectors and assistants, becouse branch of Higher Mathematic have no trainers that has been able to make lectures to specific for programmers branches of mathematic and ever to give a calculus and linear algebra on required to programmers level. And i told not about a discrete mathematic or theory of graphs. Its branches of mathematics we has for self-education as semester-wide home work. I told about much importent branches like a numerical methods, computational geometry, theory of games, mathematical theory of descigins, semiotics, theory of algorithmical complexity and so on wtihout wich any programming is nonsence. Nowaday Applicative Mathematic branch enlarged to IT faculty and Higher Mathematic branch included to it faculty.
    24. It's a pointer to class A int field. class A { public: int foo; }; class B : public A { public: void function() { // set pointer to class field int A::*pInt = &A::foo; // use pointer to modify some field A a; a.*pInt = 5; } };
    25. JoeJ

      Programming and Higher Mathematics

      This depends on the problem you want to solve. Often the math is trivial and the problem is just to make it fast, often the algorithm is trivial but the math has to be worked out and is not yet known. So by thinking you get away with bad math skills, you reduce your ability to solve problems, especially problems that are still unsolved and so worth to spend work on. It seems you wasted your time in this school - that nonsense is really hard to believe. (i made the same mistake - wrong school, and i still suffer everyday by learning math myself.) Maybe this school targets to build an army of web developers... something like that.
    26. I really like to add AI to my game in the form of behavior trees and have been reading about them. The primary thing I am "stuck" with is how to pass data. Some articles mention a blackboard that should be passed down the tree nodes so they can set fields on it, but this means for each leave task that needs some form of data the blackboard gets a field. I imagine a lot of leave leave tasks and some need many fields to set on this blackboard and this deviates from my perception of clean and scalable code. Are there other ways to handle this?
    27. Fulcrum.013

      Programming and Higher Mathematics

      Really algebra is only tool to design algorithm. also world algorithm comes from distorted "Al Khorezmy said:" - words by wich arabian mathematist Al Kharezmy began his matematical papers where describe step by step to solve different mathematical tasks and invent for it purposes to replace particular case specific numbers by variables names and have a universal formula to calculate result instead a single number . It same that nowadays we call textual description of algo. So algebra has born to serve a algo design.
    28. Ok so I had some code using the old DXSDK. I went to windows 10 and updated my code. I also made some changes to where i stored the vector that holds the vertex positions but thats pretty much it. Now my model is not showing up. So I ran renderdoc. Now renderdoc can see my vertices and indices and the finished mesh when I click the draw call...see the attached image. When I run from vs2017 i cant see anything except the background color. I thought it was because of where my camera was positioned so I changed that and I still can't see anything. The camera is sitting slightly back from the origin....shouldn't the model be there? That's where it was before I made the changes to the source to update it for windows 10. I made the model file and made no changes to it ever since it worked before. Here is the source code and shader: #include "Source.h" #include "DDSTextureLoader.h" //Global Declarations - Interfaces// IDXGISwapChain* SwapChain; ID3D11Device* d3d11Device; ID3D11DeviceContext* d3d11DevCon; ID3D11RenderTargetView* renderTargetView; ID3D11DepthStencilView* depthStencilView; ID3D11Texture2D* depthStencilBuffer; ID3D11Resource* tex; ID3D11RasterizerState * rasterState; ID3D11VertexShader* VS; ID3D11PixelShader* PS; ID3DBlob* VS_Blob; ID3DBlob* PS_Blob; ID3D11InputLayout* vertLayout; ID3D11Buffer* fbx_vertex_buf; ID3D11Buffer* fbx_index_buf; ID3D11Buffer* cbPerObjectBuffer; ID3D11ShaderResourceView* fbx_rc_view; ID3D11SamplerState* fbx_sampler_state; ID3D11ShaderResourceView* normal_rc_view; std::vector<MeshData> meshList; myConsole* con; //Global Declarations - Others// HWND hwnd = NULL; HRESULT hr; int Width = 300; int Height = 300; DirectX::XMMATRIX WVP; ///////////////**************new**************//////////////////// DirectX::XMMATRIX mesh_world; ///////////////**************new**************//////////////////// DirectX::XMMATRIX camView; DirectX::XMMATRIX camProjection; DirectX::XMVECTOR camPosition; DirectX::XMVECTOR camTarget; DirectX::XMVECTOR camUp; ///////////////**************new**************//////////////////// DirectX::XMMATRIX Rotation; DirectX::XMMATRIX Scale; DirectX::XMMATRIX Translation; float rot = 0.01f; ///////////////**************new**************//////////////////// //Create effects constant buffer's structure// struct cbPerObject { DirectX::XMMATRIX WVP; }; cbPerObject cbPerObj; D3D11_INPUT_ELEMENT_DESC layout[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "BITANGENT", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 } }; UINT numElements = ARRAYSIZE(layout); // Event table for MyFrame wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(wxID_EXIT, MyFrame::OnQuit) EVT_CLOSE(MyFrame::OnClose) wxEND_EVENT_TABLE() // Implements MyApp& GetApp() DECLARE_APP(MyApp) // Give wxWidgets the means to create a MyApp object IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { // Create the main application window MyFrame *frame = new MyFrame(wxT("Worgen Engine Version 0")); // Show it frame->Show(true); return true; } void MyFrame::OnQuit(wxCommandEvent& event) { // Destroy the frame Close(); } void MyFrame::OnClose(wxCloseEvent& event) { timer->Stop(); //Release the COM Objects we created SwapChain->Release(); d3d11Device->Release(); d3d11DevCon->Release(); renderTargetView->Release(); event.Skip(); } MyFrame::MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition) { // Create a menu bar wxMenu *fileMenu = new wxMenu; // The “About” item should be in the help menu wxMenu *helpMenu = new wxMenu; helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"), wxT("ABout this program.")); fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt - X"), wxT("Quit this program")); // Now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar(); menuBar->Append(fileMenu, wxT("&File")); menuBar->Append(helpMenu, wxT("&Help")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); // Create a status bar just for fun CreateStatusBar(2); SetStatusText(wxT("Welcome to Worgen Engine!")); nbHierarchy = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxSize(200, 300)); nbScene = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxSize(800, 600)); nbInspector = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxSize(200, 300)); timer = new RenderTimer(); console = new myConsole(wxSize(800, 300), wxTE_MULTILINE | wxTE_READONLY, this); timer->dxPanel = new MyDxPanel((MyFrame*)nbScene); wxPanel* hierarchyWindow = new wxPanel(nbHierarchy, wxID_ANY); nbHierarchy->AddPage(hierarchyWindow, "Hierarchy", false); nbScene->AddPage(timer->dxPanel, "Game", false); wxPanel* inspectorWindow = new wxPanel(nbInspector, wxID_ANY); nbInspector->AddPage(inspectorWindow, "Inspector", false); wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); sizer->Add(nbHierarchy, 0, wxEXPAND, 0); sizer->Add(nbScene, 1, wxEXPAND, 0); sizer->Add(nbInspector, 0, wxEXPAND, 0); wxBoxSizer* console_sizer = new wxBoxSizer(wxVERTICAL); console_sizer->Add(sizer, 0, wxEXPAND, 0); console_sizer->Add(console, 0, wxEXPAND, 0); SetSizerAndFit(console_sizer); timer->dxPanel->c = console; timer->dxPanel->aLoader = new LoadMesh("C:\\Models\\wally.fbx", console, meshList); timer->dxPanel->initDx(timer->dxPanel->GetHWND()); timer->dxPanel->initScene(); timer->Start(); } MyFrame::~MyFrame() { delete timer; } wxBEGIN_EVENT_TABLE(MyDxPanel, wxPanel) EVT_PAINT(MyDxPanel::OnPaint) EVT_ERASE_BACKGROUND(MyDxPanel::OnEraseBackground) wxEND_EVENT_TABLE() MyDxPanel::MyDxPanel(MyFrame* parent) : wxPanel(parent) { parentFrame = parent; } MyDxPanel::~MyDxPanel() { } void MyDxPanel::OnEraseBackground(wxEraseEvent &WXUNUSED(event)) { //empty to avoid flashing } void MyDxPanel::updateScene() { rot += .05f; if (rot > 6.26f) rot = 0.0f; DirectX::XMVECTOR rotaxis = DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f); Rotation = DirectX::XMMatrixRotationAxis(rotaxis, -rot); mesh_world = DirectX::XMMatrixIdentity(); } void MyDxPanel::render() { //Clear our backbuffer float bgColor[4] = {0.0f, 0.6f, 0.4f, 1.0f }; d3d11DevCon->ClearRenderTargetView(renderTargetView, bgColor); //Refresh the Depth/Stencil view d3d11DevCon->ClearDepthStencilView(depthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0); WVP = mesh_world * camView * camProjection; cbPerObj.WVP = DirectX::XMMatrixTranspose(WVP); d3d11DevCon->UpdateSubresource(cbPerObjectBuffer, 0, NULL, &cbPerObj, 0, 0); d3d11DevCon->VSSetConstantBuffers(0, 1, &cbPerObjectBuffer); d3d11DevCon->PSSetShaderResources(0, 1, &fbx_rc_view); d3d11DevCon->PSSetSamplers(0, 1, &fbx_sampler_state); d3d11DevCon->DrawIndexed(meshList[0].indices.size(), 0, 0); //Present the backbuffer to the screen SwapChain->Present(0, 0); } void MyDxPanel::OnPaint(wxPaintEvent& event) { wxPaintDC dc(this); updateScene(); render(); } void MyDxPanel::initDx(HWND wnd) { //Describe our SwapChain Buffer DXGI_MODE_DESC bufferDesc; ZeroMemory(&bufferDesc, sizeof(DXGI_MODE_DESC)); bufferDesc.Width = Width; bufferDesc.Height = Height; bufferDesc.RefreshRate.Numerator = 60; bufferDesc.RefreshRate.Denominator = 1; bufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; bufferDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED; bufferDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED; //Describe our SwapChain DXGI_SWAP_CHAIN_DESC swapChainDesc; ZeroMemory(&swapChainDesc, sizeof(DXGI_SWAP_CHAIN_DESC)); swapChainDesc.BufferDesc = bufferDesc; swapChainDesc.SampleDesc.Count = 1; swapChainDesc.SampleDesc.Quality = 0; swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; swapChainDesc.BufferCount = 1; swapChainDesc.OutputWindow = wnd; swapChainDesc.Windowed = TRUE; swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; //Create our SwapChain hr = D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, NULL, NULL, NULL, D3D11_SDK_VERSION, &swapChainDesc, &SwapChain, &d3d11Device, NULL, &d3d11DevCon); //Create our BackBuffer ID3D11Texture2D* BackBuffer; hr = SwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (void**)&BackBuffer); d3d11Device->CreateRenderTargetView(BackBuffer, NULL, &renderTargetView); //Describe our Depth/Stencil Buffer D3D11_TEXTURE2D_DESC depthStencilDesc; depthStencilDesc.Width = Width; depthStencilDesc.Height = Height; depthStencilDesc.MipLevels = 1; depthStencilDesc.ArraySize = 1; depthStencilDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; depthStencilDesc.SampleDesc.Count = 1; depthStencilDesc.SampleDesc.Quality = 0; depthStencilDesc.Usage = D3D11_USAGE_DEFAULT; depthStencilDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; depthStencilDesc.CPUAccessFlags = 0; depthStencilDesc.MiscFlags = 0; //Create the Depth/Stencil View d3d11Device->CreateTexture2D(&depthStencilDesc, NULL, &depthStencilBuffer); d3d11Device->CreateDepthStencilView(depthStencilBuffer, NULL, &depthStencilView); //Set our Render Target d3d11DevCon->OMSetRenderTargets(1, &renderTargetView, depthStencilView); } void MyDxPanel::initScene() { shaders(); generateBuffers(); setBuffers(0); setInputLayoutAndTopology(); setViewport(); setCameraInfo(); createConstantBuffer(); loadModelTexture("C:\\Models\\tex.DDS"); createSamplerState(); setRSState(); } void MyDxPanel::shaders() { //Compile Shaders from shader file HR(D3DCompileFromFile(L"Effects.fx", 0, 0, "VS", "vs_5_0", 0, 0, &VS_Blob, 0)); HR(D3DCompileFromFile(L"Effects.fx", 0, 0, "PS", "ps_5_0", 0, 0, &PS_Blob, 0)); //Create the Shader Objects HR(d3d11Device->CreateVertexShader(VS_Blob->GetBufferPointer(), VS_Blob->GetBufferSize(), NULL, &VS)); HR(d3d11Device->CreatePixelShader(PS_Blob->GetBufferPointer(), PS_Blob->GetBufferSize(), NULL, &PS)); //Set Vertex and Pixel Shaders d3d11DevCon->VSSetShader(VS, 0, 0); d3d11DevCon->PSSetShader(PS, 0, 0); } void MyDxPanel::generateBuffers() { D3D11_BUFFER_DESC indexBufferDesc; ZeroMemory(&indexBufferDesc, sizeof(indexBufferDesc)); indexBufferDesc.Usage = D3D11_USAGE_DEFAULT; indexBufferDesc.ByteWidth = meshList[0].indices.size() * sizeof(DWORD); indexBufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER; indexBufferDesc.CPUAccessFlags = 0; indexBufferDesc.MiscFlags = 0; D3D11_SUBRESOURCE_DATA iinitData; iinitData.pSysMem = &meshList[0].indices[0]; HR(d3d11Device->CreateBuffer(&indexBufferDesc, &iinitData, &meshList[0].indexBuffer)); D3D11_BUFFER_DESC vertexBufferDesc; ZeroMemory(&vertexBufferDesc, sizeof(vertexBufferDesc)); vertexBufferDesc.Usage = D3D11_USAGE_DEFAULT; vertexBufferDesc.ByteWidth = meshList[0].vertices.size() * sizeof(Vertex); vertexBufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; vertexBufferDesc.CPUAccessFlags = 0; vertexBufferDesc.MiscFlags = 0; D3D11_SUBRESOURCE_DATA vertexBufferData; ZeroMemory(&vertexBufferData, sizeof(vertexBufferData)); vertexBufferData.pSysMem = &meshList[0].vertices[0]; HR(d3d11Device->CreateBuffer(&vertexBufferDesc, &vertexBufferData, &meshList[0].vertexBuffer)); } void MyDxPanel::setBuffers(int i) { d3d11DevCon->IASetIndexBuffer(meshList[i].indexBuffer, DXGI_FORMAT_R32_UINT, 0); UINT stride = sizeof(Vertex); UINT offset = 0; d3d11DevCon->IASetVertexBuffers(0, 1, &meshList[i].vertexBuffer, &stride, &offset); } void MyDxPanel::setInputLayoutAndTopology() { HR(d3d11Device->CreateInputLayout(layout, numElements, VS_Blob->GetBufferPointer(), VS_Blob->GetBufferSize(), &vertLayout)); d3d11DevCon->IASetInputLayout(vertLayout); d3d11DevCon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); } void MyDxPanel::setViewport() { //Create the Viewport D3D11_VIEWPORT viewport; ZeroMemory(&viewport, sizeof(D3D11_VIEWPORT)); viewport.TopLeftX = 0; viewport.TopLeftY = 0; viewport.Width = Width; viewport.Height = Height; viewport.MinDepth = 0.0f; viewport.MaxDepth = 1.0f; //Set the Viewport d3d11DevCon->RSSetViewports(1, &viewport); } void MyDxPanel::createConstantBuffer() { //Create the buffer to send to the cbuffer in effect file D3D11_BUFFER_DESC cbbd; ZeroMemory(&cbbd, sizeof(D3D11_BUFFER_DESC)); cbbd.Usage = D3D11_USAGE_DEFAULT; cbbd.ByteWidth = sizeof(cbPerObject); cbbd.BindFlags = D3D11_BIND_CONSTANT_BUFFER; cbbd.CPUAccessFlags = 0; cbbd.MiscFlags = 0; cbPerObj.WVP = DirectX::XMMatrixTranspose(mesh_world * camView * camProjection); D3D11_SUBRESOURCE_DATA initData; initData.pSysMem = &cbPerObj; HR(d3d11Device->CreateBuffer(&cbbd, &initData , &cbPerObjectBuffer)); } void MyDxPanel::setCameraInfo() { camPosition = DirectX::XMVectorSet(-0.5f, -0.5f, 4.0f, 0.0f); camTarget = DirectX::XMVectorSet(0.0f, 0.0f, 0.0f, 0.0f); camUp = DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f); //Set the View matrix camView = DirectX::XMMatrixLookAtLH(camPosition, camTarget, camUp); //Set the Projection matrix camProjection = DirectX::XMMatrixPerspectiveFovLH(0.4f*3.14f, (float)Width / Height, 1.0f, 1000.0f); } void MyDxPanel::loadModelTexture(std::string path) { HR(DirectX::CreateDDSTextureFromFile(d3d11Device, L"C:\\Models\\tex.DDS", &tex, &fbx_rc_view)); } void MyDxPanel::createSamplerState() { D3D11_SAMPLER_DESC sampDesc; ZeroMemory(&sampDesc, sizeof(sampDesc)); sampDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; sampDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; sampDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; sampDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; sampDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; sampDesc.MinLOD = 0; sampDesc.MaxLOD = D3D11_FLOAT32_MAX; //Create the Sample State HR(d3d11Device->CreateSamplerState(&sampDesc, &fbx_sampler_state)); } void MyDxPanel::setRSState() { D3D11_RASTERIZER_DESC rasterizerState; rasterizerState.FillMode = D3D11_FILL_SOLID; rasterizerState.CullMode = D3D11_CULL_NONE; rasterizerState.FrontCounterClockwise = true; rasterizerState.DepthBias = false; rasterizerState.DepthBiasClamp = 0; rasterizerState.SlopeScaledDepthBias = 0; rasterizerState.DepthClipEnable = true; rasterizerState.ScissorEnable = true; rasterizerState.MultisampleEnable = false; rasterizerState.AntialiasedLineEnable = false; d3d11Device->CreateRasterizerState(&rasterizerState, &rasterState); d3d11DevCon->RSSetState(rasterState); } RenderTimer::RenderTimer() : wxTimer() { } void RenderTimer::Notify() { dxPanel->Refresh(); } void RenderTimer::start() { wxTimer::Start(10); } cbuffer cbPerObject { float4x4 WVP; }; Texture2D ObjTexture; SamplerState ObjSamplerState; struct VS_OUTPUT { float4 Pos : SV_POSITION; float2 TexCoord : TEXCOORD; }; VS_OUTPUT VS(float4 inPos : POSITION, float2 inTexCoord : TEXCOORD) { VS_OUTPUT output; output.Pos = mul(inPos, WVP); output.TexCoord = inTexCoord; return output; } float4 PS(VS_OUTPUT input) : SV_TARGET { return ObjTexture.Sample(ObjSamplerState, input.TexCoord); }
    29. Fulcrum.013

      Programming and Higher Mathematics

      What you will do in case google have no needed formulas? Also how you will understand how it formulas have to work ever in case it exists on google. And also how yo determine is it formuals applicable to your specific case? And how you will determine that its formulas optimal? And what you will do in case it formulas just will not work as expected just becouse your specific task conditions not fit conditions of numerical stability? For examlpe google please formulas how to calculate distance betwin lines in 4D space. Also most likely for most cases you will find a sets of differintial equations for integarting wich finite-difference scheme have to be estabilished first. Really it no ready solutions on google for something more complexive then simplified 2+2 addition. It ever no ready solutions into textbooks certified for universities. For most hard problems it usualy have a basic concepts of solution design, that usualy intuitively clear and without textbook. Just becouse hardest parts of any problem usualy subject of design and designed solutions is subject of know-how. For example i has read yerstaday a textbook by geometrical modelling authored by chief programmer of compass geometrical core. It contain 250 pages of exactly and full description of NURBS surfaces, operations over it, finding intersections schemas and so on methods that also applicable to many other fields and can be found from other sources , but for key problem - decompositing system of constraints equations to subsystems just a basic concepts of building evaluation tree and no any single word about specific to geometric modeling constrains context cases that can simplify a design of decomposition algo for set of possible geometrical constraints. Also as said one of top-manager of Google - main problem of Google company that it forced to hire a googlers instead a scientists and pray that thay able to produce quality software
    30. @DarkRonin The suggested code does not work. I still get skipped lines. Also they are not zero after AdjustWindowRect (wr.left is -8 and wr.top = -31) Added info: i get skipped lines in 1920x1080 (screen native) and all other resolutions in windowed mode also. Also if add 100 pixels in both dimension it still skips lines. Fullscreen works fine in all modes.
    31. NikiTo

      Programming and Higher Mathematics

      If there were a way to explain you how much i suck at algebra, you would not believe it. I use calculator for sums, just to be sure LOL I never so far had a problem with programming. And I've done some hardcore encryption(Galois Field math). Only thing you need is to understand the concept. Then you can use the formulas other people provide. You have to understand the concept. Programming is logical not mathematical. You do have to be intuitive at geometry for 3D. You have to visualize inside your mind the problem to solve. Then copy the formulas you need from google. In all the programming schools i were, we never were expected to know about math. On exams we were given the formulas we need and even an extra explication about the formulas. Our lectors always told us: "you don't need to be good at math in order to program. If math is so heavily used and so important in a company, they will have a mathematician aside from the programmers" Of course it is a plus to be good at math. It is a plus to be good at biology too. Not everyone is a McGyver. Don't torture yourself about having flaws. Programming is more about algorithms than about formulas. (i've lost 10 years because i was afraid to try programming. I was afraid because i have been told it requires lot of math. Then i tried it and it was super intuitive. I could have started to program 10 years sooner if i were not being told myths) (i've seen a guy who was very good at math, but was having problems to understand how a for-loop works...)
    32. Hi everyone, Stitched has been released for almost a year now and our game has gone through numerous great updates and revisions thank to feedback from everyone! To conclude a wonderful summer, our game is currently on sale for 30% off on Steam from September 17th to October 1st. Check us out here: Store.steampowered.com Also, we would want to showcase some of our artworks for our game. Below are some of the concept arts that we did in the past. Firstly, the main subject we wanted to focus on before any art is the primary color of the game. We decided to choose purple as it's a color that stands out and somewhat fitting in a horror game. Below is the original title screen and the finalized version of the title screen of Stitched. We original wanted to give Catherine long hair but decided against it because we feel the long hairstyle was done too many times. We wanted to give Catherine a unique look hence we decided upon the new shorter hairstyle. We also touch up on her expression to make the player see that Catherine is terrified. Thirdly, we wanted to emphasize the title of the game by making it glow with light purple color. The below three images represent design stage for the doll character in Stitched. The first image is the original sketch. The second image is an updated version to give the character a more serious tone. The final sketch is to give the character her color which include her hair, face, and dress colors. We went through a large amount of revisions for this character to get the right color, facial expression to match her personality. And lastly, check out some amazing fan art for our game through this youtube video! For anyone who is interested in our art. Check out our deviant art page here. For those who have further interest in our game, check out our website here and our Steam developer page here for future projects! Cheers! Fluffex Studios
    33. DarkRonin

      Conqueration

      Love it.
    34. It compiles on VC++ 2017 but it's anyone's guess what it actually does.
    35. Fulcrum.013

      Programming and Higher Mathematics

      So ever by government issued qualifications for programmers require a degree in applicative mathematic field. It is becouse on real development main task of programmer usualy sounds like as "just find a method to compute this f...ng digits properly". For examle today i'm developing a extended containers navigation and manipulations component. So main problem of debugin performed today can be specified as "just recalculate positions of this f...ng iterators properly", while global task for wich its component will be used tomorrow sounds like "just generate this f...ng jump-table of parser state machine properly". And so on every single day. And it not a whim of managers or boses. It just a way to get a solution. Becouse by main concept of CS any programm converts input sequence of symbols coded by input alpahbetta to output sequence of symbols coded by output alphabetta. For example video game get a user pressed keys codes and mouse position codes as input sequence and convert it to sequence of codes of pixel colors and sound volume codes for showing graphics and playing sounds, using a programm code as hard part and datapack as flexible part of conversion rules.
    36. Good Morning, Afternoon, or Evening, My name is Dalton Potter and I am a budding game developer looking to learn skills and develop a beautiful project me and my friend came up with a year ago or so and have refined ever since. The idea is a basically a mix of Final Fantasy and Zelda in terms of exploration and battle, but will throw in its own unique features to switch things up a bit. What we have in place so far is the main story and many connecting character back stories, a map of the over world (still not 100% confirmed however), how some of the main characters look (also not 100% confirmed), a few battle and puzzle mechanic ideas, general story progression, locations, a few beta music tracks, and lore. What we lack however is any solid assets or work done on it as neither of us have any expertise in game development, but have both unanimously agreed that this idea is too good to forget and pass up. We are currently looking for people to help us work on the project as time goes on and maybe, just maybe, it may grow into a full blown team of people working on a game and eventually sell it on Steam or other client services. Any replies to this topic will be read as soon as possible depending on my schedule. I have also attached a couple photos and sound files of some design concepts we have. I also have a Pastebin made of the entire story and main character back stories, as well as history into how the idea came to be, though I'll let the Pastebin be requested as needed in the future. Hopefully this project turns from being just an idea into something amazingly beautiful and playable......it just needs to be created that's all..... Thank you in advance, Dalton Potter P.S. The sound file, "Power and Prestige" is a song that sounds as though it could be used as a trailer theme, and "Curiosity" sounds as though it could be used on a farm at sunrise. Source of music was from YouTube, but the groups official site is as follows: http://floatingcloud.net/ Floating Cloud - Power and Prestige.mp3 Floating Cloud - Curiosity.mp3
    37. class __declspec(dllexport) A {}; How about google "VC export class"? It gives you https://msdn.microsoft.com/en-us/library/81h27t8c.aspx
    38. pInt belongs to B::function() . That's to say, its scope is limited in B::function() . Though it's a pointer to member of A.
    39. Fulcrum.013

      Programming and Higher Mathematics

      Here it slightly different situation. By one hand Engineer is a qualification in technical-related fields that confirmed by state university issued diploma of Specialist degree, after 5 years of university and defence of diploma project tesis. As stated on my Specialist diploma - "has obtained a Specialist of Applicative Mathematic and CS degree and confirmed qualification Engineer-programmer", that have a ISCED level 7 so similar to Master degree on English-speaking regions. In different of it Bachelour diploma that have a ISCED level 6 stated "has obtained a Bachelour of Applicative Mathematic and CS degree and confirmed qualification Technecian-programmer", . By other hand "engineer" is name of position that require a engineer qualification on related field, but often can be occupied by engineers of other fields, or in some cases by bachelours that continue university study of related field part-time.
    40. NikiTo

      Beginning developing

      It is not something you can hear often out there. Less with the recent mania to promote codding even in kindergartens. But I read some articles about autism and programming. Programming is teaching a person logic. But it teaches exact logic. In social life we need inexact logic. So some people could worsen their autism a lot if they start codding. This is not something you will hear often. You would not hear often people to talk about how chess game turns certain people crazy either. (out there organizations exist to help autistic people and they talk how autistic people are very good at programming....)
    41. DexterZ101

      Suggestion for choosing challenges

      Love the @GoliathForge Atari list ^_^y so we can port it when Atari VCS ( Atari Box ) comes out Nyaha : - D EDIT : Atari Adventure Challenge ; yeah before Lara was born we have Harry : - D 1. Pitfall 2. Jungle Hunt 3. Mountain King
    42. phil67rpg

      shooting bullets

      is there any tutorials or links that can help me with my problem?
    43. JWColeman

      Silly Input Layout Problem

      You're not wrong chuck, I finally got it working... Instance * instances; UINT instanceCount = 1; instances = new Instance[instanceCount]; D3DXMatrixTranslation(&instances[0].position, 100, 0, 0); D3DXMatrixTranspose(&instances[0].position, &instances[0].position); for (int i = 0; i < instanceCount; i++) { InstanceBuffer.data_container.push_back(instances[i]); } InstanceBuffer.Initialize(dev, D3D11_USAGE_DYNAMIC, D3D11_BIND_VERTEX_BUFFER, D3D11_CPU_ACCESS_WRITE); InstanceBuffer.Update(devcon); D3D11_INPUT_ELEMENT_DESC ied[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "INSTANCE", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 0, D3D11_INPUT_PER_INSTANCE_DATA, 1 }, { "INSTANCE", 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 }, { "INSTANCE", 2, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 }, { "INSTANCE", 3, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_INSTANCE_DATA, 1 }, }; hr = dev->CreateInputLayout(ied, ARRAYSIZE(ied), Shader->GetBufferPointer(), Shader->GetBufferSize(), &pLayout); Finally the shader multiplications you are mentioning: VOut VShader(float4 position : POSITION, float4 color : COLOR, float4x4 instancePosition : INSTANCE) { VOut output; // Apply all instance position translations //position.x += instancePosition.x; //position.y += instancePosition.y; //position.z += instancePosition.z; //output.position = position; //output.position = mul(position, world); // Apply world translation matrix output.position = position; output.position = mul(output.position, instancePosition); // apply instance translation matrix output.position = mul(output.position, projection); // Apply ortho projection matrix output.color = color; // Apply color from vertex input return output; } This draws my single instanced quad :).
    44. ChuckNovice

      Silly Input Layout Problem

      Well indeed you still have few misconception about instances it seems. Let's take a look at this part : output.position = mul(position, world); // Apply world translation matrix output.position = mul(position, instancePosition); // Apply instance translation matrix instancePosition is basically a world matrix there. You are multiplying twice in a row with a world matrix. One that come from your instance and one that come from your constant buffer. When you draw your stuff you are either using instancing or not. When not using instancing you should take the world matrix in the constant buffer. When using instancing you should take the world matrix in the vertex layout. Don't use both at the same time. You need 2 version of that vertex shader, one for when you draw with instancing and one for regular draws. EDIT: Nevermind you are actually overwriting the position and not using the result of the first multiply. Do you see anything at all on the screen? Did you make sure to transpose your matrix? How do you store the data in your instance buffer? What do your call to SetVertexBuffers look like? How do you issue your draw call?
    45. Yesterday
    46. JWColeman

      Silly Input Layout Problem

      Hey you got it man, that fixed the input layout problem, now unfortunately I don't think my shader is correct :(.
    47. SoldierOfLight

      Silly Input Layout Problem

      You're passing a hardcoded 3 as the number of elements. Maybe try _countof(ied) or ARRAYSIZE(ied).
    48. JWColeman

      Silly Input Layout Problem

      Okay, switched it up, makes sense what you said: Same error
    49. ChuckNovice

      Silly Input Layout Problem

      Between now and your first post you switched the format from DXGI_FORMAT_R32G32B32A32_FLOAT (float4) to DXGI_FORMAT_R32G32B32_FLOAT (float3). You are now assuming a 3x4 matrix. Put DXGI_FORMAT_R32G32B32A32_FLOAT back there for 4x4.
    50. Anri

      I think my game is so terrible

      Bewarned I'm writing this at the end of a busy day and I think I may have glossed over a few parts, so please do take the time to study the topic in detail and understand it... What you need to look up is what is known as a "surface" and the "flipping chain". Your screen is your "primary surface" and has its own block of memory. You are currently drawing to this block of memory, and as you are doing so, the monitor is refreshing the screen display with the contents of the primary surface - whether your drawing calls are finished or not. This is the cause of the flicker. Accessing the primary surfaces' memory is slow, so what you need is an off-screen block memory on which to do all your drawing operations, and when finished drawing the current frame, copy it to the primary surface with a single call. This is known as a "secondary surface" or "back buffer". The overall process is known as the "flipping chain", and can even add a third flipping surface for even smoother performance. However, a second surface is all you need to remove the flickering. This subject is very well documented on the internet and with a little googling you should easily find a python tutorial for this. And most will explain it far better than I have here! o_O
    51. FedGuard

      noob questions

      Thanks for those ideas and feedback!
    52. JWColeman

      Silly Input Layout Problem

      Thanks for the assist Chuck, I've made changes as you recommended but I 'm still getting the same errors: D3D11_INPUT_ELEMENT_DESC ied[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "INSTANCE", 0, DXGI_FORMAT_R32G32B32_FLOAT, 1, 0, D3D11_INPUT_PER_INSTANCE_DATA, 1 }, { "INSTANCE", 1, DXGI_FORMAT_R32G32B32_FLOAT, 1, 16, D3D11_INPUT_PER_INSTANCE_DATA, 1 }, { "INSTANCE", 2, DXGI_FORMAT_R32G32B32_FLOAT, 1, 32, D3D11_INPUT_PER_INSTANCE_DATA, 1 }, { "INSTANCE", 3, DXGI_FORMAT_R32G32B32_FLOAT, 1, 48, D3D11_INPUT_PER_INSTANCE_DATA, 1 }, }; You are in fact helping me understand the concept at work here. A float4 is 16 bytes, im trying to pass a D3DXMatrix which is 64 bytes, and the target data type is a float4x4, which is a float4 (16 bytes) * 4, which is 64 bytes. So I have to adjust my input layout accordingly, wouldn't it be nice if there was just a single DXGI_FORMAT for the D3DXMatrix? Anyways, Any idea why I might be getting the same error?
    53. I'm new to the scene and before I start on my much more ambitious modern FPS project, I want to make a flash game. I had an idea to make a flash based, online multiplayer, isometric 2.5D adventure game, and I have no f'n clue how. I'm trying Defold but I dont know how to import tiles and sprites. Let me make this short and too the point. I need someone to help manage how to make a game flash based, have save data for each player, have online multiplayer, and how I can import assets to the Defold editor. Project page here
  • Advertisement
×

Important Information

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

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!