Jump to content
  • Advertisement
    1. Yesterday
    2. I wouldn't recommend that. I'll hide this comment very soon. Please don't quote that.
    3. THE PROJECT INT is a 3D Sci-fi RPG with a strong emphasis on story, role playing, and innovative RPG features such as randomized companions. The focus is on the journey through a war-torn world with fast-paced combat against hordes of enemies. The player must accomplish quests like a traditional RPG, complete objectives, and meet lively crew members who will aid in the player's survival. Throughout the game you can side and complete missions through criminal cartels, and the two major combatants, the UCE and ACP, of the Interstellar Civil War. Please note that all of our current positions are remote work. You will not be required to travel. For more information about us, follow the links listed below. INT Official website IndieDB page Also follow social media platforms for the latest news regarding our projects. Facebook Twitter TALENTS NEEDED 3D Animator 3D Character Modeler 3D Environment Modeler Unity Engine Programmer REVENUE-SHARE The project is marching increasingly closer to be ready for our crowd-funding campaign. Being an Indie team we do not have the creative restrictions often imposed by publishers or other third parties. We are extremely conscientious of our work and continuously uphold a high level of quality throughout our project. We are unable to offer wages or per-item payments at this time. However revenue-sharing from crowd-funding is offered to team members who contribute 15-20 hours per week to company projects, as well as maintain constant communication and adhere to deadlines. Your understanding is dearly appreciated. TO APPLY Please send your Cover Letter, CV, Portfolio (if applicable), and other relevant documents/information to this email: JohnHR@int-game.net Thank you for your time! Please feel free to contact me via the email provided should you have any questions or are interested to apply for this position. We look forward to hearing from you! John Shen HR Lead Starboard Games LLC
    4. I think the question shows you're eager to learn. And you've looked at the employer's product with a critical eye.
    5. No, I'm saying it's most likely irrelevant to whatever is planned next. I would show interest in knowing more about what they are working on now. The guy you say will be interviewing you is looking to the future. He wants to go forward not dwell on the past. If you haven't seen it... https://lootkitstudios.wordpress.com/2019/02/09/so-whats-ahead/
    6. phil67rpg

      c# console snake game

      thanks duke I am doing the graphics c# because observer said it is easier. I am able to get the snake to move up and down and left and right but I want it to move smoother animation. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = this.CreateGraphics(); SolidBrush greenBrush = new SolidBrush(Color.Green); SolidBrush blackBrush = new SolidBrush(Color.Black); Rectangle rect_green = new Rectangle(340 + x, 280 + y, 10, 10); Rectangle rect_black = new Rectangle(330 + x, 280 + y, 10, 10); g.FillRectangle(greenBrush, rect_green); g.FillRectangle(blackBrush, rect_black); greenBrush.Dispose(); g.Dispose(); } int x = 0, y = 0; Random rnd = new Random(); private void timer1_Tick(object sender, EventArgs e) { int move = rnd.Next(1, 5); switch (move) { case 1: for (int i = 0; i <= 20; i++) { x++; } break; case 2: for (int i = 0; i <= 20; i++) { x--; } break; case 3: for (int i = 0; i <= 20; i++) { y++; } break; case 4: for (int i = 0; i <= 20; i++) { y--; } break; } if (MouseButtons == MouseButtons.Left) { } Invalidate(); } private void Form1_MouseDown(object sender, MouseEventArgs e) { } } }
    7. duke_meister

      c# console snake game

      You said you'd changed your mind from doing console, so I went for it Take a piece and analyse it. I'm happy to go over each aspect one at a time. Want me to do that? If so I'll add comments in the code. Much of it is relevant to your GDI project.
    8. hplus0603

      Some questions about UDP in C++

      1. In general, you can do fine with a single socket. Perhaps some OS/library combinations make throughput higher if you have multiple sockets open, but I haven't actually run into that in practice. Also, if you want to receive on multiple ports, you'd need multiple sockets. Finally, some red/green "always-up" deployment methods may need multiple sockets to support the roll-forward / roll-back scenarios. That's pretty esoteric, though. 2. Yes, in general, the two programs need to use different ports. Two different programs, using the same port, running on the same host, will not work well. Multiple processes can bind to the same UDP port on the same host (network interface, really) using the appropriate setsockopt() (REUSEPORT or REUSEADDR) and this is sometimes useful (see above.) 2b. If you want to run multiple instances of the server for the same game that binds to the same port on the same host, you will need to expose multiple IP addresses for the same network interface, which you typically do by creating multiple virtual interfaces that alias to the same physical interface. As long as none of the processes bind to the "every interface" address (IPADDR_ANY, or 0.0.0.0) and each process binds to its own virtual interface address, it'll work fine. Obviously, clients need to talk to the correct IP address. 3. For UDP, you still need to open a port, because if a packet shows up at the router, saying "hey, I'm here for port X," the router won't otherwise know where to forward that packet. There are ways around this, called "NAT punch-through," that requires collaboration with some shared host on the outside of the router for both client and server. Regarding how "real games" do this, you may end up with some kind of proxy or gateway, that receives UDP packets from all possible clients, and then maps the incoming packets to the appropriate address/port/process on the back-end by inspecting which client it came from, for example. That intermediate proxy would have to build its own session state for the game, even though UDP itself doesn't have session state.
    9. I have a few questions regarding using UDP in C++. Since UDP is connectionless, is there any reason for a UDP server to have more than one socket created? Let's assume you are running two programs on your pc that both use UDP. Program A and program B. What is stopping program A from reading all of the packets that are intended for program B to receive before program B can read them? Is it just the specific port that is originally used when the socket is bound? If this is the case, how can you run multiple instances of a game that uses UDP if they are all set up to use the same designated port? For TCP, if you want to host a server you have to open ports through your router for the port your server will use for listening. Is this not required for UDP since no actual connection exists? If it is not required, why is there an option to forward ports for UDP in router configurations?
    10. I made a project for Visual Studio 2015: SortFunctions.zip This project will show you how set up GoogleTest and run simple unit test. I set up already. You need to: open the solution select your version of VS, for example VS 2017 instead of VS 2015 (see screenshot below) set SortFunction_UnitTests project as StartUp project press Ctrl+F5 to run unit tests I set up it like this: I created the "Libs" folder I copied the "gtest-1.8.1" folder to the "Libs" folder I opened Setting of the project and add these lines to "C/C++" -> "General" -> "Additional Include Directories": Note. If you have another version of VS than before you will run unit tests you need to select VS 2017, like in this screenshot: This solution include two projects: SortFunctions SortFunctions_UnitTests SortFunctions project has two files: SortFunctions.h #pragma once extern void bubbleSort(int *array, unsigned int amount); extern void countingSort(int *array, unsigned int amount); SortFunctions.cpp #include "SortFunctions.h" void bubbleSort(int *array, unsigned int amount) { } void countingSort(int *array, unsigned int amount) { } SortFunctions_UnitTests project has tests. For example, this is the "bubbleSortTests.cpp" with two tests. The first test is for positive numbers and the second test is for negative numbers: bubbleSortTests.cpp #include <gtest/gtest.h> #include "SortFunctions.h" TEST(bubbleSortTest, AllPositiveElements) { // Arrange const unsigned int amount = 5; int actualArray[amount] = { 5, 3, 10, 2, 7 }; int expectedArray[amount] = { 2, 3, 5, 7, 10 }; // Act bubbleSort(actualArray, amount); // Assert for (size_t i = 0; i < amount; i++) { ASSERT_EQ(expectedArray[i], actualArray[i]); } } TEST(bubbleSortTest, AllNegativeElements) { // Arrange const unsigned int amount = 5; int actualArray[amount] = { -5, -3, -10, -2, -7 }; int expectedArray[amount] = { -10, -7, -5, -3, -2 }; // Act bubbleSort(actualArray, amount); // Assert for (size_t i = 0; i < amount; i++) { ASSERT_EQ(expectedArray[i], actualArray[i]); } }
    11. tyree

      run attack

      character L rue https://youtu.be/UwsQx9zkJ6k
    12. This question concerns OpenGL. I have found some code for checking the y value with a grid to place an object on a mesh (a type of collision detection). However, I want to check the height over and over again to change the velocity of the ball depending on the height of the changing y value. How do I repeatedly check every height, or is there a different way? I'm using C++. Thanks, Josheir
    13. For the vertices, change Z to slightly above 0
    14. desc.DepthStencilState.DepthEnable = false; /**< disable depth testing */ desc.DepthStencilState.StencilEnable = false; /**< disable stencil testing */ This is pretty unstandard to do. Check if your driver is not crazy by enabling at least depth buffer. (Also the comments are inappropriate, it does not disable depth testing as there is a command call in pipeline to do that any time, in desc it creates depth-buffer-less back buffer) Also check your scissor test values
    15. Hello there ! Today I want to share with you my footsteps sound effects. This is just a selection among a long list of footsteps that I have in my collection. In this list you will find of people wearing different sort of equipment like armors, chain mails, and space suits or traditional clothes walking on surfaces like snow, sand, concrete, gravel, water, wood and so on. Don't forget to check out my website and subscribe to my newsletter to get some really cool free sounds all along the year: www.ogsoundfx.com
    16. As I understand it, @fleabay says that the person doing the interview may not know that particular detail at all. If you have N persons working on a game, it's quite fair to say that anyone has deep knowledge about 1/N part of the game (as a pessimistic estimate), ie (N-1)/N part of the game, the person knows less to nothing about.
    17. phil67rpg

      c# console snake game

      well duke thanks for the code but I cant learn by copying someone else code. let me work on what observer has sent me. I can only digest so much code at one time.
    18. Well the guy interviewing me is the founder and developer himself of the game. So you're saying that it would reflect negatively on my part if I start questioning his design practices? My intention was to show how much I know in a form of a question. Man glad I asked before hand.
    19. Kylan Haffie

      Some reviews for your game!

      Hi Kapitoshka, As a Student Game Developer, I am always looking for new ways to improve my game and to recieve feedback from players. Would you be interested in reviewing a free android game? It's called Leapy Frog and available on the Google Play Store (Link to page). Here is a brief description; Let me know how you feel, Kylan Haffie
    20. kapitoshka765

      Some reviews for your game!

      Hello! Im here to make kind a trade with you. I can make you some real reviews that could let you know, what you need to fix or add. From you i need only some keys of your games(only you can decide how much). So, thats all, have a nice day!
    21. Here is my first result, the arch bridge use case I was talking about, in a "slightly" unrealistic way 😀 Since the new version of the game has no 3D interface yet, I exported this generated mesh from the game to a Wavefront .obj file and rendered it with Blender. The mesh is generated from a hand-made straight bridge model piece with one arch and a half-pillar on each end (see second screenshot below). That piece is repeated and curved to follow the track. The mesh is not just rotated as a whole, its vertices are displaced to "bend" the mesh, fitting the curvature of the track- that's not very well visible in that image).
    22. Hi, I added you on Discord, I'm interested on a Java dev position
    23. I wouldn't ask questions about a game that was already released. Do you even know if the person(s) interviewing you would know how that game was designed/developed?
    24. I want to have some more originality to my rpg classes for a tactical rpg. These are my names for now, and they are a little bit too much standard... The names come from the architypical role I want that class to fill in the game, but yeah, any idea of name variations? Strong frontliners: Templar Barbarian Cleric (healer and knight sort of. Paladin style) Black knight Medium range, agility based: Mercenary (soldier type, lots of weapon flexibility) Assassin Ranger (outdoorsman type of class) Archer (specialist in bows and crossbows) Squishy magic users: Sorcerer (classic damage class) Priest (support and healing) Warlock (dark magic)
    25. Hi guys, I'm a little nervous about this interview that I'm about to go for next week, and I'm planning questions to ask to the employer. I'm not sure if those questions are spot on or offensive? While watching how the game works online, I came up with a few questions: I can see that drawing a line from ship to landing spot was done using a line renderer component, but did you also use a Navigation component to make the ships follow the line to the landing spot? I've also noticed that the line drawn gradually changes to their respective colors. Is there some error checking that happens during that time frame to make sure the color of the ship matches the color of the landing spot? I'm applying for LootKit Studios interview, and they have this game already established for the PC called Cosmic Control. They are looking for an Unity developer. I'm trying to ask questions regarding how their game works. Would it back fire on me in some way or does it show that I'm interested in the project?
    26. = {} doesn't give you defaults. You probably want CD3DX12_<state object type>(D3D12_DEFAULT) from d3dx12.h. Not sure if that's the problem, but it's the first thing that jumped out to me.
    27. Gabz

      Special Effects For Games

      Unique Toon Projectiles Vol.1 - Showcase Cartoon projectiles are awesome! Had a blast creating this package, check it out! WebGL Demo Asset Store Patreon Enjoy & Thank you!
    28. Irusan, son of Arusan

      Question about making meshes for spritesheets

      Er, actually, I misunderstood slightly. Listen to Zakwayda
    29. Hello there! Welcome to this installment of your favourite Weekly Update blog! I'm gonna say this outright: there are two new mechanics and some freshen aesthetics too! So let's get right to it! Alt Fires First up, let's talk about that lonely right mouse button. Previously that button was used to trow crystals around, but due to the previous update, there's no more crystal trowing anymore. This made right click very lonely indeed. To remedy this I've decided to implement secondary actions to weapons. For melee weapons, it's a blocking mechanic while in range ones it's a zoom mechanic. Guarding In melee weapons, the secondary action is some kind of guard. It doubles your defence stat while pressing and holding the secondary action button. You can block any actual attacks, both melee and ranged too. But there's more! Parry Another possible thing is to parry an attack. To do this the player needs to let go of the secondary action button precisely as an enemy attack. Unlike guarding, this technique mirror back the attack to their opponent. This is extremely gratifying to pull it off, but all of this needs to be planned ahead, as you only get a couple of frames to parry an attack. Also, you cannot do a quick parry. If you quickly let go of the secondary action button you will instead get punished by not only not doing a parry but also have a long cooldown too. parry.mp4 Zoom Secondly, range weapons (such as bows and guns) also get a secondary action as some kind of zoom. While holding the secondary action button the player's view will zoom in, making it easier to aim. While zoomed in, the mouse sensitivity will be greatly reduced, helping along with the aiming. There are no statistical benefits with zooming whatsoever. It's just really useful when you're having bad aim. Like guarding, getting in and out of it will induce a longer cooldown, so don't screw around too much! The Jungle Secondly, there's also been some kind of aesthetic upgrades, especially to the first level. Basically, I've changed my prop algorithm to add support for level-specific ones. This effectively meant that different props will appear in different levels, making each level feel a little bit different from each other. Right now I'm focusing on the jungle one, so let's see what's up... Super Ferns First new prop is the super ferns. In rainforests (the main type of forest casually associated with jungles), there is a lot of types of perennial vegetation, especially ferns. So it was a no-brainer to include those in the game (especially for the first level). Luckily, I already fully modelled a leaf of those type of ferns. It was just a matter of merging several duplicates of that model and boom, got yourself a rainforest fern. take a look : Anthurium Sagittatum Another really striking rainforest plant that I've fallen in love with is the Anthurium sagittatum plant. As you can see their leaves got a really distinctive shape that I just got to include in the game. Here's what I got: The Liana is back Also, the liana is back from the dead! It previously used as a placeholder to test my room algorithm, but now it's back in full force! With the new shader and Ambient Occlusion, I've got to say that it looks a whole lot better than previously. And with all those new props the jungle level slowly starts to look a whole lot like a jungle: And I'm technically not done yet! Minor Updates The refactor continues! I was able to shed about 10 MB whit all that duplicated code removed. With all those duplicated codes removed, it's now a whole lot cleaner. I've even managed to remove some typos and duplication corruptions here and there too. Fixed a bug with the animation state machine not being properly set up, meaning that attacks and guarding can override each other. Fixed a bug with 3D catenary slopes (like lianas and bridge ropes) not ending correctly. Upgrade the double-sided shaders to have better lighting when the geometry's normals are facing away from the camera (i.e. when we're looking inside the mesh) Also added some two-sided shading to appropriate models too! Fixed some problems with the level mesh generator generating meshes where it shouldn't. Removed most lighting probes references to static assets (because, you know, procedural generation) Next Week So next week I'm going to continue with the level-specific props and whatnot while looking at bugs too. I'm still planning to have something by the end of the month, or maybe by mid-March if there's any holdup, but we'll see. Otherwise, it's the usual suspects. So that's pretty much it! See you next week!
    30. Something I just noticed is this: overlap.set(overlap.x < overlap.y ? overlap.x : 0, overlap.y < overlap.x ? overlap.y : 0); It seems to me that if overlap.x and .y are equal, you'll get (0, 0), which is incorrect. As such, it seems <= should be used rather than <. Other than that, it may be that all I can say is that your code seems correct. However, I think I missed the above issue (assuming I'm right about it being an issue) the first time I looked at the code, so it's possible I'm missing something now as well. Maybe someone else will be able and willing to offer 100% confirmation that the code is correct, but due to the risk of making a mistake myself, I'm hesitant to do so. I certainly understand your desire for certainty that your algorithm is correct. One thing I will say is that if you don't feel sufficiently confident in your current approach, you could implement the test in a perhaps more traditional way. This might allow you to more easily check your code against other examples. Also, although I doubt it matters in practice, your code takes a 'two-phase' approach that may involve a little unnecessary work, whereas a 'traditional' approach would typically perform the separating axis tests and track/compute the MTV at the same time. If you haven't done so already, you might be able to find some good example implementations by searching for 'sat mtv' or similar terms. [Edit: I should probably add that using <= as I suggested could result in the intersection being resolved along both axes. The traditional approach always resolves the intersection along only a single axis (to the best of my knowledge at least). If you want to stick with your current approach, you might consider selecting an axis exclusively, as I think is more typical.]
    31. https://www.youtube.com/watch?v=28K0oF-xZvU Song Title: "Alchemy" Composed and produced by EL PRASO 2019 Graphics: The Alchemist in Search of the Philosopher's Stone, by Joseph Wright, 1771 ________ #orchestral #instrumental #elpraso
    32. This may be in part a repeat of what Irusan said (I'm not sure). Assuming I'm understanding your question correctly (which I may not be), you don't need to rely on eyeballing to get the results you want. You can compute exact dimensions (e.g. for mesh data or transform scaling) by computing the aspect ratio of the source graphic and creating quads with the same aspect ratio (your mention of dividing width by height hints at this). That may seem obvious I suppose, so apologies if I'm misunderstanding the question. There are various ways you could do it. You could use multiple meshes, as you mentioned. That could result in multiple small meshes and an increase in the number of draw calls, but that might not be an issue, depending on the circumstances. Another approach that's fairly common (as far as I know at least) is dynamic batching with streamed mesh data.
    33. upallinsky

      My first OST | Feedback please

      Thx so much!) Maybe later i add some new track.
    34. Presenting DungeonBot3000: It's an ARPG, in the vein of Diablo or Path of Exile. You play the role of a small prototype bot waking from hibernation after almost 700 years, in order to carry out your final directive: exterminate the Cult of Gamed'ev. Challenge Criteria: Menu: It's there. You can press ESCAPE at any time to instantly quit the game. Also, when playing, you can return to the main menu, but to do so you have to die, at which point you are given the option to Respawn, Return to Menu, or Exit Game. Labyrinth: 10 levels of randomly generated maze. The mazes are generated using the Depth First Search maze algorithm, meaning lots of dead ends and few branching intersections. Some more maze variety would have been nice. Walls count as stationary obstacles, enemies count as moving obstacles since they can block your movement. The end goal is to reach Level 10 and destroy the bosses Khawk and jbadams. I haven't managed to do it yet at current numeric balance levels, but I also need to 'git gud'. Enemies: Enemies come in 4 flavors: Users are the cannon fodder mobs upon which you will grind to gear up. Small, wearing white shirts, and generic, they represent the faceless hordes of the Cult of Gamed'ev. Moderators are the next step up. They are named mobs, with names randomly chosen from the list of gamedev.net moderators. You can recognize them by their red shirts and larger size. Moderators can roll with 3 random modifiers. Emeritus mobs are next. They are even larger still, and are recognizable by their purple color. Even more dangerous than moderators, they can roll with 4 random mods. Staff are the final enemy types. There are only 2 variants: Khawk and jbadams. They are the end-game bosses, and are found only on Level 10 of the dungeon. They have custom attacks (Khawk uses a shoulder-mounted fire grenade launcher, jbadams swings a Ban Hammer) and can have up to 5 random mods. This makes them quite dangerous, as they pretty much always have Berserk and Quick, Life Leech and Life Regen. You can't kill them, and worse you can't escape them. Items and Loot: All enemies have a chance to drop randomized loot. Loot comes in 3 varieties: Blades, Lasers and Shells, to provide offensive boosts to your attacks, and defensive boosts to your character. For the Credits requirement, I implemented an Energy value. Energy accumulates over time, at a base rate of 1 per second. There are random mods on items that can boost this rate. You spend Energy slowly when using your attacks; you can also spend Energy using Gambling. Currently, Gambling is hacked into a button on the main interface. If you have at least 400 energy, click the button to spend 400 and roll a random item. Gambling draw from the full mod tier pool and from the full pool of random item mods, so you can get end-game ready equipment this way. Probably faster to just play to get equipment, though. Visual: Top-down 3D pseudo-isometric ARPG viewpoint. Drab gray dungeon textures. Enemy models thanks to MakeHuman, player model thanks to Blender. Audio: Only a single track, courtesy of Gravity Sound. The sound effects include some of the effects shipped with Urho3D, and a few random sound samples obtained from OpenGameArt. Sound design theme can be summed up as 'cheesy'. Notably lacking is a UI with slider bars to adjust volume. Ran out of time. GameDev reference: The whole thing. You play a robot tasked with killing gd.net members. Super clever! And certainly not a way for me to end up on some kind of watch list! I really only did it this way because I wanted to use MakeHuman to cut down a lot of modeling work, so I needed a reason for a bot to be killing people. Logical. Playing: Use Left Mouse Button to move, use stairs and pick up loot. Use Right Mouse Button to attack. 'q' and 'w' switch between Spin Attack and Laser Beam attack. Hover over items to compare with currently-equipped items for that slot. Left-click on an item on the ground to equip it, dropping your currently-equipped item on the floor. Try not to die, but if you do you can Respawn to retry the current dungeon level. You get to keep your equipment if you Respawn, you'll lose it if you return to main menu.
    35. I'm new to DirectX12. I've read document about DirectX12 for some days and now I just want to use it to draw a triangle. But it's not work! I used PIX to debug the program and I found that my pixel shader has no output!. I don't know if there's something wrong with my Pipeline State Object settings. this is the function that create the PSO /** vs and ps are indices of shader resource which have been compiled with dxc.exe in sm6 and stored in a map called shaders */ void Renderer::CreatePSO(uint32_t vs, uint32_t ps) { D3D12_INPUT_LAYOUT_DESC inputDesc; D3D12_INPUT_ELEMENT_DESC pos; pos.SemanticName = "POSITION"; pos.SemanticIndex = 0; pos.Format = DXGI_FORMAT_R32G32B32_FLOAT; pos.InputSlot = 0; pos.InputSlotClass = D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA; pos.AlignedByteOffset = D3D12_APPEND_ALIGNED_ELEMENT; pos.InstanceDataStepRate = 0; inputDesc.NumElements = 1; inputDesc.pInputElementDescs = &pos; D3D12_RASTERIZER_DESC rasterDesc = {}; /**< use default value */ rasterDesc.FillMode = D3D12_FILL_MODE_SOLID; rasterDesc.CullMode = D3D12_CULL_MODE_NONE; /**< disable cull */ rasterDesc.DepthClipEnable = false; D3D12_GRAPHICS_PIPELINE_STATE_DESC desc = {}; desc.pRootSignature = mRootSignature.Get(); ID3DBlob* const vsb = shaders[vs].Get(); ID3DBlob* const psb = shaders[ps].Get(); desc.VS.BytecodeLength = vsb->GetBufferSize(); desc.VS.pShaderBytecode = vsb->GetBufferPointer(); desc.PS.BytecodeLength = psb->GetBufferSize(); desc.PS.pShaderBytecode = psb->GetBufferPointer(); desc.StreamOutput = {}; desc.BlendState = {}; desc.InputLayout = inputDesc; desc.SampleMask = 0; desc.RasterizerState = rasterDesc; desc.DepthStencilState = {}; /**< use the default value */ desc.DepthStencilState.DepthEnable = false; /**< disable depth testing */ desc.DepthStencilState.StencilEnable = false; /**< disable stencil testing */ desc.IBStripCutValue = D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED; desc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; desc.NumRenderTargets = 1; desc.RTVFormats[0] = DXGI_FORMAT_R8G8B8A8_UNORM; desc.DSVFormat = DXGI_FORMAT_UNKNOWN; /**< since there is no depth stencil buffer */ desc.SampleDesc.Count = 1; desc.SampleDesc.Quality = 0; desc.NodeMask = 0; desc.CachedPSO = {}; desc.Flags = D3D12_PIPELINE_STATE_FLAG_NONE; if (FAILED(mDevice->CreateGraphicsPipelineState(&desc, IID_PPV_ARGS(&mPSO)))) throw("create pipeline state failed"); } And this is the function that setting command list for each frame void Renderer::Run() { WindowBase::MainLoop = [this](float) { /** Command List setting for each frame */ mCmdList->Reset(mCmdAloc.Get(), nullptr); mCmdList->SetPipelineState(mPSO.Get()); /**< Which is created throgh Function CreatePSO */ /** A constant buffer in the heap that I never use within my shaders */ D3D12_GPU_DESCRIPTOR_HANDLE gpuHandle = mBufDescHeap->GetGPUDescriptorHandleForHeapStart(); ID3D12DescriptorHeap* heaps[] = { mBufDescHeap.Get() }; mCmdList->SetDescriptorHeaps(1, heaps); mCmdList->SetGraphicsRootSignature(mRootSignature.Get()); mCmdList->SetGraphicsRootDescriptorTable(0, gpuHandle); /** Vertex And Index Buffers setting */ mCmdList->IASetVertexBuffers(0, 1, &mVtxBufView); mCmdList->IASetIndexBuffer(&mIdxBufView); mCmdList->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); /** Viewport and Scissor Rect settings. mWidth = 300 and mHeight = 300. */ D3D12_VIEWPORT viewport = {}; viewport.Height = mHeight; viewport.Width = mWidth; viewport.MaxDepth = 1.0f; viewport.MinDepth = 0.0f; viewport.TopLeftX = 0; viewport.TopLeftY = 0; mCmdList->RSSetViewports(1, &viewport); D3D12_RECT scissorRect; scissorRect.bottom = mHeight; scissorRect.right = mWidth; scissorRect.top = scissorRect.left = 0; mCmdList->RSSetScissorRects(1, &scissorRect); D3D12_RESOURCE_BARRIER barrier; barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE; barrier.Transition.pResource = mRtvs[mSwapChain->GetCurrentBackBufferIndex()].Get(); barrier.Transition.Subresource = 0; barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT; barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET; mCmdList->ResourceBarrier(1, &barrier); D3D12_CPU_DESCRIPTOR_HANDLE rtvHandle = mRtvDescHeap->GetCPUDescriptorHandleForHeapStart(); rtvHandle.ptr += mRtvDescHeapSize * mSwapChain->GetCurrentBackBufferIndex(); static float clearColor[] = { 0.2f, 0.4f, 0.6f, 1.0f }; mCmdList->ClearRenderTargetView(rtvHandle, clearColor, 0, nullptr); /** no depth stencil buffer here, since i don't want to use depth testing */ mCmdList->OMSetRenderTargets(1, &rtvHandle, false, nullptr); mCmdList->DrawIndexedInstanced(3, 1, 0, 0, 0); barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET; barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PRESENT; mCmdList->ResourceBarrier(1, &barrier); mCmdList->Close(); ID3D12CommandList* list[] = { mCmdList.Get() }; mCmdQue->ExecuteCommandLists(1, list); mSwapChain->Present(1, 0); /** Waiting until above commands were executed */ synchronizationCPU(mCmdQue.Get(), mFence.Get(), mNextFenceValue, mFenceEventHandle); }; win->Run(); /** start window's main loop */ } And here is my simplest vertex shader and pixel shader(I used dxc.exe to compile it in Shader Model 6_0) ///////////////////////////////// // VERTEX SHADER ///////////////////////////////// float4 main( float3 pos : POSITION ) : SV_POSITION { return float4(pos, 1.0f); } ///////////////////////////////// // PIXEL SHADER ///////////////////////////////// float4 main() : SV_TARGET { return float4(1.0f, 1.0f, 1.0f, 1.0f); } Vertex buffer and Index buffer are also very simple std::array<float, 9> VtxData = { -.5f, 0.0f, 0.0f, 0.0f, .5f, 0.0f, .5f, 0.0f, 0.0f }; std::array<uint32_t, 3> IdxData = { 0, 1, 2 }; By the way, I have used the debug layer and there is no error or warning message. When I try to use PIX to debug the pixel that should be inside the triangle, it warn me that "Shader Debugging returned no invocation records. Check that your selected pixel, vertex, or thread exists and was executed on this draw call". My Vertex Shader has the correct output which should not be culled anymore Hope anybody can give me some suggestions to do more test. Thanks!!! (Seriously, DirectX12 is really harder than DirectX11...)
    36. JTippetts

      DungeonBot3000: Postmortem

      I've gotten done about all I'll be able to on this project before the deadline. It was pretty fun to do, even if I didn't end up with as much time for it as I would have liked. Still, I did manage to implement all requirements, so I have that going for me which is nice. The zip file is live now on the project page: You can watch some current gameplay (with lots of me dying) here: Be warned: lots of deaths. I'm kinda terrible at my own game. So, postmortem. I've been tinkering with isometric dungeon crawlers and ARPGs off and on since I played Diablo 1 back in the late 90s, so I've gotten a bit of practice at some things. Still, this effort managed to teach me quite a bit. I didn't reuse much of that old code; almost everything this time was written from scratch for this project. The game is written using the Urho3D engine, using the OpenGL backend. Usually I write mostly in Lua, but this time it's straight C++. The data files come as a mix of XML and JSON documents. The premise of the game is that you play an experimental battle robot from centuries ago, tasked with eliminating the evil Cult of Gamed'ev. This cheesy lore skin, of course, satisfies the "minimum one gamedev.net reference" requirement. The game is an ARPG. You have access to 2 skills (I had hoped for more, but ran out of time): a spinning blades attack (akin to the Whirlwind skill of Diablo 2 barbarians, or Cyclone from Path of Exile) and a channeled laser beam attack. These skills are boosted by equipping a Blade (for the spin attack) and a Laser Beam(for the laser, obviously). Items are randomly generated, can have multiple mods in classic ARPG style, and are gained by killing mobs. Currently, there are 3 types of items: Blades, Lasers and Shells, and they can draw from a fairly broad pool of random modifiers including Increased Life, Life Leech, Damage Reduction, etc... Items come in Normal(white), Magic(blue), and Rare(yellow) varieties. There are also 4 base types for each, with each base type being more powerful than the previous ones, and hence only dropping on lower levels of the dungeon. I wasn't able to implement an inventory system in time, so to equip items you simply click on them in the world and the item you click on will replace the one you are currently using in that slot. Hovering over an item on the ground will show info boxes for both the item you are looking at and the one you are already using in order to compare. You progress through a maze that consists of 10 labyrinthine levels. Stairs up/down are used to transition between levels. Each level is populated by a random assortment of Users (regular gamedev forum members, non-named), Moderators (larger, redder, and having a small number of random mods; named based on the current gamedev.net moderator list), Emeritus (even larger, purple, and with more mods; named from the GDNet Emeritus member list) and Staff (green, very large, and named, only 2 variants: Khawk and jbadams). Khawk and jbadams reside on the very bottom, Level 10, of the dungeon. As you progress through the floors, mob density grows larger. As well, the mobs scale based on the dungeon level, in both health and damage dealing, so that the very last level is quite dangerous indeed. What went right: Lots of things really came together on this project: I drew inspiration for a stats container system from my Goblinson Crusoe project, implementing a system whereby I can have stats drawn from various sources, that all work together to provide complex systems from simple parts. The combat system is definitely something I'd like to flesh out more fully in the future. What went wrong: @Rutin kindly found a crash bug on level transition late last night, almost at zero hour. I was able to fix it, but due to the time constraints there are a lot of other sloppy things in this project that need to be refactored. I did a last-minute revamp of the game state handling system to fix this bug, but there are certainly other bugs lying in wait. Also, balance is sort of ROFL. I have managed to get to L10 using Blades, with lots of death and respawning (luckily, if you respawn you keep your equipment and restart on a fresh instance of your current level). I haven't made it that far with lasers yet, and I haven't managed to kill Khawk or jbadams at the current numerical values yet. They roll with 5 random mods, so they almost always end up with both Quick and Berserk, which when coupled with Life Leech and Life Regen, make them basically unkillable at current power levels. Someone out there might have better luck/skill/determination than me, though, so if you manage to kill them let me know. The UI is rudimentary-to-nonexistent. I hacked the bare minimum to get by, but it's not very user friendly. Luckily, it's an ARPG so all you really gotta remember is: Right Mouse Button to kill, Left Mouse Button to loot or RUN AWAY! You can use 'q' and 'w' to switch between Spin Attack and Laser Beam. Given more time, I wanted to implement at least an inventory screen to manage equipment, but alas... Mobs are not varied in their attacks. Users, Moderators and Emeritus all do just a single Kick attack. I If I get a chance today before the deadline, I might try to add a little bit more variety to their attacks. Khawk and jbadams have custom attacks, at least. Other details: For the Credits, I implemented an Energy system. You use Energy when you attack, slowly, but you can also spend it using a button strategically placed in the upper righto corner, to gamble on an item. This gamble rolls an item from the full pool of item bases, and rolls it at Level 10 so you can potentially get any mod. I've never gotten anything that useful from it, though. I had intended to make gambling reachable by using a kiosk of some sort in-game, but ran out of time.
    37. Hi there, brand new to the forum, and have a few questions. I've been meddling with the idea of creating my own game, and finally have the time, money and inspiration to get started. But I need some advice on what I should be using to achieve my dream of creating a game. Concept The concept I have is to create a 2D turn-based, top-down space strategy game, in the elk of Space Empires III and IV, but also combining elements I liked from other titles, like StarDrive 2, Stellaris and Distant Worlds. I like the idea of 2D as it means I don't have to worry about creating models, and adds an easy element of mod-ability for myself and others who may play the game. There are loads of elements I'd like to add but need to start with the basics. What do I need? First question is 'what is the best programme or programmes to use to realise this dream?' I'm new to the actual design and programming side of things, so need some pointers on what I need to learn. I know this is a very lofty 'first project', and to be fair, it probably won't be my first project - I'll likely develop loads of other things to learn the basics before getting to the core of what I want to make, but I need to start somewhere. Elements I need to develop So, a little more info may be needed on what I'm wanting to achieve. The core of it is a strategy game set in space where you manage an empire of some description, explore the galaxy, colonize worlds and fight other AI/player empires. I envision people designing their ships with Stellaris style simplicity, but one that also allows you to customise your firing arcs, so you could have nearly all your weapons forward (like Klingon's, Shivans, etc) or more balanced. Combat I see as again top-down, but in real time (could be harder than I think, but willing to aim high). As you can see, I've got an idea of what I want, but no idea how to get there. Any help anyone could provide would be most appreciated! I'm aware of creation tools like Unity, but I'm not sure if that would be the appropriate tool for the job(s). Just a starting point of a programme or programmes to learn or a course someone knows about would be a huge step forward Cheers
    38. I think you can learn C# and OpenGL together. For example you can learn how "for" statement works. You can draw 100 squares instead of writing 100 numbers in the console. OpenGL is just API. I highly recommend to download my example GUI WinForms + OpenGL 3.1 and port examples from this book to C# OpenGL: 2013 - 07 - WebGL Programming Guide - K. Matsuda, R. Lea. Source Code: https://sites.google.com/site/webglbook/ It is excellent book for beginners. Authors explain basics of computer graphics very good. I do not know a book where shaders was explained so good.
    39. Updated: 2/15/2019 - added "if...else" Double Selection Statement Visual Studio Enterprise 2015 has build in tool for creating UML Activity Diagrams. We can use this tool for creating flowcharts for describing algorithms. Creating UML Activity Diagram: Select: "File" -> "New" -> "Project..." -> "Modeling Projects" Write a name, for example: UseUMLInsteadOfFlowcharts_ModelingProject Press "OK" button Right Click on a name of the project Select: "Add" -> "New Item..." -> "UML Activity Diagram" Write a name, for example: UseUMLInsteadOfFlowcharts.activitydiagram Press "Add" button To add new items, drag them from the "Toolbox" I get these examples from the book: 2016 - 08 - C# 6 for Programmers - 6th Edition - Paul Deitel, Harvey Deitel. Code Examples: link 1. "if" Single-Selection Statement int studentGrade = 70; if (studentGrade >= 60) { Console.WriteLine("Passed"); } 2. "if...else" Double-Selection Statement int studentGrade = 70; if (studentGrade >= 60) { Console.WriteLine("Passed"); } else { Console.WriteLine("Failed"); } 3. "while" Iteration Statement int product = 3; while (product <= 100) { product = 3 * product; } 4. "for" Iteration Statement for (int counter = 1; counter <= 10; ++counter) { Console.Write($"{counter} "); }
    40. RoKabium Games

      ScreenShotSaturday

      Keeping up with the twitter hashtag of screen shots on Saturday!
    41. i think i need to learn c# before doing that right ?
    42. duke_meister

      c# console snake game

      I thought I'd take up the challenge, seeing as Phil opted out This allows movement but doesn't yet eat the food. Nor does the snake get longer, etc. Want to take it up Phil? Or I'll finish it edit: where did my code colour coding go? using System; using System.Linq; using System.Threading; namespace ConsoleSnake { /// <summary> /// All code written by duke_meister (Valentino Rossi) /// except keyboard reading technique /// </summary> class Program { static int _origRow; static int _origCol; const int PlayfieldWidth = 100; const int PlayfieldHeight = 50; const int MillisecondsTimeout = 50; const int UpdateCell = 10; static readonly FieldVals[,] PlayField = new FieldVals[PlayfieldWidth, PlayfieldHeight]; static int _snakeBodyLen = 4; // not including head static SnakeDirs _snakeDir = SnakeDirs.Right; static readonly Pos FoodPos = new Pos(30, 20); static readonly Pos[] SnakeCells = { new Pos(14, 10), new Pos(13, 10), new Pos(12, 10), new Pos(11, 10), new Pos(10, 10) }; public class Pos { public int X { get; set; } public int Y { get; set; } public Pos(int x, int y) { X = x; Y = y; } } enum FieldVals { Empty, SnakeHead, SnakeBody, SnakeFood } enum SnakeDirs { Up, Right, Down, Left } static void Main(string[] args) { Console.Clear(); _origRow = Console.CursorTop; _origCol = Console.CursorLeft; for (var i = 0; i < PlayfieldWidth; i++) { for (var j = 0; j < PlayfieldHeight; j++) { PlayField[i, j] = (int) FieldVals.Empty; } } PlayField[ SnakeCells.First().X, SnakeCells.First().Y] = FieldVals.SnakeHead + UpdateCell; foreach (var snakeCell in SnakeCells.Skip(1).Take(4)) { PlayField[snakeCell.X, snakeCell.Y] = FieldVals.SnakeBody + UpdateCell; } PlayField[FoodPos.X, FoodPos.Y] = FieldVals.SnakeFood + UpdateCell; DrawBorder(); for (;;) { Thread.Sleep(MillisecondsTimeout); if (NativeKeyboard.IsKeyDown(KeyCode.Down)) { _snakeDir = SnakeDirs.Down; } else if (NativeKeyboard.IsKeyDown(KeyCode.Up)) { _snakeDir = SnakeDirs.Up; } else if (NativeKeyboard.IsKeyDown(KeyCode.Left)) { _snakeDir = SnakeDirs.Left; } else if (NativeKeyboard.IsKeyDown(KeyCode.Right)) { _snakeDir = SnakeDirs.Right; } UpdatePlayfield(); UpdateSnake(); } } static void UpdateSnake() { if (SnakeCells.First().Y < 1 || SnakeCells.First().X > PlayfieldWidth - 2 ||SnakeCells.First().Y > PlayfieldHeight - 2 || SnakeCells.First().X < 1) { EndGame(false); } CalculateSnakeBody(); } static void CalculateSnakeBody() { PlayField[SnakeCells.Last().X, SnakeCells.Last().Y] = FieldVals.Empty + UpdateCell; for (int i = SnakeCells.Length - 1; i > 0; i--) { SnakeCells[i].X = SnakeCells[i - 1].X; SnakeCells[i].Y = SnakeCells[i - 1].Y; } switch (_snakeDir) { case SnakeDirs.Up: --SnakeCells.First().Y; break; case SnakeDirs.Right: ++SnakeCells.First().X; break; case SnakeDirs.Down: ++SnakeCells.First().Y; break; case SnakeDirs.Left: --SnakeCells.First().X; break; } PlayField[SnakeCells.First().X, SnakeCells.First().Y] = FieldVals.SnakeHead + UpdateCell; foreach (var cell in SnakeCells.Skip(1).Take(4)) { PlayField[cell.X, cell.Y] = FieldVals.SnakeBody + UpdateCell; } } static void EndGame(bool win) { Console.Clear(); Console.WriteLine($"YOU {( win ? "WIN" : "LOSE")}"); Console.ReadKey(); Environment.Exit(0); } static void DrawBorder() { Console.SetWindowSize(PlayfieldWidth, PlayfieldHeight); WriteAt("+", 0, 0); WriteAt("+", PlayfieldWidth - 1, 0); WriteAt("+", 0, PlayfieldHeight); WriteAt("+", PlayfieldWidth - 1, PlayfieldHeight - 1); for (var i = 1; i < PlayfieldWidth - 1; i++) { WriteAt("-", i, 0); WriteAt("-", i, PlayfieldHeight - 1); } for (var i = 1; i < PlayfieldHeight - 1; i++) { WriteAt("|", 0, i); WriteAt("|", PlayfieldWidth - 1, i); } } static void UpdatePlayfield() { for (var i = 0; i < PlayfieldWidth; i++) { for (var j = 0; j < PlayfieldHeight; j++) { var val = PlayField[i, j] - UpdateCell; switch (val) { case FieldVals.Empty: WriteAt( " ", i, j); break; case FieldVals.SnakeHead: WriteAt("@", i, j); break; case FieldVals.SnakeBody: WriteAt("o", i, j); break; case FieldVals.SnakeFood: WriteAt(".", i, j); break; } } } } // From Microsoft sample protected static void WriteAt(string s, int x, int y) { try { Console.SetCursorPosition(_origCol + x, _origRow + y); Console.Write(s); } catch (ArgumentOutOfRangeException e) { Console.Clear(); Console.WriteLine(e.Message); } } } /// <summary> /// Codes representing keyboard keys. /// </summary> /// <remarks> /// Key code documentation: /// http://msdn.microsoft.com/en-us/library/dd375731%28v=VS.85%29.aspx /// </remarks> internal enum KeyCode { Left = 0x25, Up, Right, Down } /// <summary> /// Provides keyboard access. /// </summary> internal static class NativeKeyboard { /// <summary> /// A positional bit flag indicating the part of a key state denoting /// key pressed. /// </summary> const int KeyPressed = 0x8000; /// <summary> /// Returns a value indicating if a given key is pressed. /// </summary> /// <param name="key">The key to check.</param> /// <returns> /// <c>true</c> if the key is pressed, otherwise <c>false</c>. /// </returns> public static bool IsKeyDown(KeyCode key) { return (GetKeyState((int)key) & KeyPressed) != 0; } /// <summary> /// Gets the key state of a key. /// </summary> /// <param name="key">Virtual-key code for key.</param> /// <returns>The state of the key.</returns> [System.Runtime.InteropServices.DllImport("user32.dll")] static extern short GetKeyState(int key); } }
    43. Cool, now I understand. So baking reflection probe is basically just rendering it in 6 directions and just save it back on your HDD for further use, right? By the way I've sticked with Texassemble as you adviced and it works great. That's sufficient for my needs and as I'm using it through system("...") in my C++ code it works great. However I have problem with creating diffuse irradiance map. As reference I am using https://learnopengl.com/PBR/IBL/Diffuse-irradiance and https://github.com/TheEvilBanana/PhysicallyBasedRendering/blob/master/Game.cpp#L490. My map convolution looks not as it is supposed. I have black dot on every face. I use 2048x2048 which I render to 256x256 Texture2D and save each face which I then assemble. Below debug image. Up is +Y, Down is -Y, Middle is from the left -X, -Z, +X, +Z. What can I do to fix it? Also it looks like I am rendering same face twice somehow because +(plus) faces looks same like their -(minus) faces. Render to texture method: Vertex shader: Pixel shader:
    44. Looks fantastic from the video, awesome effort, you've made the best part of a lot of games from the late 90s in such a short time!! :) Can't wait to try it.
    45. kseh

      Dungeon Crawler Challenge

      Quest for the Ban Hammer Entry for Dungeon Crawler Challenge Objective Explore the Lounge basement for the Ban Hammer and return with it to the Lounge. Snail enemies rush the player throwing him into the air potentially knocking him into the water to his death. Use crystals to light your way and mark areas that you have explored. Objective is described by conversing with character in the Lounge level. Controls: Arrow Keys - Move Q - Jump W - Attack (only effective with weapon) Number keys - Interact / Pick up item I - Inventory D - Drop Esc - Menu / Pause Stationary Obstacles Darkness Water Items Various weapons (Ban Hammer, Long Sword, and Club give best range or effectiveness while Dagger has the lowest). Backpack (equip to carry multiple items) Light Crystals (3 kinds with different levels of illumination) Glasses (Illuminate the entire play area when equipped) Various clothing that is just decorative. A few miscellaneous objects placed in levels for decoration. Pixels (credit item drop from enemies with no way to spend or use) Gamedev.net Reference / Easter Egg GD.net logo used on sign to return to Lounge level. Some subtle content references. Known Bugs / Issues The Equipment / Inventory interface is a little quirky. Attempts to equip a weapon that's already in the PC's hand has been known to cause a crash. Drops by enemies are leaving a solid, invisible, collidable space. This space can be jumped over. Occasional crash that is difficult to reproduce which seems related to the collidable space left from enemy drops. Debug functionality needs to be disabled. Dagger and Short Sword weapons are very difficult to fight with. Not a bug as much as a design issue. Can only hold one item in hands at a time leaving no way to make use of a light and weapon at the same time. Backpack can be used to carry other stuff.
    46. Quest for the Ban Hammer Entry for Dungeon Crawler Challenge Objective Explore the Lounge basement for the Ban Hammer and return with it to the Lounge. Snail enemies rush the player throwing him into the air potentially knocking him into the water to his death. Use crystals to light your way and mark areas that you have explored. Objective is described by conversing with character in the Lounge level. Controls: Arrow Keys - Move Q - Jump W - Attack (only effective with weapon) Number keys - Interact / Pick up item I - Inventory D - Drop Esc - Menu / Pause Stationary Obstacles Darkness Water Items Various weapons (Ban Hammer, Long Sword, and Club give best range or effectiveness while Dagger has the lowest). Backpack (equip to carry multiple items) Light Crystals (3 kinds with different levels of illumination) Glasses (Illuminate the entire play area when equipped) Various clothing that is just decorative. A few miscellaneous objects placed in levels for decoration. Pixels (credit item drop from enemies with no way to spend or use) Gamedev.net Reference / Easter Egg GD.net logo used on sign to return to Lounge level. Some subtle content references. Known Bugs / Issues The Equipment / Inventory interface is a little quirky. Attempts to equip a weapon that's already in the PC's hand has been known to cause a crash. Drops by enemies are leaving a solid, invisible, collidable space. This space can be jumped over. Occasional crash that is difficult to reproduce which seems related to the collidable space left from enemy drops. Debug functionality needs to be disabled. Dagger and Short Sword weapons are very difficult to fight with. Not a bug as much as a design issue. Can only hold one item in hands at a time leaving no way to make use of a light and weapon at the same time. Backpack can be used to carry other stuff.
    47. My submission for the challenge. Pretty sure there's a number of issues I haven't yet found and there's a lot that needs improvement but the game is playable and winnable. Quest for the Ban Hammer Objective Explore the Lounge basement for the Ban Hammer and return with it to the Lounge. Snail enemies rush the player throwing him into the air potentially knocking him into the water to his death. Use crystals to light your way and mark areas that you have explored. Objective is described by conversing with character in the Lounge level. Controls: Arrow Keys - Move Q - Jump W - Attack (only effective with weapon) Number keys - Interact / Pick up item I - Inventory D - Drop Esc - Menu / Pause Stationary Obstacles Darkness Water Items Various weapons (Ban Hammer, Long Sword, and Club give best range or effectiveness while Dagger has the lowest). Backpack (equip to carry multiple items) Light Crystals (3 kinds with different levels of illumination) Glasses (Illuminate the entire play area when equipped) Various clothing that is just decorative. A few miscellaneous objects placed in levels for decoration. Pixels (credit item drop from enemies with no way to spend or use) Gamedev.net Reference / Easter Egg GD.net logo used on sign to return to Lounge level. Some subtle content references. Known Bugs / Issues The Equipment / Inventory interface is a little quirky. Attempts to equip a weapon that's already in the PC's hand has been known to cause a crash. Drops by enemies are leaving a solid, invisible, collidable space. This space can be jumped over. Occasional crash that is difficult to reproduce which seems related to the collidable space left from enemy drops. Debug functionality needs to be disabled. Dagger and Short Sword weapons are very difficult to fight with. Not a bug as much as a design issue. Can only hold one item in hands at a time leaving no way to make use of a light and weapon at the same time. Backpack can be used to carry other stuff.
    48. 8Observer8

      c# console snake game

      I ran your project but I do not see the snake head which moves to the right. I see three problems in your code: You need to call drawing from the Form1_Paint() method You do not call the Invalidate() method in the timer1_Tick() method You have too big offset for the snake head: Rectangle rect_green = new Rectangle(340 + x, 280 + y, 10, 10); Rectangle rect_black = new Rectangle(330 + x, 280 + y, 10, 10); Default size of windows is 300x300. I solved these problems: using System; using System.Drawing; using System.Windows.Forms; namespace SnakeByPhil_WinFormsGDI { public partial class Form1 : Form { public Form1() { InitializeComponent(); CenterToScreen(); } int x = 0, y = 0; private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = this.CreateGraphics(); SolidBrush greenBrush = new SolidBrush(Color.Green); SolidBrush blackBrush = new SolidBrush(Color.Black); Rectangle rect_green = new Rectangle(20 + x, 20 + y, 10, 10); Rectangle rect_black = new Rectangle(10 + x, 20 + y, 10, 10); g.FillRectangle(greenBrush, rect_green); g.FillRectangle(blackBrush, rect_black); greenBrush.Dispose(); g.Dispose(); } private void timer1_Tick(object sender, EventArgs e) { if (x >= 340) { x = 340; } x += 5; if (MouseButtons == MouseButtons.Left) { } Invalidate(); } } }
    49. Ok in this case there should probably be some maximum COC radius during the first pass to avoid that the bokeh's "dot pattern" (slide 38, left image) drifts too much apart for the 3x3 sampling in the second pass. Have not seen any max radius being mentioned in the slides, though. Thanks! I will take a look at this paper! So k is basically chosen based on half res dimensions and this max COC radius. I see. In this case the implementation is straightforward. I was a bit afraid there is another "diploma thesis" behind their "custom bilateral filter" ;-) Yeah you're so right, a LOT of room for interpretation. If I find out more I will definitely share it here. Yeah, just want to understand everything as detailed as possible and really appreciate the discussion. I am not here to deny somebody knowledge or skill. Thanks!
    50. Webellion

      Five Nations

      Five Nations is a real-time sci-fi strategy game for PC platforms, Switch, and mobile. Encompassing tactical combat in space in real-time mixed with micromanagement of economy, construction, and production, it will play both in single player and multiplayer modes. The RTS mechanics being custom-made to deliver action-packed gameplay. Gameplay You are a commander of one of the five greatest galactic empires in the far future Develop your space facilities, mining stations, factories, power plants, and research centers. Produce a gigantic armada of spacecraft to confront and destroy your rivals by applying shrewd strategies to outmaneuver their fleets. All this in real-time, by micromanaging your spaceships and structures through conventional RTS mechanics tailored to modern action-packed gameplay. Story In the near future, countries of the Earth are clustered in an international organization to create co-operation between states and prevent future wars. Aligning mankind under a common flag helped the economic and technological progress that paved the way for space conquest. During the colonization of the solar system, a group of pioneers discovered a wormhole that led to an unknown corner of the galaxy. Although the first attempt to enter the wormhole was deemed a complete success, the second expedition never returned... Join our Discord server and get Super Early Access https://discord.gg/uSSzUKs Social Media Facebook fan page: https://www.facebook.com/fivenationsthegame Instagram: https://instagram.com/fivenationsthegame GameJolt: https://gamejolt.com/games/fivenations/389358 Itch.io: https://webellionlimited.itch.io/five-nations Twitter: https://twitter.com/webellion
  • 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!