Advertisement

C# + AS3 + C++?

Started by November 18, 2017 08:24 AM
26 comments, last by Dirk Gregorius 6 years, 10 months ago
9 minutes ago, Jemme said:

That answer will decide the path you take, for example if you want to be a render programmer just build a render , physics ? Then use someone else's render engine and just do the physics.

I feel I'm generalist. Probably to make life easier, I want just to be able to make cool editor and combine all engine modules to make them interact each other in the complete and united engine, but with some kind of modularity in mind. I guess this is more  general programming experience than something special like physics (and probably I will learn a lot about computer science and software development).
Also according to "Game engine architecture" book boost library documentation is a place (maybe bad for beginner) to learn a lot about computer science. What do you think about it?

 

22 minutes ago, Jemme said:

I learned math from tons of different books and articles, lengyel book is very mathy in the sense it's quite difficult to understand for non degree people. 

Actually I have degree, but in mechanics not computer science. And right now I'm learning c++ and reading "Game engine architecture" book :)
 

 

28 minutes ago, Jemme said:

I'm building a framework a bit like SDL and SFML but with more render APIs and custom physics.

That's very smart idea! Yes, this is what I'm thinking about -- to make hardware- and API-agnostic layer on top of steam audio (or steam audio on top of API-agnostic layer?) to make cool audio system, take PAL and make physx/bullet abstraction layer, take Sony Editor and make mixture of woven together engine modules! But what knowledge I need to make framework a bit like SDL and SFML?
 

 

46 minutes ago, Jemme said:

You can then add the "engine" separately to supply scene manager , entity systems etc.

Probably I need specific knowledge to make it. But it sounds very interesting and doable! I would like to make platform independent layer and core systems. Scene manager- this is all about scene graphs? And I'll need to integrate some kind of COLLADA?

 

51 minutes ago, Jemme said:

Check SFML and SDL source, look at XNA structure and check out eberly engines:

https://www.geometrictools.com

Wow! Thanks! But I'm not sure I'll understand the code.

 

On 19.11.2017 at 11:57 AM, frob said:

EA has an enormous body of tech tools and libraries that cover just about anything you want

Yes! Looks like Frostbite is made up from a lot of EA and 3d party tech:
https://twitter.com/frostbiteengine/status/428983833921589248

Audio - SOUNDR!OT (as it's internally called by EA according to "Game engine architecture" book, but DICE stated like it's their own audio engine
http://forum.i3d.net/threads/audio-tech-in-the-frostbite-engine-part-2.140075/ );
Animation - ANT + Granny;
Video - idk (Movie Player?) + Bink;
Physics - Havok + DICE destruction layer on top of it.
So it's seems like they used a lot of modules to complete engine very fast (I will make another topic about it later and relationships with Renderware and UE3). So what DICE has made it's rendering systems, game logic and editor. Right?

Most still use of for editors, check out game coding complete, it has a pretty good editor section about using XML for objects , dynamic UI and communication with the engine. It's a. Great kick start to experiment with.:

https://www.amazon.com/dp/1133776574/ref=olp_product_details/146-9356820-0862526?_encoding=UTF8&me=

Unfortunately I haven't used boost, most would say STL is not good enough or boost isn't and use your on, but chances are the people that wrote STL know what there doing.i haven't bothered replacing STL yet but do use slot maps and things for hawing instead of there map.

To clarify the degree comment, I meant a pure mathematics degree rather than an applied field, for example my degree was computer animation (awful) they covered the bare minimum without showing how it works etc. Lengyel book focus alot on proofs and accurate math notation which can be good and confusing if you want to quickly learn and apply seeking many sources might help. I prefer drawing maths to understand it on a whiteboard or visualising things, although I would not recommend trying to visualise quaternions xD. Lengyel engine series book is alot cleaner and more of a best hits which is a great spring board.

Doing the framework just lets you separate talking to the computer and implementing structures to manage that communication. For example the engine doesn't care how stuff gets drawn, like dx11 or even a. Ray tracer it just wants to say draw this thing. And the framework doesn't care gown ngine structures a scene or scene graph it just gets given data and outputs a result.

Also the editor is a separate program but uses the engine but as a editor DLL version so in a way it goes:

Framework > engine > engine DLL editor layer > editor 

Specific knowledge can be gained from books, game cording complete has a big section on scene graph, a scene manager just stored scene and loads them etc.

The thing is alot of these company's built there engines along time ago and learned the ropes , then they just iterate adding and removing over time. Like fallout 4 is still gamebryo at its core there geck is still probably based on Todd's original core, although interns of usability engineering it's not a smooth tool to use....

You won't get to the same level as they have because it takes a long time and alot of people, so aim for something a bit more realistic for example make a framework to render this scene:

https://developer.nvidia.com/orca/amazon-lumberyard-bistro

Have some particle effects, some butterfly etc. Don't aim to have for example a full animation engine that lets you build and tweak themselves just make an animation engine that plays them back and blends them and that's it.

My advice would be if you really want a job in a specific engine filed focus on that, building a full engine isnt worth it without a very specific goal like portfolio or its part of some special commercial project like simulation of power plants or others.

Advertisement
15 hours ago, Michael Davidog said:

Ok. So if I will start from first step the official engine documantation will be my first entry into game development? But what the main resource of tech and knowledge that guys at Epic games and DICE using? For example how they all figure out how to make 3d audio system? It's seems like there a very little information in the Internet and even less practical implementation in the C++. That's what makes me wonder every time..
Or maybe this is all about Bachelor/Master/PhD degree in computer science? Or maybe some cool books with code examples?
Unfortunatelly, I dont' have such degree - I'm self-taught.

Yes, certainly most of these people at top studios have university educations. They also bought and read a lot of books, and they also learned on the job (few people start their career at top games companies; most work their way through the industry into such positions). It's an ongoing process of education and learning overyears, which means there's no magic answer for newcomers where we can say "just do X and read Y and you're ready to code the best games".

14 hours ago, Kylotan said:

university educations

Is it possible to replace it with something else?
But again if I want to learn all things I need just go through the process with them like intern?
 

 

13 hours ago, Kylotan said:

They also bought and read a lot of books

What do you think about this road map?
https://github.com/miloyip/game-programmer
 

14 hours ago, Kylotan said:

there's no magic answer for newcomers where we can say "just do X and read Y and you're ready to code the best games".

Maybe this is a dream but that's would be great if industry leaders will start to intensively comment their code by explaining some things with referencing to books/articles for more details and implementation. This code will be embodied in history as common and most influential. There will be a lot place for revision and improvement by community. Open standarts are the most effecient time-saving things:)

Regarding university education, that depends on the location on the globe. In some regions the developers have no advanced formal education, and are entirely self-taught through online and physical resources.  In other regions of the globe a 4-year degree is a hard requirement.

Formal education does several things for you.  It requires you to learn topics you are not interested in, topics you may have never learned on your own. Instructors know things you don't know that you don't know; on your own you would never think to research a topic because you had no knowledge that the topic existed.  It is a large project with a lot of work, and for many people it is the first introduction of what it means to do intellectual work; the mental work most students experience is minor relative to the mental work most game programmers do on a daily basis.

 

Regarding a collection of books, that doesn't really make sense.  Every person is different, every project is different, everybody's needs are different. There are some book lists for specific technologies, some highly popular articles and web pages that people can read, but there is no universal checklist. There are some fields where rote memorization and repetition are at the core. In those fields a set of standard books can be the "most efficient" at teaching the thing.  But people learn differently, and people have different interests, and people learn different things.  A database developer, a graphics developer, an audio system developer, a tools developer, there is some overlap but much information and many skills are unique to each.

For specific technologies there are books.  There are book lists for algorithms and data structures and processes that are common across all languages; these are the core of Computer Science and they will always be applicable. There are book lists for learning c++, for learning C#, or Java, or other languages. There are book lists to help with linear algebra and with graphics libraries. There book lists to help with software patterns, with testing patterns, with client-server communications patterns.  Sometimes people's book lists will drop a few old books or add a new book. 

You should probably start with Google since there are often discussions here or on StackOverflow or Reddit or other sites with book list recommendations.  If you still can't find recommendations for a topic, we could likely help you find a book list on the topic.

Frob already did a good job of answering you, but I'll add a couple of bits.

13 hours ago, Michael Davidog said:

Is it possible to replace [university education] with something else?

The facts you are given at university can be obtained elsewhere. You can go on the university website, look at their reading list, and obtain those books. But education is not just about reading the books - it's about performing exercises that prove you've learned what was in the books, and continuing to do that for months and years. This is why the advanced knowledge that top game studios have is not a single book or a single source of information - it's the combined years of education and experience of many different people working together. This is why professional engines and code are not a good source to learn from, and why you have to be realistic in your expectations of what a single person can achieve when just starting out.

14 hours ago, Michael Davidog said:

What do you think about this road map?
https://github.com/miloyip/game-programmer

It looks reasonable, but I don't know any of those books and can't vouch for them. I would also be concerned that it starts off with the fun stuff, and then 1 or 2 books later plunges you into boring algorithmic textbooks, which will be a turn-off for many people. I think I would suggest getting something like the 'Create your own computer games with Python' book and just starting from there.

 

14 hours ago, Michael Davidog said:

would be great if industry leaders will start to intensively comment their code by explaining some things with referencing to books/articles for more details and implementation.

You're looking at things backwards. The way to learn how to program is not really to look at super-advanced source code and follow the references back to the books. As noted above, these are very complex programs and the concepts they use are often far too advanced for a beginner to make any use of them. The best way to learn is from entirely the opposite direction - start with the books and the simpler programs, learn how they work, and build on that knowledge so you can later start to incorporate more complex features and understand more difficult concepts.

Advertisement

Regarding the physics references you cited earlier I would not recommend to implement any of those. Game physic engines also didn't evolve from there. They are good reads and in particular Baraff is one of my favorite writers. But if you are curious about physics engines and you also want to learn more about programming I highly recommend looking at the GDC physics tutorials publications here:

http://box2d.org/downloads/

A really good learning exercise is to take Box2D Lite and port it to 3D. Eventually evolve it into a more full-scale 3D physics engine. This is pretty much how I started, though I began from studying the ODE. I have a degree in mechanics/engineering as well and I found this to be a good learning/career path looking back. You can then write authoring tools (e.g. ragdoll creation) if you are interested in tools development. My personal preference for tools is Qt and we use this also at Valve for all our inhouse tools. I learned quite a bit about programming from Qt. After finishing physics you can add animation. So you evolve by taking small steps and iterate on something that is functional as a whole and that you can show. If you want to go further integrate your systems into e.g. Unity or Maya to make it accessible to non-programmers.  

I would not recommend to write an 'engine'. Have you worked at any game company and shipped any games? If not, you don't know how games are actually made. I find it interesting that students often want to start writing something called an 'engine' without having any idea how games are actually made. Writing an engine without context is hard. Saying that, writing some games and developing tools to make those games is probably a good exercise. You can then re-use some of your old work and use it to kick start new projects. Working on a game will be much more fun. You can show it people and get feedback and iterate. And again you will have something to show to other people. 

This topic is closed to new replies.

Advertisement