Stroppy Katamari

Member
  • Content count

    567
  • Joined

  • Last visited

Community Reputation

1416 Excellent

About Stroppy Katamari

  • Rank
    Crossbones+
  1. fmod with unity, anyone use yet?

    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. Getting a solid grip on C++ : Where to go next?

      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. Version Control and programming with a team

    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. How Languages Compare?

    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. How Languages Compare?

    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. How Languages Compare?

    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. Version Control and programming with a team

    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. C++ Garbage Data

    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. game programming language capabilites

      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. game programming language capabilites

    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. Critique my code please

    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. sorting std::vector instead of array

    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]];