Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 04 Jul 2003
Offline Last Active Today, 12:32 PM

#5141233 Blender for making Games?

Posted by JTippetts on 22 March 2014 - 10:04 AM

Seems like we might need a 3D Modeler War tag in addition to our Language War tag.

#5140451 What is the best 3D game to make first?

Posted by JTippetts on 19 March 2014 - 04:16 PM

JTippetts has a compelling argument for picking something you like, but sadly many beginners don't start small.  
I note that JTippetts' goblin project looks like it is now in year 11. That many years, even at a hobby level, disqualifies it from being a beginner project. Over the course of a decade you can move from beginner to veteran.

Heh, true, in a way. The goblin project is only a couple years along, but before that were several isometric experiments and projects that led to it. I did do a lot of 2D stuff before I ever switched to 3D, so the 3D switch was cosmetic only. Still, though, I have always worked on RPGs. It's why I got into game development, so all these silly progressions and learning paths that people try to pawn off just seem, to me, to be specifically engineered to drive a certain type of person away.

Most beginners aren't looking for a decade-long project.

Not necessarily true, and kind of beside the point. Beginner isn't an all-encompassing designation of common characteristics. And making RPGs doesn't have to be a decade-long affair; you can just as easily make smaller ones. Many of the original RPGs I grew up playing were hardly complex.

"I want to make an MMORPG" is the common refrain in the For Beginners forum.  After a brief explanation about what "MMO" means, the next week it becomes "I want to make an Online RPG", then after they post a few times in the online forum and discover it requires work, a few weeks later it becomes  "I want to make an offline RPG", then if they bother to follow up, becomes "game programming is stupid. What are good free game makers?" And then a few months after they appeared on the board, they vanish after learning that while playing games is fun and entertaining and a diversion, it is different than making games which requires thought and effort.

On the other hand, this is an excellent filter for those folks who might just be wasting their time chasing something they don't really want to do. Being a game developer isn't a "right" that everyone possesses. The possibility of it is, sure, but if someone can't stick it out, then they can't stick it out and it's best to find that out as soon as possible. I understand the idea of all these step-by-step progressions that everyone makes. You know, "first make Pong, then make Breakout, then make Tetris, yada, yada, yada." I get it, someone's learned a few things and they want to give a hand up to others. But the good ones, the ones who are really going to make it... well, I doubt they usually do so by sticking to any progression laid out by someone else. Instead, they'll make it by chasing their own dreams and desires with discipline and focus. If they require a roadmap laid out by someone else, then I highly doubt they have the creativity and initiative to really make it happen. You can learn the things you need to learn without ever touching a Pong or Breakout clone, if such games are not your inclination. Following someone else's curriculum just seems counterproductive to me.

My recommendation for beginners is the same as my recommendation for everything:  Build the simplest thing that will possibly work.  The philosophy has worked well for me for two decades.

+1 This is an excellent philosophy to have.

#5140345 What is the best 3D game to make first?

Posted by JTippetts on 19 March 2014 - 10:25 AM

My first 3D game has been (of course) an RPG. http://i.imgur.com/OzhAThQ.jpg.

The thing with all of these pathways and timescales and suggested learning curves is that they never take into account an individual's personal interests. For example, if I had been required in the beginning to start out with Pong or Tetris, or to make a 3D racer as my first step in 3D, I would have just walked away from game development in general because those kinds of games simply are not in my area of interest at all. My focus has always been RPGs, and anything that deviates from that has been a side project at best. My advice is to follow your interests, and learn what it takes to make the 3D games that you want to make, not the games that supposed experts recommend you make.

#5140035 opengl game

Posted by JTippetts on 18 March 2014 - 09:51 AM

phil67rpg, I'm curious. You've been asking these same basic level questions for more than 10 years now, receiving advice that has apparently been of no help whatsoever to you each time. What, exactly, do you expect to be different this time around?

#5139254 Blender for making Games?

Posted by JTippetts on 15 March 2014 - 10:36 AM

There has been an interesting recent development.

For the last several weeks, Dalai Felinto has been working on Blender Cycles baking. For those unfamiliar with it, Cycles is a renderer for Blender (an alternative to Blender's traditional Blender Internal renderer) that provides a shader-like node-based material system, path-tracing, support for the Open Shading Language, and support for GPU acceleration of rendering using CUDA or OpenCL. Cycles provides excellent lighting using node-based lights, emissive materials, etc... However, the largest drawback for Cycles in game development pipelines has been the lack of ability to bake the various data out to texture maps. The work that DFelinto is doing is intended to fix that. It's still very rough, and very much in progress, but in the future we can look forward to being able to use Cycles' powerful capabilities to bake light maps, environment maps, normal maps, diffuse, etc... It's going to end up pretty powerful, I think.

As always with experimental and in-development Blender stuff, you can check out builds at graphicall.org; in particular, tungerz has a Win64 Cycles baking build here that is kept fairly up-to-date from DFelinto's git repo.

#5137275 Reversing a procedural generation

Posted by JTippetts on 08 March 2014 - 12:12 AM

Voxel world chunks do tend to end up very image-like, though, enough so that schemes such as RLE can achieve pretty significant compression. The caveat, of course, is that the more types of blocks you include, and the more widespread and scattered the types are throughout the world, the less effective RLE will be. You wouldn't want to actually use an image compression library (they're optimized for the 2D case, usually) but you can look to them for ideas.

#5137157 Reversing a procedural generation

Posted by JTippetts on 07 March 2014 - 11:34 AM

If a certain amount of time has passed since anyone visited a given planet/system/galaxy, you can probably prune the save data for it from the save file. Hand-wave it away as enough time has passed that the things that were done have been erased by natural processes. This pruning can be done whenever the save file is accessed to keep it lean. 


Compress as much as you can. If something is either there or not there, figure out some way of storing it as a single bit if possible, rather than as, say, a bool


Use a binary format rather than a text-based one. Text formats are for human-readable content and can vastly inflate file size.


If you are doing voxel world generation, look into storage schemes for large amounts of array data, such as run-length encoding schemes used for TGA files. Research lossless image compression to get ideas for how you can compress your array data.

#5137034 Reversing a procedural generation

Posted by JTippetts on 06 March 2014 - 06:56 PM

This is a SUPER SIMPLE random number generator:

int RNSeed=12345;
int randomnum(void){
	return RNSeed;

With this initial seed, the first time it's called it results in 770159010, and the second time it results in 808599291.
This will happen EVERY time I start with 12345. The problem with reversing the calculation is the modulus of 987654321. Any seed value greater than that number will be some value that can't be found and therefore the previous seed us unknown. The solution would involve a random number generator that can be reversed-- I don't know how to make that (or if it can be made at all).
All of you are either think I don't know how random generators work or you are missing my point entirely.

They're trying to explain to you that what you ask is impossible for anything non-trivial. Find another way.

Edit: to further clarify, pseudo-random generators CAN be reverse engineered. That is part of what people do when attempting to crack cryptographic schemes. If you can reverse-engineer the generator you can crack the encryption. It's a very difficult task. Some classes of PRNGs are much easier than others. And the greater the period, the more difficult it can be. What you are asking for is to reverse-engineer a PRNG of such an enormous period (for any non-trivial game state) that you could literally burn billions of hours of computing time trying to reverse it.

I understand what you are trying to achieve. If you COULD somehow magically come up with the seed required to represent any given game state, then you can reduce the workload of saving the world. However, the act of coming up with that seed would be such a Herculean effort of engineering and time, that it's just not feasible. You CERTAINLY won't be saving yourself any time; quite the opposite, actually.

#5136695 Switch or Not?

Posted by JTippetts on 05 March 2014 - 10:44 PM

Only 4 months, and you're 'bored'? Doesn't really bode well. What makes you think switching languages is the answer?

#5135894 Please help me get past the tool stage

Posted by JTippetts on 02 March 2014 - 01:25 PM

Well,you won't be stuck, but your project might be. If you write a project for, say, Ogre3D, then decide to switch to Irrlicht, you'll be able to port concepts and non-rendering stuff over with some work, but the parts that actually touch Ogre3D will probably have to be redone. But that holds true with just about any code written against an API. Unless the API is some sort of open standard (something like OpenGL, say, where the standard is set by the ARB, but the actual implementation can be done by any number of vendors) then it's unlikely that you'll be able to move it without heavy changes.

You can mitigate the damage by interfacing with the API through an abstraction layer. This does add code and complexity, but it also means that if you do have to switch APIs, you probably only have to rewrite the abstraction layer, rather than the entire game.

I've run the gamut of 3D apis: OpenSceneGraph, Ogre3D, Panda3D, Irrlicht, Crystal Space, etc... before finally settling on Urho3D. Each time, I've ended up massively rewriting lots of code, so yes, switching things is a timesink. And there really is no "best". Put that out of your mind. There is only "sufficient for my purposes". Sometimes, you have to just take something and make it work the best you are able.

#5135851 Is it possible to render minimap in a different way?

Posted by JTippetts on 02 March 2014 - 09:28 AM

Are you meaning create another scene for rendering minimap? Would that be too complicated? I don't want to create a copy of my game scene so that I can use different materials or geometry. I just want to create one scene, and render the minimap based on it.

That's exactly what I mean. The minimap is much smaller on-screen than the main view. That means that it doesn't need to be anywhere near as detailed as the main scene, so re-drawing the main scene itself, but with different materials, is doing WAY more work than is necessary, even before the work of iterating the scene and changing all of the materials, then iterating and changing them back for the next main view render. If a piece of geometry is represented by 1000 faces in the main view, it can be represented by a dozen or less in the minimap, and that's a thousand-fold savings you've made.


And it should only be complicated if the design of your scenes is complicated and/or broken. If done right, it's as easy as


minimapscene=new Scene();


And you don't create a direct copy of your main scene. You add different geometry to the minimap scene, to account for the fact that the view is smaller. Sure, you need some means of tying the minimap geometry and the main view geometry together, but that should be trivial if designed right.

#5135794 Is it possible to render minimap in a different way?

Posted by JTippetts on 01 March 2014 - 11:40 PM

Nothing says the minimap has to be a view of your main world at all. You could have an entirely separate scene, with simpler geometry for each entity since you don't need to render full geometry from the world for a minimap. For example, in my game I set up the minimap as a separate scene and each entity that has a presence in the minimap uses a simple small bit of hex geometry to draw. I have camera set to draw that scene after the main scene is drawn:


You can really do it any way and with any geometry/materials in that second see you desire.

#5134185 Why XML is all the rage now?

Posted by JTippetts on 24 February 2014 - 02:00 PM

So you have to memorize a bunch of three-letter acronyms as well as memorizing standard field layouts in order to make sense of it? I can see how that would be somewhat easier for the expert, but not so much for anyone who hasn't spent their career memorizing such things.

#5134165 Why XML is all the rage now?

Posted by JTippetts on 24 February 2014 - 12:46 PM


From a strictly professional/commercial standpoint - I do EDI development as my day job.  Things such as EDIFACT, X12, HL7, FiX, etc. 


Back several years ago, many of these large, business-type data standards decided to try and push the market from using Length-Encoded textual files to markup files via XML tags.  It went horrible.  Those that implemented it probably wished they hadn't, and those that didn't still have to deal with those that did.  Here's an example of HL7v2 and HL7v3(XML-based).  Can you pick which one you'd rather try and troubleshoot and view data in?  I pick Option #1. I honestly wish XML would die.



MSH|^~\&|GHH LAB|ELAB-3|GHH OE|BLDG4|200202150930||ORU^R01|CNTRL-3456|P|2.4
PID|||555-44-4444||EVERYWOMAN^EVE^E^^^^L|JONES|19620320|F|||153 FERNWOOD DR.^
OBR|1|845439^GHH OE|1045813^GHH LAB|15545^GLUCOSE|||200202150730|||||||||
555-55-5555^PRIMARY^PATRICIA P^^^^MD^^|||||||||F||||||444-44-4444^HIPPOCRATES^HOWARD H^^^^MD
OBX|1|SN|1554-5^GLUCOSE^POST 12H CFST:MCNC:PT:SER/PLAS:QN||^182|mg/dl|70_105|H|||F<cr>


 <POLB_IN224200 ITSVersion="XML_1.0" xmlns="urn:hl7-org:v3"
<id root="2.16.840.1.113883.19.1122.7" extension="CNTRL-3456"/>
<creationTime value="200202150930-0400"/>
<!-- The version of the datatypes/RIM/vocabulary used is that of May 2006 -->
<versionCode code="2006-05"/>
<!-- interaction id= Observation Event Complete, w/o Receiver Responsibilities -->
<interactionId root="2.16.840.1.113883.1.6" extension="POLB_IN224200"/>
<processingCode code="P"/>
<processingModeCode nullFlavor="OTH"/>
<acceptAckCode code="ER"/>
<receiver typeCode="RCV">
   <device classCode="DEV" determinerCode="INSTANCE">
     <id extension="GHH LAB" root="2.16.840.1.113883.19.1122.1"/>
     <asLocatedEntity classCode="LOCE">
       <location classCode="PLC" determinerCode="INSTANCE">
         <id root="2.16.840.1.113883.19.1122.2" extension="ELAB-3"/>
<sender typeCode="SND">
   <device classCode="DEV" determinerCode="INSTANCE">
     <id root="2.16.840.1.113883.19.1122.1" extension="GHH OE"/>
     <asLocatedEntity classCode="LOCE">
       <location classCode="PLC" determinerCode="INSTANCE">
         <id root="2.16.840.1.113883.19.1122.2" extension="BLDG24"/>
<! –- Trigger Event Control Act & Domain Content -- >

 I'd have to pick none of the above. Honestly, that first one just looks like gibberish. Not that XML is any better, but still... Just total gibberish.

#5132541 I don't get c++11.

Posted by JTippetts on 18 February 2014 - 10:02 PM

Don't feel too bad, lots of people don't  grok lambdas. The thing is, you might not need the new features, at least not yet. If you don't have a strong idea of what purpose lambdas serve, then you can probably get away with not using them. Lambdas are nice, but it was possible to write perfectly viable C++ code without them for years; that hasn't changed. Just do your best with what you know, and as you gain greater understanding of programming in general other things will open up to you.