World Creation System - Where to start?

Started by
18 comments, last by JD 18 years, 6 months ago
Hey all, Although I would consider myself a technical artist with several years experience with Maya, Max, and game editors including Unreal Ed, plus experience with various scripting languages I’m pretty much a programming virgin. More and more, I’ve had a strong desire to take up programming, because as an artist and designer I’ve devised several innovative and practical solutions to content development and implementation that haven’t been filled by typical game engines and/or game editors. Over the last several years I’ve been working on the concepts for a world creation approach that I have yet to see implemented or attempted by any existing game engine and editor. After working out all of the various details for the system’s concept in Maya and seeing that it works exactly how it should I have been getting more and more excited about the idea of creating the system as a set of editor tools for a game engine. It’s cool to see the system work in Maya, but ultimately I want it to work interactively in a game. However, I know that getting my system to work in a game engine will be no small task, but I’m so convinced that my system will revolutionize the way designers and artists create virtual worlds that I’m willing to do anything to get it to work including learning C++ and DirectX from scratch, even if it takes two or more years to complete. If I knew a programmer I could trust as a business partner I would probably just layout all of the concepts and details of operations/processes for the system and create it as a collaborative effort, but at this point I’m willing to do it on my own if I have to. Unfortunately, because this system is so heavily reliant upon how the game engine works and will be integrated into the editor tools it will have to either be created for an existing game engine that I can modify or I will actually need to create an engine from scratch, a task that I’m not really interested in apart from creating my system for it. So anyway, I was hoping that I would be able to ask for some general advice about how I might go about either modifying an existing engine or creating my own. For example, if I were to create a very simple generic 3d engine with limited rendering capabilities that contained my world creation system would I be able to port just those aspects of the program to another engine? Also, say for example that I wanted to develop these tools for the Unreal Engine; I’m assuming I would need the source code, right? In this case I’m also assuming I would have to purchase an Unreal license, something I don’t have the money for. Is there a way around this development process? Assuming that I can’t adapt an existing engine to integrate with my system do to technical, legal, or financial issues and I do have to create my own engine from scratch, where would you guys suggest I start? Do I need to learn C++ first, DirectX, or both? I also don’t know if I would need to learn anything about OpenGL or not. Like I said I’m pretty much a programming virgin, so I’m just looking for very general advice at this point. I really want to emphasize though that I’m committed to creating my design system and tools and that I believe I have the intellect to learn whatever I need to know to accomplish this. Even though I’m an artist and designer, scripting, mathematics, abstract concepts/relationships, and other left-brained activities still come fairly easily to me. I know this is lengthy for a first post, so I apologize for that. I want to thank anyone in advance that can give me some advice. Thanks. Matt
Advertisement
Actually, it depends a lot on what you have the intention to do!

The main thing is to know at which level you want to program. If your ideas are implemented at very low level (basically, at the triangle level), go for OpenGl or DirectX. If it is a more general kind of thing (at the mesh level, for example), go for an engine like Ogre (consult the FAQ for a view at good Open Source engines).

On a more general view, if you want first to do some kind of prototype, you might want to go for an easier language like C#. This way, you can implement your ideas without going through the hassle of learning a difficult language like C++.

Best of luck for your ideas!
I doubt that my system will require control at the triangle level, but it is fairly complex and involved. I should rephrase that last sentence by stating that although I don't plan on creating any geometry in my system in the editor it will however require control of vertices over imported static meshes.

I don't know much about C#, so I'm not sure how different it is from C++ and if it will be able to do the things I want to do, but if you think it might be suitable for what I'm trying to do then I would be interested in learning more.

Like I said I don't know exactly where to start, so your advice is appreciated. I'll try to research C sharp tonight, to see what it's capable of and what it's limitations are.

Thanks.
This will take you much longer than two years. Expect to spend at least a year gaining a solid foundation in programming before you even think about starting your project. Then expect that you will spend months and even years writing failed version after failed version of your project, starting over each time. Becoming good at writing small programs is easy if you are smart and talented. Becoming good at writing large programs requires vast experience. It just takes a lot of time to become experienced, that is all that there is to it.
I would think longer than a year to just think about it...but I guess it just depends on the person. You may speed by most of the stuff and oculd probaly start working on it in a year but I know I wouldnt do that. I like to know how everything works so that if I ever stop working on this particular project, I would know how to do other things.

Sounds cool though, gl.
DONT LET THEM DISCRIMINATE! BRING BACK THE BLACK!
The compexity of what you're suggesting is beyond a two year project, especially if you're doing it alone. Listen to Glak, just like any language it takes years to speak any language fluently, and it will take a lot of trial and error before you even come close to what you set out for at the beginning.

However, if you are as dedicated as you say, you will prevail. With that said, you need to first pick up a book that teaches C++. I would also suggest that you take college classes in math (preferably up to calculas). Without the math C++ will take even longer to learn and master since the two are interrelated, IMO.

Personally I've been programming for 10 years. The first 5 years were spent learning C/C++ (I should have taken math at the beginning :)), and the second 5 have been spent writing and perfecting my game engine.

Good luck on your endeaver.
Thanks for all of the feedback guys.

I guess I was being a little too zealous and optimistic about what it would take to get my project completed. So it sounds like I definetely need to learn C++, but I didn't see any mention of DirectX or OpenGL so I don't know if these are necessary for what I'm trying to accomplish or just a bonus.

As far as mathematics are concerned I'm not too worried. I took advanced math classes all through high school and college and have experience with calculus. Granted, it's been a while since I've had to use math so I'll probably need to refresh myself on the subject. I think though that if I see it as it applies to practical situations that it will come back to me.

I don't expect my system to be outdated even in the next five years because it's not dependent upon current graphic standards so I don't care if it takes me 3-4 years even to complete. However, this is making me rethink the prospect of finding a programmer that I could partner with as a collaborative effort.

WhatEver mentioned that I should take classes for math, what about classes for C++? Is there a huge advantage to taking classes in programming as opposed to learning the language from books and tutorials? I already have a bachelors of art in digital animation production so I'm reluctant to return to school if it's unnecessary, mostly for financial reasons. But if you guys think it would make a significant difference I'll look into it.

Thanks again.
I am a current Software Engineering student and I think that taking classes will speed up your learning process since it forces you to learn at a certain pace rather than leave it up to your own instincts to tell you when to read something or not. The class I had in C/C++ went over the entire language in 10 weeks which is a bit much and it also included an introduction to UML diagrams for design. Although we did not cover a lot of C syntax and coding style. It was a breeze for me but only because I had taken one High School class in C/C++ and I had prior to that taught myself from one of the SAMS books and even before that I had used two other modern programming languages. So I would say that it was an easy A but for you it might be more challenging but I would highly suggest it.

Another alternative that would probably be easier for you would be to outline an interface for a C/C++ programmer. I'm sure that you have psuedo code and mathematical algorithms worked out. I would say that you want to learn a small bit of programming just mainly the elements of UML (Unified Modelling Language) and create the all the function descriptions and such and a few flow charts which describe the algorithm from your psuedo code and then hire a programmer to implement it based on your design. If you are as confident in your algorithm as you sound then you probably won't mind spending a little money on a prototype in order to market that as an engine.

As far as the math and Calculus go I would say for 3D programming basic goemetry and matrix algebra would be more aplicable. Though being introduced to the concepts in Calculus upto and including Differential Equations and Transforms is highly recommended that is if you want to understand everything your doing you don't have to understand it all to get it to work. A lot of programmers to silly things because they want to know how it works but all-in-all you don't have to know how it works just how to use it.

Good luck to you man!
As for classes, how fast do you want to learn? If you want to learn fast classes are just a waste of time. They go at too slow of a pace. I think that books are the key. Well sometimes a first class is good, to get the basics down before you skyrocket off on your own. I have a BS in CS and found that I learned very little in my classes.

I have heard good things about "Accelerated C++" so I would look into that as a first book. I also recommend that you pick of "The C++ Programming Language" by Bjarne Stroustrup, the creator of C++, as your 2nd, 3rd, or 4th book. Oh, expect to buy a lot of books. However avoid books that have names like this: "learning game programming with this and that". You want pure books that focus on one topic. After a beginner's book or two you want to go straight to the ones that aren't labeled as beginner's books.

You will also need a book on data structures and algorithms. Learning about data structures is essential to becoming a quality programmer. If you can't write your own data structures than you are missing something. HOWEVER, once you have mastered the creation of data structures put the ones that you wrote aside and use the ones that come built into C++. As a learning experience they cannot be replaced, but when it comes to real code they should be the first thing to go.

DirectX and OpenGL are APIs. APIs are utility code that someone else wrote for you, specific to a problem domain (in this case gaming). They will be moderately important to your final project but beginners need not concern themselves with them. You need to focus on basic and intermediate programming skills first.
that last anon is me, sorry

This topic is closed to new replies.

Advertisement