• Announcements

    • khawk

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

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

Khatharr

Members
  • Content count

    1934
  • Joined

  • Last visited

Community Reputation

8812 Excellent

About Khatharr

  • Rank
    Contributor

Personal Information

  • Location
    ON THE ROOF
  • Interests
    Programming
  1. Duck typing or just compositional objects (like in JS - similar principle) could be used as an easy substitute. In duck typed languages an object will respond to any valid member operation regardless of its type. For example, in Ruby: class Dog def speak puts "Woof!" end end class Cat def speak puts "Meow!" end end ary = [ Dog.new, Cat.new ] for animal in ary animal.speak end Output is as expected.
  2. Some day you can tell your great grandchildren about the golden age when the devices that you bought and owned did what you told them to instead of what the corporate overlords tell them to do. And then the Ministry of Consumer Support will come and kill you for spreading dissent. Oh yes. This is actually an increasingly severe problem and it's resulting not just in idiotic inconveniences, but in many places it's turning into transparent and shameless rent seeking. It's a pity that the government is somewhere around 500 to 600 years behind on understanding tech markets, so instead of breaking up platforms to allow competition to solve problems, the FCC is toying with the idea of castrating the fucking internet just for shits and giggles.
  3. It's a blatant rip-off. It's great. Regarding Steam and the app stores and the insipid, petulant cry for "regulation"... Think about 10 years ago. How often did you come across a good game? How often is it now? No, really. Go look at your accounts and actually count them. If you're still a gamer then there are more now than there were then. Why? Because the entire market is expanding. The old model could NEVER have sustained this growth, so why the hell would we go backwards? For every whiner who gets butt-hurt about games they don't want to play and leaves there are 100 new customers buying games that they do want to play. It doesn't matter how badly you want it, this distribution market is not collapsing any time soon. These people are making more money than god EVERY SINGLE DAY. If you can get over the irrational resentment about someone other than you making money then the upshot of this situation is that you have the opportunity to very, very easily find and buy more and better games than before for less money. If you don't want to "wade through a sea of garbage" then try thinking about an actual search strategy rather than diving thoughtlessly into the unsorted mass. Scan the top seller/top rated lists for genres that interest you. Find a curator who shares your tastes, either on Steam or on YouTube. Watch E3 indies videos and jot down things that interest you. Most importantly, stop caring about shit that doesn't interest you. It doesn't cost you anything unless you decide to sit there and fuss about it like a child. The complaints on Steam are absolutely ridiculous. Most days SUF is nothing but asshole after delusional asshole sitting there just drenched in entitlement and nerd rage. This one wants to ban anime games, this one wants to ban indie games, this one wants to ban early access, this one wants to ban Call of Duty, for fuck's sake. A cacophony of drooling, authoritarian pricks who can't tolerate a world that doesn't cater exclusively to their preferences. The environment has changed, and you can adapt or you can suffer. The only reason to just wade blindly into the database is if you've got the bizarre idea that you're going to find some tragically undersold, low-rated game that just happens to be a misplaced gem. It's not going to happen. There are people all over the world looking at these games day in and day out with literally autistic dedication. If there's something even remotely worthwhile in a niche you're even passively interested in, a trivially strategic search will reveal it to you. If you actually look for things that you're interested in rather than throwing yourself at the DB sideways then you'll very likely hear about it 6 to 12 months prior to its release. But hey, even if you can't be assed to make an effort what are you missing comparatively? Don't even look then, just make note of things that other people talk about and check on what interests you... You know, like you did when it was brick and mortar? That still works too. Jesus fucking Christ, you don't even have to get out of your god damned chair anymore! So the idea that these markets should or will change to accommodate severely outdated notions of content delivery is ridiculous. These people opened the floodgates and the result is that they're drowning in cash. Why the hell would they do anything to change that? Even Steam Direct isn't about getting rid of meta-marketers or ensuring quality; it's about making even more money for Valve. The scuttlebutt is near-transparent publicity because it's TRIVIALLY SIMPLE to whip the idiot army into a frenzy over nothing at all and then sell them a solution which, "Oops!" just happens to make you a hell of a lot more money. So if you're sincerely thinking that this is some kind of progress or some powerful blow for your authoritarian view of what games people should be allowed to sell or play, well... The one that got played was you.
  4. In my experience UE4 is definitely the biggest performance hog. You definitely want it on an SSD (and the projects as well). I'm running a quad core 3.8GHz with 8GB of RAM and a GTX 750 Ti (which is now considered "old" by most). UE4 runs acceptably on that as long as the project is on the SSD, everything else (PS, Blender, Unity, VS) cooks along pretty nicely. You should be able to put together a better machine than mine for under $500 US, assuming you already have monitor/keyboard/desk/etc.
  5. https://en.wikipedia.org/wiki/Overengineering
  6. Well, you could use enum values, but only if you're okay with the tokens potentially becoming incorrect or else being vague like WEAPON_AXE_2. Honestly there probably aren't many cases where you need to refer to a specific weapon type rather than just a variable with an ID in it. If you like you could just write something to look up the ID by name like Apoch said, but you're going to pay some perf cost for it, so you really don't want to make it common.
  7. You also don't know the refresh rate of the monitor.
  8. If cooperation isn't working out we can certainly go back to colonialism.
  9. I'm not sure that it's your interpolation causing that. I'd output a frame log and try to find the specifics of what's going on before proceeding.
  10. D3DX was deprecated a long time ago and is not a part of the SDK. I don't think you can find it anywhere anymore, unless you want to dig around in the dark corners and alleyways of the interbutts and see what turns up.
  11. If you're running an update and then rendering repeatedly until the next one, then put the render in the inner-loop instead of the update. (That was my take, anyway.)
  12. You do want to think about the ABA problem if you're polling. That's not really what would be described as a latency problem, but the slower your simulation rate the more relevant it becomes. If you're just using the analog stick to move something around then it's not a big deal because the input pattern is the stick being held in some direction for a period of time, but if your game deals with rapid button presses like Street Fighter or Parappa then you definitely want to collect input messages and then process them during the update. That issue will be exacerbated at 30hz compared to 60. One approach I've used to deal with this is to have my input class set up such that each registered key has several methods for checking its state. Messages from the OS accumulate in a buffer until the tick begins, at which point the input object is updated. The update sets the state representation of each registered key and they may then be queried using: triggered() //this key went from up to down since the last poll pressed() //this key is down right now (during the poll) released() //this key went from down to up since the last poll note that a key could be triggered, pressed, and released at the same time if the player releases the key after the previous poll and then pushes it back down again before this poll. It's also possible for the player to trigger and release the key between polls, in which case it would not be "pressed", but would be triggered and released.
  13. Your code is running multiple logic updates and then rendering a single interpolated frame. My code is running a logic update and then rendering multiple interpolated frames until the next tick is due. In both cases the tighter loop can be skipped if the time is already elapsed, so it may come out similarly, but I felt that this approach was more intentional.
  14. Try this out constexpr Int32 logicFPS = 30; constexpr Int32 msPerTick = 1000 / logicFPS; constexpr float ticksPerMS = 1.0f / msPerTick; //to avoid frivolous divisions sf::Clock mainClock; Int32 nextTickTime = 0; while(running) { Int32 tickStart = nextTickTime; nextTickTime += msPerTick; sf::Vector2f displacement(0, 0); if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) { displacement.y--; } if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) { displacement.y++; } if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { displacement.x--; } if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { displacement.x++; } displacement.normalize(); //this is not an sfml function, so you'll have to write one (divide the vector by its own length) displacement *= testSpriteSpeed; auto prevPos = testSpritePos; testSpritePos += displacement; for(Int32 now = mainClock.getElapsedTime().asMilliseconds(); now < nextTickTime; now = mainClock.getElapsedTime().asMilliseconds()) { float alpha = float(now - tickStart) * ticksPerMS; sf::Vector2f offset = displacement * alpha; testSprite.setPosition(prevPos + offset); mainWindow.clear(); mainWindow.draw(testSprite); mainWindow.display(); } } It's untested so it may have a snag or two, but I think this is closer to what you're aiming for.
  15. Once you learn to use it and get the boilerplate handled DX11 is easier to use than DX9. If your codebase is anything like sane then switching from 9 to 11 shouldn't be too difficult. DX12 is a different animal altogether. DX12 is not "easy" and is not intended to be. It's a much lower-level graphics API. If you're looking for a low level API then Vulkan may be a better choice than DX12, since they're essentially the same thing but Vulkan has wider support, not just for linux and android, but also for pre-10 versions of Windows.