• 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.

Kylotan

Moderators
  • Content count

    13762
  • Joined

  • Last visited

  • Days Won

    12

Kylotan last won the day on July 17

Kylotan had the most liked content!

Community Reputation

9721 Excellent

1 Follower

About Kylotan

Personal Information

  1. 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.
  2. 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.
  3. 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).
  4. 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.
  5. 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.)
  6. 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).
  7. 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.
  8. Steer clear of anything that you think might suggest that your company has a legal status that it does not hold. The penalty for misleading a customer about that could range from nothing at all to something quite serious, depending on where you are, where you trade, etc.
  9. I always found the Pomodoro technique worked well on me. The simple way to describe it is "set a timer for 25 minutes, work for that time, and then take a 5 minute break. Repeat." For some reason, the promise of the work being time-limited helps get me into the mood for working; and at the end of 25 minutes, I often don't even want to stop anyway.
  10. This is how C++ works unfortunately. The system that operates the #includes (the preprocessor) is a completely different system to the one that links the compiled code together (the linker).
  11. 2D

    That's exactly what it currently does, which is a bad idea. There should be no Sleep call in there at all. The SDL_WaitEvent call already sleeps when there's nothing to do. Take that Sleep out, and see what the situation is.
  12. The static library configuration issue will have fixed those Linker errors (LNK1120). However the initial problem, of being unable to #include a file, is all down to setting the correct include directories (i.e. in "Directory di inclusione"). These 2 concepts are (unfortunately) quite separate in C++, and with any application using multiple projects you typically have to do both things - make sure the #includes are visible, and make sure the .lib files are linked in to your final project or library correctly.
  13. If you don't want to use properties, then don't. They just exist for convenience, to allow you to create things that act much like regular variables but which require a little extra logic.
  14. 1. That loses most of the type safety, no? What stops me passing in the wrong bitset? Or passing in a wrong enum when setting the flags? 2. The OP seems to want to support both C and C++ with one codebase.
  15. accept() creates a new socket for every incoming connection it accepts. Obviously once you hit the bottom of the loop that socket goes out of scope, gets destroyed, the connection gets dropped. The same happens if you declare it outside the loop, because if you overwrite that value, the old socket gets destroyed, the connection gets dropped. You'd want to store multiple connections in some sort of data structure. Or maybe store them in the Player, and store the Players in some sort of data structure. Your message about the value being unused - it's not saying the variable is unused - obviously you increment it - it's saying the value is unused. It's asking "why would a programmer bother incrementing a variable if they never read it or assign it to anything else?" Normally an unused variable means you did something wrong, or forgot to finish something. If you're sure it's not a mistake - because you intend to use it later - ignore it. (Also, don't increment that variable until you know that the socket isn't null.)