#### Archived

This topic is now archived and is closed to further replies.

# Power Render Review

This topic is 6791 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

The online version of this review is at http://www.mpog.com/reviews/misc/powerrender/ ---Power Render Review - This graphics engine looks amazing but would it be easier to write your own? Rated 2 / 5 Stars Hardly a day goes by when I don''t think of the beauty of the concept of encapsulation. Write something once, make it easy to interface with, and it works (theoretically) forever in all situations that are documented. You only have to debug it once, it makes your code much cleaner, it''s far easier to learn and use, and you can count on it working. The first thing any programmer should do on a new task of any significance is properly encapsulate everything he or she can think of. I can''t emphasize enough how important this is for major tasks. So when the concept for my latest game hit me the first thing I did was start encapsulating DirectX 7. But once I got the base for Direct 3D IM I thought to myself "Do I really want to spend a month reinventing the wheel for graphics functions or should I spend the time writing the game instead?" When a friend told me about Power Render, from Egerter Software I decided on the latter. Power Render is a powerful and fast graphics SDK written in C with potentially amazing results. It supports Z-Buffering, texture mapping, alpha blending, and more. You can check the webpage at http://www.egerter.com/pr/cdcontents.htm for more feature details. The CD costs $299 ($199 for students) for a single license and took two weeks to arrive. The author, Chris Egerter, will also email you FTP information to download part of the CD earlier. Power Render is great for what it can potentially do but how easy is it to use? This breaks down into several sub questions: How easy is it to install? How good is the documentation? How complete is the utility set? How well organized is the content presented? How good are the examples? And the biggest for last: How well encapsulated is it? Unfortunately, Power Render fails miserably on these points. Power Render is one of those chunks of software such that the only person who could understand it without virtually rewriting it is the author himself. How easy is it to install? Oops, did I say install? I should have said hard drive dump. That''s more or less what the CD is. There''s nothing inherently wrong with a hard drive dump if it''s well organized with readme files and such but you guessed it: it''s not. It appears Chris Egerter just did a "xcopy /e c:\myjunk\*.* d:\powerrender\", wrote an ''install'' utility to quietly do the inverse, and left it at that. Some of the utilities on the CD are over three years old, likewise for the documentation, and all thrown together in some cases with no documentation at all. "What is the directory doing here?" "Do I need to copy this or that?" "What is it for?" You''ll ask these and more questions when copying files over, especially with the CD. It''s very frustrating and confusing to say the least; but the frustration has just started. It took me four hours to figure out the MSVC project settings to get the included examples to work. I was so frustrated I asked myself constantly "Why the hell didn''t someone (like the author) spend 10 minutes writing these settings down?" The installation program on the CD is supposed to set these for you but it didn''t in my case. The point is moot since most people would try to get started with what''s on the FTP site, and there''s no installer there anyway. How good is the documentation? Documentation ranges from OK to insufficient to miserable to nonexistent depending on what you are looking at. What I can say is you certainly are not getting the DirectX 7 SDK help file by any stretch. The #1 working problem is dependencies are never listed but the giant spider web mass of SDK code (more on that later) requires dependencies in places you''d never guess to look. This is a problem later when you are trying to figure out "What header files do I need to include?" and "What library files do I need to include?" The primary Power Render user documentation is clear and easy to understand but insufficient to program with. It''s almost a high level tutorial for specific tasks. You also get the Power Render technical documentation which is good but needs to be organized better. Most of the functions list you need to program with but are not mentioned in the user documentation. This is a problem because the functions are basically listed willy-nilly so short of memorizing every function in the list you will never know what you need without rereading the whole thing every time. You also get a character animation guide and a landscape studio guide. The character animation guide details how to create a ''character'' for the 3D engine. It''s fine if you already know how to use it, not much use otherwise. The landscape studio guide is much better and in fact would be the best documentation in the set except it references utilities that don''t exist and won''t compile (which is probably why they don''t exist). Go figure. The documentation is also insufficient in key areas. For example, the Power Render initialization functions require you to specify how many triangles will appear in your game. The examples give an explicit number but how do you figure this out? What''s funny is the only thing documented on this is you''ll get a memory leak if you don''t specify enough. I can''t say much on the documentation that doesn''t exist except that I wish it did. About 50% of the utilities are missing documentation. To be fair, most of these utilities are years old and/or don''t work so you wouldn''t need to use them anyway. How complete is the utility set? The CD comes with a lot of utilities, as I said most of which don''t work and are so old are no use anyway. The ones that do (sort of) and you''d want to use are the map editor, the Power Render object file viewer, and a set of DOS utilities to create character files. The map editor is unsupported but will let you create terrain levels. It''s a very slow and difficult process spanning several sub-utilities but it does work to create crude landscapes. The PRO viewer is the best utility in the set and will let you load and convert 3D Studio and Lightwave files to Power Render files as well as view them in 3D. The DOS utilities to create character files are difficult but not impossible to use once you get past the learning curve. I really wish they were all put together in one windows utility though; sort of like what Microsoft did with the force feedback editor. How well organized is the content presented? The installation utility adds an item to your start menu called "Egerter Software" with two old 2D game utilities, some links to documentation, and links to the examples. The remaining utilities are not linked oddly enough, including the 3D utilities listed above. You''ll still need to manually traverse the directories on your hard drive to figure out what''s there and what you''ll need to use. It''s annoying true, but compared to the other problems it''s not a big deal. I didn''t have any problem finding the executables or documentation when it existed. How good are the examples? The examples (at least those that work, which is not all of them) in Power Render are both good and bad. They are good because they illustrated necessary tasks that are not documented. They are bad because of the lack of encapsulation of Power Render itself. To understand the example you need to understand Power Render, but if you understood Power Render you probably wouldn''t need the example. This is also a problem with cutting and pasting examples to work in a specific context. The spider web nature of the code means it won''t work outside that example without significant changes and debugging. The documentation within the examples themselves aren''t terrible, but neither are they very good. My own public domain software is documented far better and isn''t even intended to be a tutorial. If I were to write a tutorial I''d document every line carefully and list all references and assumptions. The Power Render examples only include high level documentation that assumes you already know what''s going on. How well encapsulated is Power Render? Power Render is not encapsulated beyond mostly undocumented interrelated function calls. When a SDK is not encapsulated and the documentation is in the state I already mentioned using the SDK becomes a BIG headache. What''s worse, you need to use the Power Render base code to get the initialization routine to work. The base code is written in C and references a lot of undocumented global variables. I can''t emphasize enough what a problem this is. When coming up with the class hierarchy for my own game I have to constantly guess "OK what does Power Render require me to do here" and "How can I fit it in without making spaghetti code?" Should I use Power Render? Power Render, if you want to spend the time figuring it out, is very powerful. While I spent a lot of time on the presentation problems with the SDK, I don''t want to make it seem like it''s not a toolkit you can''t get good results with. I got some very good looking code very quickly by modifying the examples, CERTAINLY faster than what it would have took me to do from scratch with DirectX 7 3D IM. But modifying examples and wasting time learning the convoluted SDK are two different things. In order to use it in my game I need to know exactly what''s going on, and this might be one of those cases it''s faster to write my own encapsulation of DirectX 3D IM than it is to puzzle out this SDK. I''m sure Power Render is a great tool for the author, but he needs to spend some real time and effort on the presentation so users can quickly and easily learn to use it without having to understand the underling code. Take out the three year old crap nobody needs, document everything, don''t assume users already know how to use what you are documenting, write a real installation utility, organize things better, come up with a real tutorial, and ENCAPSULATE THE SPAGHETTI CODE. I started this review praising encapsulation, and software like Power Render is why we need it. If I were to give Power Render two ratings I''d give it 4 1/2 stars for what it can do (half star off because the view distance is too limited) and 1/2 a star for the presentation. Should you buy it? If you have nothing at all I suppose it''ll be less of a headache to learn Power Render than to learn Direct 3D IM. Otherwise it would be faster and easier to write your own.

##### Share on other sites
I actually went to the site to once over the review and see if any other engine reviews were available. After getting a slight headache from the fonts, color, and layout, I beleive that it is the only one. They do look at Genesis3D, but it is only an interview.

Things that are missing from the above review:

- Engine feature sets
- Engine targeted role (Quake or Myth?)
- Supported API(s)
- Target System
- Documentation format (electronic, but is it HTML (linked) or the dreaded .Doc file?)
- Comparisons to other fiscally positioned engines

Other than that you covered what questions I want to know about the engine:

- How easy is it to install?
- How easy is it to learn?
- How much user setup is needed to write a program with it?
- How good is the documentation?
- How good was the QC?

I particularly don't know what to expect from an engine to write a game with since I haven't had a lot of experience with them. Just like I didn't know what I wanted from a 3D modelling program until I bought one and switched to another.

What I want in an engine is decent documentation, the ability to load in model files (type doesn't matter since plugin source code should be provided), terrain support, the ability to protect my data (custom data out), plug and chug (do the afore mentioned and I have something pretty to look at, but doesn't do a whole lot), and good tech support. I just want the graphics API invisible until I am at the state where tweaking is required. Objects now, eye candy later.

Does PR provide the above?

Edited by - Whirlwind on 5/6/00 4:18:23 PM

##### Share on other sites
Some points to make here:

1) 95% of the old utilities have been replaced with a
single windows utility called PRO Edit, which was not
developed until after the initial PR 3 release.
2) The install does more than copy files, it makes links to
the examples and documentation so you can find and run
things easily. What else do you want an install to do?
3) PR comes with workspaces that already have the project
settings set for you. You just need to add the
include and library paths to MSVC because this is not
saved in the workspaces.
4) You complain about my documentation too much. I work
with the Unreal engine at my job, which licenses for
around a cool million, yet it only has 20-30 pages of
HTML documentation, and NO function explanation. You
have to expect a bit of a learning curve when you start
with a new API. You should compare how long it takes
to learn DirectX against PR.
5) The number of triangles you pass the initialization
routine is the maximum number of alpha blended triangles
per frame. It''s probably safe to use 4-5 thousand for
most applications, and using an array sure beats a
linked list for that many polys.
6) The latest character utilities are windows programs so I
don''t know what you were looking at.
7) "Power Render is not encapsulated beyond mostly
undocumented interrelated function calls. "
Please tell me what functions are not documented.
8) Power Render is in a transition phase right now. It was
a cross platform API with support for DOS, Glide, OpenGL
and D3D. With PR 3 it''s D3D only, and the process of
replacing all the old utilities with more convenient
Windows D3D based ones is still going on.

How much time did you spend using PR before writing this review? It took me 4 years to build this API so it will certainly take you a few weeks/months to learn how to use it all.

Power Render is intended for programmers with at least some games/graphics programming experience. If you''re a complete newbie to games and graphics programming maybe you should try something else first.

##### Share on other sites
Dropping OpenGL support? I actually understood OpenGL enought to write something in it. There is no chance that I will understand D3D. Does PR hide D3D from me? I might have too look else where for an engine if it doesn''t. I want to write code, not learn D3D.

##### Share on other sites
Hmmm, I didn''t find that review to be fair.

Honestly, I looked at PR when I went shopping for some terrain solutions, but I decided that an in-house would be best.

It sounds as though you reviewed it with the intention of use by non-programmers. I don''t think that is what Chris want to go for here. It is a tool by a programmer for a programmer.

I suggest that you use the system for at least a few weeks before doing an actual review. You will find that a lot of the other "game" solutions are in the same boat (i.e. genesis, jet3d, morfit, revolution, et. al.)

You gotta remember where you are, this is a game"DEV" forum, so, most are coders.

##### Share on other sites

I have been using PR since it version 2.5
Before that, i have evaluated few other 3d engines just by writing a simple game.

Why Power Render ?

1. It takes me the shortest time to code the game, because Chris is generous enough to provide a lot of source codes.

2. It comes with a build-in outdoor terrain when at that time, no other engine provide real terrain rendering. Even now at this stage, only the LithTech engine allows nice terrain.

3. The API is a lot cleaner and simpler to use.

4. Viewing distance can be defined easily in PR.
Most other 3d engines can only handle indoor rendering,
not really exciting since Wolf3D.

##### Share on other sites
Whirlwind:

Power Render is a full 3D API. You don''t need to learn ANYTHING about Direct3D to use it. You will never have to call a single D3D function.

Power Render is designed to help you write faster code. For example loading a texture in D3DIM involves much work, converting from a file format (PCX, TGA, JPG etc) into different pixel formats, creating mipmaps, setting palettes, etc. With PR you just call the PR_LoadTexture function.

Chris

##### Share on other sites
Ok, now I can breath easier. I really didn''t want to go through the 500+ engines available again to find one that looks as easy to use as yours (based solely on the examples from 2.6). I had made up my mind to get yours, the reveiw above made me second guess, so I examined a few this weekend, and I have to say that your''s appears to be straight forward as it gets.

*Sigh* what a stressful weekend.

Thanks!

##### Share on other sites
My 2 cents, i''m using pr3.07 now..

I understand the complains about the lack of encapsulation, that is true and can be terrible sometimes when you''ve made up your mind on writing elengant, encapsulated, heavily object oriented C++ code.

PR lacks that, it''s a fact.

But being a c++ programmer i am supposed to be able to encapsulate everything... and here comes some trouble because there are LOTS of undocumented global variables, LOTS of side effects that are not described anywhere.
Chris, in my opinion documenting those variables is much more important than writing silly documentation about functions, as you said.

A part from that i think PR is cutting edge on features... shame for the old programming design (i''d like to collaborate with Chris to make version 4 fully object-oriented, eh eh who knows...:-) )

Uh.. a feature that i miss very much, and that is not very simple to implement on my part, is an object hierarchy API.
When you come from any other engine (d3drm also) , you''ve probably written code about linking/unlinking objects... that cannot be done with powerrender unless you rebuild every Object structure from the ground up (as i am doing now).

Chris is now very busy.
Would anyone be interested in starting a "PR ENCAPSULATION PROJECT" ?. I''m sure everyone has lots of glue code for it..
That could be done, and with a minimum collaboration from Chris (those global vars... :-) )

Thank you

------------------------------
Stefano ''Panda'' Baraldi
www.tremensgames.com
------------------------------

##### Share on other sites
I only use C++ when it is a solution to a problem, the rest of my code is C. Why bloat things out with C++ when C works just fine? Ok, I''ve been anti-C++ for about 7 years now. It isn''t that I think C is better or anything, I just think that you can mix the two peacefully without blindly using one variant over the other just because.

I keep hearing that C++ is the best thing since air, but no one ever bothers saying why other than throwing out the jargonistic ''encapsulation'' or ''inheritance'' pleas. Give me credit here. Why spend hours writing a function used three times in C++ when a five minute function written in C will suffice. Inherit that, baby. I''ve not seen a good book on *HOW* C++ is implemented. When I inherit, does the compiler create a new instance of the object class definition? Is there a new object create, with all of it''s trimmings, whenever I create a new object of that class (memory bloat due to cloning of functions)? I''ve not seen a book on ''the standard'' nor one on how my compiler implements it.

Sure, use C++ when the need is there but don''t ignore that sometimes the job is more strait forward with plain old C.

Keep PR C. Just write a layer for the C++ purist to use it from.

• 23
• 24
• 9
• 15
• 60