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

Maik Klein

Members
  • Content count

    15
  • Joined

  • Last visited

Community Reputation

121 Neutral

About Maik Klein

  • Rank
    Member
  1. "We will use EL for irradiance perpendicular to `l`. What does this mean? How do I get `EL`? 
  2. I am probably overthinking it, there is no way to know what really works at this stage. You are right, I should just stick with it.
  3. There weren't really any questions there, so my only tip is to profile it. Profile before, during, and after any changes. make absolutely certain you are changing things that really matter, and verify you measurably changed them for the better. Have results from your profiling tools that say something that was cache inefficient is now cache efficient, or have a specific reduction in microseconds (or milliseconds if that's your problem). Always measure before and after, at the least. measure more if you can.   It is hard to do this because the design is so different. I would have to test multiple implementations which just would cost too much time. But I have some microbenchmarks like linear iteration vs linear iteration + a few jumps. It is just not very good indicator because I have no idea how the data will look in a real game.   https://docs.google.com/spreadsheets/d/1zbQmmVXj68ksymEoYaRdiJNoGxvy4JgGFEGuM1-CufE/pubchart?oid=386750997&format=interactive   The line with "jumps" jumps randomly forward somewhere inbetween [0,N) in memory and the horizontal graph is N = 0 to 100;   The bigger the jumps the bigger the difference. This is with a data structure of size 24bytes.   With 24bytes 1000000 iterations and random jumps inbetween [0,100), the linear iteration will be 2.25times faster.   What about situations where a routine needs access to two or more components? What about where the relationship between the two components aren't predictable -- e.g. each component of class A is linked to a random instance of class B (many to 1 and/or 1 to 1).   Accessing two or more components is basicially free. If the relationship isn't predictable there are two cases. If a system has the pointers you can still iterate cache efficient, but if the components contain the pointers then you would get random jumps in memory.   But I don't think that the latter case will happen that often.
  4. I recently wrote a small article about an entity component system https://maikklein.github.io/2016/01/14/Entity-Component-System/   The gist of it is that I layout components into groups which are completely contiguous in memory and then I filter those groups at compile time. That gives me close to perfect cache efficiency.   A problem with this approach was that the compile times went up quite a bit but I recently ported the ecs to D which compiles in under a second.   Another problem is that adding components is a bit expensive. If I want to add a component at runtime, I would copy all components of the entity to a new group. For example an entity is inside the component group<A,B,C> but if I want to add another component I would need to copy the components to "component group<A,B,C,D>".   This would make temporary components a bit expensive, I am not sure at this stage how big of a problem this would be.   Also I currently impelemented handles with "smart ptrs" which seemed like a nice idea at the time, it was super easy to implement and gives me great perfomance but I just relaized that this makes serialization a nightmare.   But switching to good old handles like struct Handle{   int id;   int counter; }; would be a problem because I move my components in memory to keep them contigous, which is not a big problem with my "smart ptrs" because they automatically update and null if the entity is deleted, but this doesn't really work with plain old handles like the handle struct that I have posted above.   Which makes me think if I should switch to a different design all together.   I think the most common ecs is something like this:   Systems already know which entities it needs to iterate over   For example:   PrintSystem: Required NameComponent and PrintComponent => EntityId1, EntityId30, EntityId44, EntityId64   Then the system is probably a lot more flexible and easier to implement. It even is contigous in memory but it doesn't necessarily iterate contiguously over the components.   For example the components of EntityId1 and EntityId30 could lie far away in memory from each other.   Any tips are greatly appreciated.
  5. Much of those costs are also the source of the strengths. I don't think it is "longer than they ought to be". Yes, it takes more time, but that is a cost paid for an actual benefit.   The performance killers are well documented. Opening up every #include is time consuming, and features like template expansion cause compilation time to grow rapidly. However, the benefits from those compilation costs can be amazing.   One of the strongest features of the language is that the compiler digs deeply into every function and searches for things to elide and eliminate, nested calls to inline, code to relocate and merge, and evaluate an enormous number of potential substitutions in order to save a few nanoseconds at runtime. Trying to do the same thing with more modern languages, the deeply-nested call trees that ultimately resolve to a single data read, the logic that in some builds vanishes completely, these are opposite of the modern language functionality.  It is possible to get some of that benefit with JIT compilation and hotspot analysis done at run time, but that moves the cost to a different time that is often unacceptable in games.  Sure it is fine if one of the load-balanced business servers in a server rack slows down for a moment for a hotspot optimization, not so much if the game stutters.   The compilation model used by C and C++ and several other older languages include features that are completely at odds with features in more modern languages.  You cannot perform the heavy optimizations, the heavy stripping of dead code, extracting logic from common classes or from deeply-inlined calls, the complete removal of unused logic and functions, while at the same pulling in features like complete reflection of classes.        So yes, the compilation times can be much faster in modern languages.  For fast iteration that is a good thing.  But since games are still pushing computers to their limits, there are many times when those extra compile times provide major benefits that cannot be recouped in modern languages.   It is a tradeoff. Use the right tools.     The same for switching from ue4 to unity. They are similar tools, but they have differences. If one is a better fit for the project at hand, use that one.   This might interest you http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-in-unity/
  6. Well I am following Ue4 guidelines. I started with the ShooterGame example which already had around 70 header files.   They create a file called something like MyGameClasses.h which contains every header file from your project. Then they put this header file in MyGame.h and MyGame.h needs to be in every file that you create.   Note that MyGameClasses.h is auto generated from their build tools. Then they use something called a unity build where they put everything in one file and then hit compile.    I ripped everything apart and I am managing my headers now manually with proper forwarding etc and I turned the unity build off. Also they have a tool that parses every header file to generate the necessary reflection code which also needs some time to run. I have also put most header files in the .cpp files so that I can avoid an additional header parse.   Now I am pretty sure I can optimize the build times a bit more because it took me 3 hours to go over every file and fix the dependencies and I probably have done a few mistakes but I don't think that there are any low hanging fruits.   For the architecture I don't think I have too much freedom If I want to use unreals gameplay framework. But I still don't know why it has 27 dependencies, at least I can not find that much. I think it has something to do with their build tool and the way they generate the reflection code. I should investigate further.   I also do not want to use blueprint, I am not a big fan of visual scripting, also the blueprint system comes with its own problems.   I am thinking about integrating D or C# but I am not sure how much work that would require and I really have no experience with this kind of stuff.
  7.   Honestly, 100 seconds is nothing to complain about. Actually 100 seconds for a build is blazing fast compared to the stuff I have to deal with daily. You can barely get up, walk to the kitchen and pour yourself a cup of coffee in that time!   If you want to get stuff done stick with the tech you're familiar with. Switching your entire technology base just because you don't like to wait two minutes for a build is just insane.   EDIT:   Fun fact, while typing this post originally I was actually waiting for a build to complete. I can guarantee you it took longer than 100 seconds ;)   Just to be clear, we are talking about incremental builds right? I usually program with some sort of REPL where I hit the compile button several times are minute. I probably have to lose that habit when I code in C++.   But it's jit'ed so you won't notice the "second" compile time. And if you do a release build I think Unity converts the the IL code to C++. I think they call it IL2CPP not sure if it is already live though.
  8. I am on the verge of finishing university and I haven't really made any projects even though I am programming almost every day.   3 moths ago I decided to start a project that I will actually finish. It will be a coop game. I started in Ue4 and I think it is a really great engine but my project is starting to get bigger and bigger and my iteration times are decreasing rapidly. I have around 140 files and my compile times are getting worse every day. A simple change in my Character.h will result in a 100 sec build time. I am already managing all my header files by myself and I decided not to use the unity build feature but it is still not great.   To be fair this is the worst scenario because my Character.h has 27 dependencies but it is also the file where I am currently spending the most time. All files are on an SSD. I really don't enjoy working on the project anymore.   I think I really want to move away from C++. I know that there is Mono for Ue4 but it doesn't seem to be a very active project. I think if I want something like C# or D in Ue4 I would have to maintain the bindings by myself and I am not sure if that is what I want to work on right now.   So I am thinking of switching to Unity. But Unity comes with its own problems. The built in networking seems to be very bad and Unity is actually working on a new networking implementation called "UNET" which is already available in the 5.1 beta. But the beta access is limited to pro users which cost $1500 or 12 month * $75 which is too heavy for a student just to get beta access. Then there is something called boltengine which seems pretty neat but it is maintained by one person and it is still in beta and costs $80. Overall Unity feels pretty bare bones compared to Ue4 but programming is actually pretty fun, everything compiles instantly and errors don't crash the editor (at least not yet).   I am not sure what I should do. Am I crazy for wanting to switch from Ue4 to Unity?
  9. I am studying computer graphics with opengl and d3d and I am looking for a game engine that allows low level tinkering. For example I should be able to implement my own lighting solution.   I tested many engines and I know that I can create my own shaders in unity and udk. I also know that unity offers a good amount of shader access, someone recently implemented voxel based global illumination.   Do you know if the same thing is possible in UDK? I am not sure how far I can go with the material editor.   Maybe there are other quality game engines like unity or udk that allow low level programming?
  10. [quote name='ddn3' timestamp='1332716395' post='4925205'] If you want to use XNA just be aware of it's limited deployment options. It's really designed for windows devices ( be it 360, mobile Win devices, or PC running windows ). The main differences between it and other engines is it uses C#. Most engines are written C++ with wrappers for Obj-C or Java but at it's core still C++. A few well known engines support C#, like Unity 3D. C# being one of the more modern languages have benefits for beginners but for professionals, the tradeoff in terms of performance usually isn't deem acceptable. Good Luck! -ddn [/quote] i only want to develop on windows. i thought the core of XNA is c++,mhhh.. well i just read it in some forums. how big is the perfomance tradeoff ? edit: what alternatives do i have ? i made a quick google search and found this => http://www.sfml-dev.org/features.php its written in c++ but usable with c#, dunno how this works out for game dev. maybe u can give me a better alternative ?
  11. okay XNA looks pretty interesting i think i start with [url="http://www.3dbuzz.com/xcart/product.php?productid=79&ref=12"]http://www.3dbuzz.co...uctid=79&ref=12[/url] i would love to read some books / guides around 3d application , like lightning system physics etc. what would you recommend me to watch / read ? edit: [url="http://www.amazon.com/Learning-XNA-4-0-Development-Windows/dp/1449394620/ref=sr_1_1?ie=UTF8&qid=1332708061&sr=8-1"]http://www.amazon.co...32708061&sr=8-1[/url] http://www.amazon.com/Microsoft-Studio-Creators-Second-Edition/dp/0071614060/ref=sr_1_3?ie=UTF8&qid=1332708061&sr=8-3 these books sound quite interesting
  12. i want to create a beautiful looking FPS shooter and i have plenty of time to create it. Would you say that if i invest lots of time i could get a really good looking game (engine?). I dont mean the graphic provied by the assets from the designers, more like realtime lightning , realtime GI , images based reflections etc. Will ms update XNA to provide dx11 features ? I just dont want to waste my time. i thought of starting with 3d buz XNA 101 and if they wont provide dx11 support i can easily swap to ANX http://anxframework.codeplex.com/wikipage?title=HowTo%2fConvertXna&referringTitle=Documentation because it provides openGL 4.2 and dx11 and the proejcts can be easily converted. well thats my plan atm
  13. hey, iam a proammer since ~ 2 years and i know c# java and lua and i want to create a game. I know there are plenty of "free" game engines out like unity ureal and cryengine3. But I have a very special game idea in my head and i have plenty of time to realize this idea. the problem is that i have to adjust my gameidea because some conecepts are not 100% implementable in the these 3 engines. What isnt a big problem. So... i just found XNA. so what is xna? i already know its a framework. but what does this mean ? what is in the framework ? ( drawing , lightning , physics, ai ). Are there limits , if yes what are these limits ? I also read that its very complicated to create a 3d games , they said XNA should be only used for 2d games , is this statement true ? what about the perfomance of this framework ? is XNA capable of directx 9 , 10 or 11 ? i know there are other frameworks like ... hmm ANX ( [url="http://anxframework.codeplex.com/"]http://anxframework.codeplex.com/[/url] ). what alternatives do i have ? And why should i use XNA i know that are a buch of questions, but i couldnt find an answer to them. thanks.
  14. i think i will choose udk
  15. Hello, i want to start a game project as a programmer, but i dont know which engine i should use. I tried unity , udk and cryengine and i did a lot of research but i still cant decide. [b]My aim is a :[/b] -Coop fps shooter -random generated map ( interior only, connection of different rooms ) - i know csharp and java - interior should have dark reflective surface like ( [url="https://secure.mycrysis.com/sites/default/files/wysiwyg/images/Crymod/b7d67ced5e0f26f86973f88a7401e082.jpg"]Secure.mycrysis.com[/url] ) my personal review of the engines [b]UDK:[/b] -familliar coding language , simillar to java but still a little bit strange. - cant bake lightmaks into procedural objects, i need to do alot of workarounds in udk - alot of tutorials and many tools [b]Unity :[/b] - Very easy to learn, i can create scripts in csharp with mono - lot of tutorials -big community - need to buy the pro version for realtime lighnting. [b]cryengine:[/b] - realtime lightning , would fit extremly well in my project - good and easy to use editor - very hard to get into the coding stuff. dont know lua and c++, and the mono version is still in development. - still in development , like no exporter - very few coding examples Which engine would you recommend me to use ( for my project and future projects ) ?