• Announcements

    • khawk

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

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


  • Content count

  • Joined

  • Last visited

  • Days Won


Kylotan last won the day on July 21

Kylotan had the most liked content!

Community Reputation

9728 Excellent

1 Follower

About Kylotan

  • Rank
    Moderator - Scripting Languages and Game Mods

Personal Information

  1. Please don't respond to threads that have been dormant for 5 years.
  2. True, I suppose they are optional to provide at the call-site.
  3. 3rd party UI libraries have always been in a pretty poor state. Someone wrote a blog entry about this recently. And as more and more people use existing engines, this is unlikely to change, because Unity and UE4 users will use the built-in UI. Some people used to do okay with LibRocket, but that's not seeing much love these days. CEGUI, formerly Crazy Eddie's GUI, has been widely used over the years, and widely criticised over the years. But it's certainly capable. TurboBadger looks good. Never used it myself, or heard of anyone else that did, so tread carefully. Pros sometimes use Scaleform. They don't even list a price, so you probably can't afford it.
  4. Note that this is just a convention used in this particular documentation - there's no official "optional argument" in C++, except perhaps the case when you have function overloads with different length argument lists.
  5. UE4 would be a good choice for portfolio work, yes. You might want to consider some non-UE4 based work as well, to show that you're versatile.
  6. I'm not an expert in this, but it's common for the mouse cursor to be handled by the display drivers as a special case, rather than explicitly rendered onscreen by the application. This means it can display the new position as close to instantly as possible, whereas a normal 3D rendering pipeline might take quite some time for a rendered frame to work its way through to the display.
  7. Member functions will work fine without a this pointer if they don't reference any member variables, sure. But you can also just add an assert() instead of the if-check if you like. I prefer not to try and keep the program running when it's obviously in a broken state.
  8. 1. The books you want are in this thread, but the formatting is broken, so I'll give a summary: "Programming Game AI by Example" by Mat Buckland, and "Artificial Intelligence for Games" by Ian Millington are good starter texts. "Behavioral Mathematics for Game AI" by Dave Mark is a good follow-up text. "AI Game Engine Programming" by Brian Schwab has some mixed reviews but Brian sure knows his stuff (disclosure: I worked for him for a short time), so maybe that's another good one once you already have the basics down. "Artificial Intelligence: A Modern Approach" by Russell and Norvig is an essential guide to the wider world of AI, some of which you'll see in games, some of which you won't. All the AI Game Programming Wisdom books are worth getting if you can, as they contain a bunch of individual hints, tips, tricks and techniques that can be used once you already know the basics. The same applies for the newer Game AI Pro books, the first 2 of which are available for free online. 2. What is best depends on your specific goals - different studios want different skills. If you want to cover all bases, you might want to show that you can use some built-in tools like UE4's Behaviour Trees or Unity's pathfinding, plus showing you can write your own algorithms where necessary (e.g. A* path-finding is a classic, or implementing a utility system), perhaps in a minimalist framework such as SDL to prove that you understand all the parts. Generally speaking people want to be able to see the behaviour as well as the code, and you're going to need to be able to test it anyway. So you can show them a prototype of your code running in a test map of some sort. 3. State machines are trivial compared to behaviour trees. But they are not mutually exclusive. You need to understand both, and the relationship between them, and the pros and cons of each. You also need to understand other concepts like graph search, pathfinding, steering behaviours, optimisation problems, utility systems, decision trees, planners, etc. It's not necessary to implement every single one of these from the ground up, but the more you do, the more chance you have of being able to show that you know the right tool for the job, and can implement it.
  9. An authentication token is a client-side object that shows that the client is who they claim to be. The best example here is a browser cookie - once a user logs in, they might get a cookie that contains a user ID and an expiry time. If they supply that cookie, you know that they logged in previously (via password, or whatever). You normally would also cryptographically sign the cookie using a server-side secret key so that it's impractical for a user to forge one. This is sometimes called digital signatures. Whether you use a token or a password, if you store it locally, they won't be able to access it on a different device anyway. The problem is exactly the same. Traditionally we use passwords because they're something a user can know (as opposed to something a user has, or something a user is) and therefore they do not need to be stored anywhere, but when you randomly generate them, that's out of the window. Storing it locally changes it to something the user has, but then you have to ensure they don't lose it; which is out of your control. One major advantage of using a token is that you don't ever need to store any passwords locally, and therefore you won't have jeopardised the user's security if their device is stolen or otherwise wrongly accessed. When transmitting passwords that have been entered by the user, you should not be encrypting that yourself - use a tried-and-tested protocol like HTTPS to do that for you.
  10. Well, no - most of the time that 97% never matters, because they're "noncritical parts of their programs". You need to get a feeling for what is truly expensive and what is not. You're worrying about the performance of code where (a) it is called relatively infrequently, and (b) the operations are already near-optimal anyway.
  11. The names of the courses are mostly irrelevant; dig in to the prospectus and find out exactly what modules they'll be offering you. We can't give you a recommendation without doing exactly the same legwork that you need to to here. Look at what languages they teach, what hardware they use, what their final project/thesis looks like, etc. Note that obviously no university will be teaching you how to code for "future gens" because that hardware does not exist in the wild yet. The best you can hope for is that they work on current generation hardware; but even that may not be guaranteed given how short a Masters course is and how many different things they need to cram into that time. Note also that a Masters degree is a bit of a luxury in the UK games industry; it's nice to have, but mostly employers just want to see that you have a relevant Bachelors (which you already have) and a small portfolio of work (which you'll need to create).
  12. Creating a pointer costs absolutely nothing. Calling a function like GetWindowLongPtr is very cheap. Testing the pointer is almost entirely free. But take it out if you like; it's not like your program can do anything useful if it's null anyway. Calling MsgProc is what you had to do anyway. You're worrying about nothing.
  13. 2D

    No no no no no no no... You should not be 'overwriting' events! There should be no 'g_pEventData' which is shared and continually overwritten. Each event pulled from SDL_WaitEvent should be written into a local variable, and handled immediately if possible. If that is not possible, perhaps because you're expecting to use the event in a different thread, you must copy the event and pass it to the thread that needs it. If you're trying to make multithreading work by throwing Sleeps in so that some other thread has enough time to work with shared data before you overwrite it, you're doing it completely wrong. You can't create a stable system that way. Take out the Sleep, take out the SDL_Delay. Handle these events immediately, properly. Your lag will go away. (Also, where is the mouse movement code? You keep talking about that being the cause of the problem but you're not even handling those events in the code you're posting.)
  14. You don't strictly need to generate a password, since you can issue the user with an authentication token - just like when you return to a website after having logged in before, the cookie can get you in without it needing to contain the password. You don't 'encrypt' passwords with a salt - to encrypt means there is the possibility of decryption. You'd be hashing the passwords which is a one-way operation (or rather, using a key derivation algorithm, before the crypto folks complain about my terminology. It's important you don't just use any old hash algorithm. Ideal choices are currently Argon2, PBKDF2, or scrypt.) Beyond that, I don't think there's anything you're missing (apart from the possibility of playing without an account at all, but I'm assuming that's not practical here).
  15. It has to be the same mutex. Otherwise they're not interacting in any way to prevent the other thread from accessing the queue. The point of a mutex is that it is shared, like the thing it is protecting, different threads must acquire it before proceeding to use the protected resource, and only one thread can hold it at once. The other threads will block if they try to access the mutex, until the mutex is freed up by whichever thread acquired it. This means only one thread can access the resource at once - which is the intended behaviour. There are some esoteric situations where people use multiple mutexes for various functionality but that is not the usual situation.