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

Stroppy Katamari

Members
  • Content count

    567
  • Joined

  • Last visited

Community Reputation

1416 Excellent

About Stroppy Katamari

  • Rank
    Crossbones+

Personal Information

  • Location
    Espoo, Finland
  1. Hi guys! My amateur team is trying to use the official Fmod Unity plugin to carry out the most basic of basics, but I have no Fmod knowledge, our sound artist who knows Fmod hasn't used Unity, and there's no official documentation yet.   What we have done is to place a FMOD_Listener at camera, and then from our game logic, grab the StudioSystem instance and do fmod.PlayOneShot(). This works for individual sounds. We also get background music by having a Studio Event Emitter at the same camera as the listener that starts playing on awake. But if I do something as simple as placing that same event emitter with the same asset on the player character instead, no sound comes out. I don't know how to stop and switch between sounds (e.g. for the background music). Ideally we'd like to be able to fade between different musics. Any pointers how we should do this? Either the "right way" or a "quick and dirty" way would be fine.
  2.   I feel like that difference shrinks as the caliber of the programmer goes up. Will a really good C++ and C# programmer be appreciably faster when working in C#? Not sure. C++11/14 with extensive use of standard libraries (and good 3rd party libraries) can be very expressive, and also pretty safe if you choose to use a safe coding style (which may or may not come at a performance cost). Certainly it's faster to write some things in C++ compared to e.g. Java, even for a klutz like me.   At the low end of skills the difference is the most striking. I think it's accurate to say that a poor C++ programmer will generate negative value to a project. With C++, either plan to get pretty good, or spend your time more constructively with another language.
  3. Fundamentally I'm very much on the side of putting everything in (the same) version control, and being able to reliably produce a working game by just pulling from repo and building. Part of my problem is that Unity3D seems to require or strongly encourage mixing code and data. I'm not sure if it's feasible to really clean it up, and to what degree. If only our game code and data were properly separate, and we were able to handle missing assets sensibly on the code side, life would become a lot easier. Then we could use git, hg or whatever for the code, any other solution for the data/assets (something that is easy for the artists), and the project would still be trivial to build and work on. Specific asset sets could be designated as "official" once in a while, and the build script in the code VCS would fetch the official asset set at the time of that code version.
  4. This example has nothing to do with your (faulty) assertion that languages do not matter. You'd be far more productive when writing your code generator in Lua than when writing it in assembler. That's because in comparison to assembler, Lua has many more features that help you get the job done. It boggles my mind that you'd even try to claim otherwise. Seriously weird strawman argument. If you have 100% perfect, 100% efficient C code that never needs to be changed again, then sure, you don't want to go in and change it for any reason. But I didn't tell anyone to do that. Rather, I'm saying there are benefits from writing the code in C++ in the first place, even if the code is not object oriented, and even if it mostly looks like C.
  5. I hate to nit-pick (ok, I actually love to, it seems very effective in terms of learning), but isn't it a bit misleading to refer to genetic algorithms and lambdas as being C++ techniques? Correct me if I misunderstood what you were saying but the statement seems to associate those techniques with C++, while I am pretty sure the two I mentioned existed before it did. I could not say about the others, as I am less familiar with them, and I am not very familiar with those two in the first place. They aren't C++ inventions, but I wasn't calling them as such. According to the topic of the thread, I was comparing C++ to C. C++ has language support for the things mentioned, while C does not. Also, it's "generic algorithms", not "genetic algorithms".
  6. Almost any piece of high level C code can be improved by applying C++ techniques. References, generic algorithms, lambdas, constexpr, smart pointers, move semantics etc. are all really nice. You don't need to write object oriented code to benefit from C++. Just the fact that C++ has a good assortment of standard containers is a huge leg up on C. If you are working in C, you'll be using containers from some 3rd party library, or have rolled your own from scratch with great time expenditure and possible quality issues, or you are effectively hamstrung by lack of appropriate tools.
  7. Also, Github has student accounts. They allow you to make up to 5 private repos. You just need to mail Github to apply. I also currently have the dilemma of what forms of version control to use. Complicating the matter: - The project only runs a couple more weeks. No time to spend on infrastructure. - Most of the team are not programmers. I'm the only one with some experience of using git/hg/svn etc., and then only with text data, not binary blobs. - Due to the skillset and time factors, I can't ask others to learn much VCS. - We use Unity3D, and projects in it do not play well with version control. - At the end we'll have quite a bit of assets. We went ahead and used git + GitHub for now, but it's so awful in these circumstances, I'm still wondering if we should just forget the repo and just dump the whole thing in Dropbox. Or what other VCS we should be using instead. I'll have another short project after this, so I really want to figure out a solution even if I don't have time to apply it for the current project. When it is easy to separate the assets from the code, and only programmers need to touch the VCS, git and hg are great. I'd recommend Hg for newbies, Git has a very long learning curve.
  8. The simplest thing you can do to make the camera lead the character is to maintain a camera offset that ticks towards 0 over time (so the camera will center on the character when not moving), is increased quickly whenever the character is running to the right, and is capped to some maximum offset value.   The general method to smooth any camera is to attach it to the point of focus with a damped spring. In this case, the point of focus is the offset position.
  9. That's worse than what he's doing. A m_ prefix on everything messes up IDE/editor autocomplete features, whereas the _m postfix does not disturb the autocomplete, and will get autocompleted 95% of the time so you don't even have to type it out. There's no one right way, but I have opted to use the Google style where class members are marked with a single postfix underscore (particles_). This doesn't hurt the readability, but still clearly distinguishes members from non-members. On simple classes with public data members, I omit the underscore so it's just Position p; p.x = 123;. The correct choice in C++11 is nullptr, in C++98 0.
  10.   dsl's:  distributed systems logic? as in distributed systems programming? Domain specific languages. To solve a set of problems, you use the high-level features of the host language to write a mini-language specifically for that kind of problem, and then use the mini-language to solve the problems. The DSL may be embedded (still valid code in the host language, but may look extremely different than typical host language code); this means you don't need a separate parser, compiler, or interface between two separate languages. The Lisp language family is famous for being used in that way. Among more recent languages, Scala has been specifically designed to be very good at DSLs. The characteristics needed from the host language are raw (expressive) power and flexible syntax. Alternatively, the DSL can be an entirely separate language in which case you write an interpreter or compiler. The same languages that are good hosts for embedded DSLs also tend to be very good for writing these tools. See here: http://www.stanford.edu/class/cs442/ http://www.scala-lang.org/old/node/1403
  11. A short personal wishlist of mine would include stuff like: Functional purity as default, enforced by compiler Mutation-using code allowed inside pure functions as long as it only operates on local data (and so does not cause an actual loss of purity) Can annotate an individual pure function call at call site to enforce the arguments must be const and the whole thing must therefore be eliminated at compile time Strong typing, strong type inference so you rarely have to spell out the types Deep/transitive const Generic code written with the same syntax as other code Generic containers and algorithms connected with ranges, iterators Designed to allow fast and automatic incremental compilation and re-linking on the fly while in development mode, without having to add any crud in the code to make it happen The D language already manages quite a bit of those, and also allows getting close to hardware so you don't need a separate language for that. Tim Sweeney's old opinion touches on many of the same things: http://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/sweeny.pdf
  12. It makes no sense for an abstract game object like the Ball class to be aware of characteristics of the program window. If you like, it could have functions that return the edge coordinates of the ball, which can then be compared to window coordinates elsewhere.
  13. I'm not convinced that your ships and planets are actually so related that you should try to use them polymorphically. Polymorphism is about using operations interchangeably on related objects, without having to care which actual type it is. No matter what you do, you should not have casts all over the place in your code; having to cast is a sign you are probably doing something poorly. If you get a ton of new object types, and need the grid to be able to point to them, I can see how it makes sense for them to have a common base class for that purpose. But in that case, it would be cleanest to keep the base class totally empty. I'd keep the Object pointers strictly inside the grid data structure, give the grid getter functions which return a specific type, and do no casting whatsoever outside those functions.
  14. I'll refrain from commenting on the fundental design issues, and just point out that this kind of drilling down is atrocious to read. It will eventually lead to bugs and silly code, if it hasn't already. mEffect[fx].meshesPerMatBlended[mat].instance[m].blendedMeshIndexTemp[mEffect[fx].meshesPerMatBlended[mat].instance[m].blendedMeshOrderTemp[mi]]Using iterators rather than indices would prevent this. But if you use indices, at least use local references to clean it up: auto& inst = mEffect[fx].meshesPerMatBlended[mat].instance[m]; inst.blendedMeshIndexTemp[inst.blendedMeshOrderTemp[mi]];