Page 1 of 1

Fitness for a CS

Posted: 21 Aug 2011, 20:40
by lgromanowski
peachykeen wrote: Hello all.

I've been following OpenMW's progress from the shadows for some time now, and the other day was idling tossing ideas around #morrowind and with some folks, and stumbled upon the idea of a CS rewrite. MWEdit is quite excellent, but lacks a render-window and cell editing. I'm somewhat familiar with Ogre's API, so of the engine rewrites, this was the one that attracted my attention for this particular idea.

So, I'm wondering if the current OpenMW codebase is, in the developer's opinion, fit for use in an updated CS. Anyone have any opinions?

The CS obviously uses far fewer features than the full game (GUI, animations, etc aren't necessary to start with), and it looks to me from what I've seen of the code and the roadmap that OpenMW would probably be able to power something of that sort.
Zini wrote: We haven't decided about what to do after OpenMW 1.0. But a new CS is pretty high on the priority list. At least I will put all the weight my voice has with this project in favour of a new CS.

Simply updating the CS isn't an option though IMHO. We have to re-design it from the ground up, because the usability of the original CS is a disaster.

I don't think there is a much point in sharing a large part of the code base between OpenMW and a new CS. A game is fundamentally different from an editor and most of rendering is done in Ogre anyway. What we certainly can reuse is the on-the-fly NIF -> Ogre-mesh converter. And the ESM loader should be suitable too. Basically most the stuff in the components directory. But all the higher level functionality will need to be written from scratch.

Regarding MWEdit: That is Windows-only and as such entirely useless for our purpose.
Star-Demon wrote:
Zini wrote:We haven't decided about what to do after OpenMW 1.0. But a new CS is pretty high on the priority list. At least I will put all the weight my voice has with this project in favour of a new CS.

Simply updating the CS isn't an option though IMHO. We have to re-design it from the ground up, because the usability of the original CS is a disaster.

I don't think there is a much point in sharing a large part of the code base between OpenMW and a new CS. A game is fundamentally different from an editor and most of rendering is done in Ogre anyway. What we certainly can reuse is the on-the-fly NIF -> Ogre-mesh converter. And the ESM loader should be suitable too. Basically most the stuff in the components directory. But all the higher level functionality will need to be written from scratch.

Regarding MWEdit: That is Windows-only and as such entirely useless for our purpose.
I totally agree with a rewrite and redesign - none of the construction sets for the three extensible BS games are "good". The interfaces are confusing and ambiguous, navigation and selection in 3d space is awkward, and the worst are the quest and dialogue windows.

I've worked in BUILD
I've worked in WORLDCRAFT (it's called hammer now)
I've touched UNREAL1 and 3
I've done the TESCS.
I use BLENDER3D.

I still think BUILD was fantastic to this day. What a shame I can't play Shadow Warrior anymore.
peachykeen wrote:
Zini wrote:Simply updating the CS isn't an option though IMHO. We have to re-design it from the ground up, because the usability of the original CS is a disaster.
Despite being a disaster, it seems to have done plenty of work. There are some UI changes that could be made, although some things (the concept of a palette window, for example) are often quite nice IMO. Either way, precise appearance is an issue for the future.
I don't think there is a much point in sharing a large part of the code base between OpenMW and a new CS. A game is fundamentally different from an editor and most of rendering is done in Ogre anyway. What we certainly can reuse is the on-the-fly NIF -> Ogre-mesh converter. And the ESM loader should be suitable too. Basically most the stuff in the components directory. But all the higher level functionality will need to be written from scratch.
I agree, the lower-level components would be the most reusable. The NIF -> MESH converter is quite valuable, since that's not exactly easy to write up quickly.
I've been brainstormed concepts for a while (a new CS has been filed in my project prototypes drawer for some time now) and I think Yacoby's LibESM is easily capable of powering the general datafile loading, although which library is used doesn't really matter.
As far as high-level functionality, Ogre provides a few classes that make that easier (I think I've seen some selection-via-mouse code around using just Ogre).
Regarding MWEdit: That is Windows-only and as such entirely useless for our purpose.
Ah, not so. The app is Windows-only, this is true, but the code isn't necessarily tied too tightly. There are some parts that are, and some parts that are useless for a visual CS (the MDI interface), but things like the script compiler could still be usable. Either way, whether it may be useless for your purposes, it isn't entirely for my own nefarious schemes. ;)

I intended the question to be a sort of polling of the OpenMW devs for their opinion on whether what's been done is capable of powering a CS' render window. I'm not suggesting that should become an immediate goal of the team, I was actually doing a bit of research into writing it myself. :)
Star-Demon wrote:I totally agree with a rewrite and redesign - none of the construction sets for the three extensible BS games are "good". The interfaces are confusing and ambiguous, navigation and selection in 3d space is awkward, and the worst are the quest and dialogue windows.

I've worked in BUILD
I've worked in WORLDCRAFT (it's called hammer now)
I've touched UNREAL1 and 3
I've done the TESCS.
I use BLENDER3D.

I still think BUILD was fantastic to this day. What a shame I can't play Shadow Warrior anymore.
I've used Worldcraft, Hammer, Unreal 2 and 3, the TES CS, Blender, and a scattering of others, and I think the CS was actually one of the nicer ones. Compared to some things like Blender, Hammer, the Radiant Q3 mappers, the CS is at least accessible and drag-n-drop is nice to start with.

Of course, all that is simply discussion of what might be at the moment. :)
muspila wrote: I've been following this project for some time already. Two weeks ago or so I got your latest build compiled on my ubuntu and I had a great time testing the availible features. I'm a member of the Skyrim-Mod. Obviously we make intensive use of the CS over there and I have spent a lot of hours in the CS making interior- and exterior-cells myself.


Wish 1:
Allow me to see the cells I'm working on like I would see them ingame.

-lighting exactly like ingame
-possibility to adjust daytime and weather (or make the editor change daytime automatically)
-possibility to adjust gamma-correction
-A Sky when working on exterior-cells

-possibility to switch between default navigation and flying through my exterior cell like I would fly through it with levitation, also using the same buttons. It would be great to be able to place and move objects in both navigation-modes. Maybe even a walk-mode?


Wish 2:
Allow me to simply (F5 ?) reload the 3D-data of the current scene whenever I want to. So I can instantly see the results of a texture- or mesh-replacement. Right now I have to restart the CS in order to see how the same place looks with textures exchanged.


Wish 3:
Allow me to make custom-categories where I can put the statics I actually need instead of always having to scroll through the complete list of statics.
nicolay wrote:
muspila wrote:Wish 1:
Allow me to see the cells I'm working on like I would see them ingame.

-lighting exactly like ingame
-possibility to adjust daytime and weather (or make the editor change daytime automatically)
-possibility to adjust gamma-correction
-A Sky when working on exterior-cells

-possibility to switch between default navigation and flying through my exterior cell like I would fly through it with levitation, also using the same buttons. It would be great to be able to place and move objects in both navigation-modes. Maybe even a walk-mode?
Good idea. I remember the Unreal editor had a "play" button which basically turned on dynamic lightening and sounds. A much better option for us though could be to open the cell in a separate window, starting at the current editor camera position, and enter a "viewer mode" which is basically what OpenMW is now.

This would allow you to see, hear and walk (or fly) around the cell in fullscreen, and ESCing out to bring you back to the editor. And would be much faster than starting the game in a separate process, since files and resources are already loaded.
sir_herrbatka wrote: "Wish 3:
Allow me to make custom-categories where I can put the statics I actually need instead of always having to scroll through the complete list of statics."

yes! I was thinking about this. For example you have window, drag and drop things from your main categories here (creatures, statics, activators, items, everything) go into fullscreen press a key and your custom menu popsup. This would be soooooooooooooooooooooooooooo great.

Other thing: it would be cool to have some kind of mark to show where the stuff will go after pressing "drop it to the ground" key.
peachykeen wrote:
muspila wrote:-lighting exactly like ingame
That should happen almost automatically, so long as the CS uses similar lighting code to OpenMW. If both are using Ogre, it'll be that much simpler.
-possibility to adjust daytime and weather (or make the editor change daytime automatically)
That should be possible, again using a similar method to how OpenMW does it, so as to keep compatibility. Automatic time change is also possible, either linking to the system clock or using an internal timer.
-possibility to adjust gamma-correction
That would have to be done in one of two ways:
- a fullscreen render-window, which introduces a few minor inconveniences.
- (much simpler) a shader to handle that, with configurable controls (brightness, contrast, gamma)
-A Sky when working on exterior-cells
Theoretically possible and not too hard.
-possibility to switch between default navigation and flying through my exterior cell like I would fly through it with levitation, also using the same buttons. It would be great to be able to place and move objects in both navigation-modes. Maybe even a walk-mode?
We'd have to be careful that buttons didn't conflict there. Walk-mode would be relatively simple (OpenMW has supported it for some time, hasn't it?). As long as a relatively normal raycasting method was used for placing items in the world, there shouldn't be problems with selecting/moving/placing items from both modes.

Wish 2:
Allow me to simply (F5 ?) reload the 3D-data of the current scene whenever I want to. So I can instantly see the results of a texture- or mesh-replacement. Right now I have to restart the CS in order to see how the same place looks with textures exchanged.
That's a great idea, although I'd like a single-model refresh as well (faster).
Wish 3:
Allow me to make custom-categories where I can put the statics I actually need instead of always having to scroll through the complete list of statics.
That should be possible, I'd think. I'm not sure the best way to sort them, since the data couldn't really be saved to the ESM/ESP file, so there would have to be another place to store it...
nicolay wrote:Good idea. I remember the Unreal editor had a "play" button which basically turned on dynamic lightening and sounds. A much better option for us though could be to open the cell in a separate window, starting at the current editor camera position, and enter a "viewer mode" which is basically what OpenMW is now.

This would allow you to see, hear and walk (or fly) around the cell in fullscreen, and ESCing out to bring you back to the editor. And would be much faster than starting the game in a separate process, since files and resources are already loaded.
I think that could be done as simply as changing the control scheme, enabling gravity and making the render window fullscreen. It would take some playing to find the best method, but that sounds possible at the moment.

The only potential issue would be with DirectX, as it sometimes like to lose resources when switching display modes/devices... that would defeat the speed-up, but could possibly be skipped by making a fake fullscreen window and just setting input to capture the cursor. Ogre would help handle that, but it would still have to reload some data down to the GPU.

I'm not sure if it would be strictly necessary, though... it's possible to just have toggle buttons for the dynamic lighting and sound. I know the Aurora Toolset for Neverwinter Nights has those (as well as music, shadows, and fog buttons). It might be better to just have a maximize button on the render-window and toggles on the toolbar. Dunno, have to think about that one.