Dragon Warrior 1 3D Remake using irrWizard...
Dragon Warrior 1 3D Remake using irrWizard...
Hi all!
I've just started putting together a DW 1 3D remake using irrWizard framework.
It's not ready for the public yet. I've only managed to model one town (it took me two days to do -- the trees took many hours to do, making textures from scratch, modeling walls, buildings, screwing up and starting over many times, etc.).
I've written enough code to allow one to walk around the town using the 1st person camera (I plan to add in a 3rd person cam later). None of the NPCs of the town are modelled yet. I mainly have enough to see how the sizes/proportion of the model would look like in game.
1. very early model of brecconary town:
http://i11.photobucket.com/albums/a175/ ... _model.jpg
2. a bit later version of brecconary town:
http://i11.photobucket.com/albums/a175/ ... normal.jpg
3. top rendered view of brecconary town model in latest version:
http://i11.photobucket.com/albums/a175/ ... l_rend.jpg
4. top wireframe view of brecconary town model in latest version:
http://i11.photobucket.com/albums/a175/ ... l_wire.jpg
5. perspective rendered view of brecconary town model in latest version:
http://i11.photobucket.com/albums/a175/ ... el_ren.jpg
6. perspective wireframe view of brecconary town model in latest version:
http://i11.photobucket.com/albums/a175/ ... el_wir.jpg
7. in-game view 1 from town entrance:
http://i11.photobucket.com/albums/a175/ ... ingame.jpg
8. in-game view 2 looking at the weapon shop:
http://i11.photobucket.com/albums/a175/ ... _wpn_s.jpg
9. in-game view 3 looking at the inn:
http://i11.photobucket.com/albums/a175/ ... me_inn.jpg
10. picture reference used to model town:
http://www.planetdw.com/maps/brecconary.gif
Man, I'm exhausted. I had a lot of fun putting the model and code together. It's a wonderful feeling to actually walk through your model after you labored on it for days in the game. Many things to everyone on the irrlicht forum. A lot of my problems (modeling, coding) were answered by searching through the forum.
I hope everyone enjoy the screen captures -- that took some time too!
UPDATE:
I've added a static quick stat screen and removed the irrWizard's default healthbar. The code for the quick stat screen is based on the healthbar code:
http://i11.photobucket.com/albums/a175/ ... _quick.jpg
01-23-2006:
- ripped title screen music
- ripped brecconary town music
- ripped overworld music
Now I just need to figure out which audio API to use!
I've just started putting together a DW 1 3D remake using irrWizard framework.
It's not ready for the public yet. I've only managed to model one town (it took me two days to do -- the trees took many hours to do, making textures from scratch, modeling walls, buildings, screwing up and starting over many times, etc.).
I've written enough code to allow one to walk around the town using the 1st person camera (I plan to add in a 3rd person cam later). None of the NPCs of the town are modelled yet. I mainly have enough to see how the sizes/proportion of the model would look like in game.
1. very early model of brecconary town:
http://i11.photobucket.com/albums/a175/ ... _model.jpg
2. a bit later version of brecconary town:
http://i11.photobucket.com/albums/a175/ ... normal.jpg
3. top rendered view of brecconary town model in latest version:
http://i11.photobucket.com/albums/a175/ ... l_rend.jpg
4. top wireframe view of brecconary town model in latest version:
http://i11.photobucket.com/albums/a175/ ... l_wire.jpg
5. perspective rendered view of brecconary town model in latest version:
http://i11.photobucket.com/albums/a175/ ... el_ren.jpg
6. perspective wireframe view of brecconary town model in latest version:
http://i11.photobucket.com/albums/a175/ ... el_wir.jpg
7. in-game view 1 from town entrance:
http://i11.photobucket.com/albums/a175/ ... ingame.jpg
8. in-game view 2 looking at the weapon shop:
http://i11.photobucket.com/albums/a175/ ... _wpn_s.jpg
9. in-game view 3 looking at the inn:
http://i11.photobucket.com/albums/a175/ ... me_inn.jpg
10. picture reference used to model town:
http://www.planetdw.com/maps/brecconary.gif
Man, I'm exhausted. I had a lot of fun putting the model and code together. It's a wonderful feeling to actually walk through your model after you labored on it for days in the game. Many things to everyone on the irrlicht forum. A lot of my problems (modeling, coding) were answered by searching through the forum.
I hope everyone enjoy the screen captures -- that took some time too!
UPDATE:
I've added a static quick stat screen and removed the irrWizard's default healthbar. The code for the quick stat screen is based on the healthbar code:
http://i11.photobucket.com/albums/a175/ ... _quick.jpg
01-23-2006:
- ripped title screen music
- ripped brecconary town music
- ripped overworld music
Now I just need to figure out which audio API to use!
Last edited by jclins on Tue Jan 24, 2006 5:46 am, edited 2 times in total.
Thanks, Guest. I plan to complete it one way or another. But it will take plenty of time.
Modeling is a pain! I have started modeling the green merchant of brecconary town. I tried 24x24x24 with 16x16x16 square. That looked like crap after I converted to poly mesh. When you delete a square, it's hollow inside. That was not what I wanted.
Then I tried 1x1x1 with 1x1x1 square. Then using the array feature, I was able to create 16 x 16 x 16 sets of squares. I used a picture of the green merchant sprite as a guide. It took me a while to get a perfect bit-by-bit shot.
It became quite easy to select and delete away square-by-square until I finally have an exact pixel-by-pixel to square-by-square representation of the green merchant in 3D!
1. 2D sprite of green merchant:
http://i11.photobucket.com/albums/a175/ ... ant_2d.jpg
2. 3D model of green merchant (front view):
http://i11.photobucket.com/albums/a175/ ... t_view.jpg
3. 3D model of green merchant (perspective view, wireframe):
http://i11.photobucket.com/albums/a175/ ... p_view.jpg
The 3D model doesn't look like much right now. As you can tell, the model doesn't have much depth to it. I plan to add more squares to make the merchant more "round."
Any ways, I'm exhausted...off to bed now. :/
Modeling is a pain! I have started modeling the green merchant of brecconary town. I tried 24x24x24 with 16x16x16 square. That looked like crap after I converted to poly mesh. When you delete a square, it's hollow inside. That was not what I wanted.
Then I tried 1x1x1 with 1x1x1 square. Then using the array feature, I was able to create 16 x 16 x 16 sets of squares. I used a picture of the green merchant sprite as a guide. It took me a while to get a perfect bit-by-bit shot.
It became quite easy to select and delete away square-by-square until I finally have an exact pixel-by-pixel to square-by-square representation of the green merchant in 3D!
1. 2D sprite of green merchant:
http://i11.photobucket.com/albums/a175/ ... ant_2d.jpg
2. 3D model of green merchant (front view):
http://i11.photobucket.com/albums/a175/ ... t_view.jpg
3. 3D model of green merchant (perspective view, wireframe):
http://i11.photobucket.com/albums/a175/ ... p_view.jpg
The 3D model doesn't look like much right now. As you can tell, the model doesn't have much depth to it. I plan to add more squares to make the merchant more "round."
Any ways, I'm exhausted...off to bed now. :/
Spintz -- The great Spintz! Howdy! Thanks for the encouragement!
I went all out today and model not one but four new models! This completes the brecconary town inhabitants except for the gray shielded knight (which I can't seem to get him to turn and face the camera!):
blue male villager:
http://i11.photobucket.com/albums/a175/ ... llager.jpg
3D blue male villager:
http://i11.photobucket.com/albums/a175/ ... ger_3d.jpg
gray sage:
http://i11.photobucket.com/albums/a175/ ... y_sage.jpg
3D gray sage:
http://i11.photobucket.com/albums/a175/ ... age_3d.jpg
blue female villager:
http://i11.photobucket.com/albums/a175/ ... llager.jpg
3D blue female villager:
http://i11.photobucket.com/albums/a175/ ... ger_3d.jpg
red knight with shield:
http://i11.photobucket.com/albums/a175/ ... shield.jpg
3D red knight with shield:
http://i11.photobucket.com/albums/a175/ ... eld_3d.jpg
Huge overworld map (source: http://www.rpgclassics.com/shrines/nes/dw1/):
http://i11.photobucket.com/albums/a175/ ... world2.gif
I went all out today and model not one but four new models! This completes the brecconary town inhabitants except for the gray shielded knight (which I can't seem to get him to turn and face the camera!):
blue male villager:
http://i11.photobucket.com/albums/a175/ ... llager.jpg
3D blue male villager:
http://i11.photobucket.com/albums/a175/ ... ger_3d.jpg
gray sage:
http://i11.photobucket.com/albums/a175/ ... y_sage.jpg
3D gray sage:
http://i11.photobucket.com/albums/a175/ ... age_3d.jpg
blue female villager:
http://i11.photobucket.com/albums/a175/ ... llager.jpg
3D blue female villager:
http://i11.photobucket.com/albums/a175/ ... ger_3d.jpg
red knight with shield:
http://i11.photobucket.com/albums/a175/ ... shield.jpg
3D red knight with shield:
http://i11.photobucket.com/albums/a175/ ... eld_3d.jpg
Huge overworld map (source: http://www.rpgclassics.com/shrines/nes/dw1/):
http://i11.photobucket.com/albums/a175/ ... world2.gif
Well, I've been messing around with the code a bit today. I found more problems than anything good:
1. Eck! Just realize I've been getting the following messages whenever I run the game:
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Hmmmm....exactly 26. Where else have I seen that number?
2. Also, the frame rate really aren't that good right now (0-7 fps). I think all the polygonal trees in the town are causes major frame drops. I may need to convert the trees into billboards to recover some fps. Anybody with a better idea/solution?
UPDATE:
luckymutt's post on the following thread fixed my problem #1:
http://irrlicht.sourceforge.net/phpBB2/ ... file#65682
1. Eck! Just realize I've been getting the following messages whenever I run the game:
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Found no matching material for Group in 3ds file.
Hmmmm....exactly 26. Where else have I seen that number?
2. Also, the frame rate really aren't that good right now (0-7 fps). I think all the polygonal trees in the town are causes major frame drops. I may need to convert the trees into billboards to recover some fps. Anybody with a better idea/solution?
UPDATE:
luckymutt's post on the following thread fixed my problem #1:
http://irrlicht.sourceforge.net/phpBB2/ ... file#65682
ErUs - well, no. I don't plan to. I'll post my updates here. The last time I used a free web site, it deleted my account after x number of days not logging in.
I fixed issue #2 from my last post. I switched out all the polygonal trees with billboard trees. Here's the result:
http://i11.photobucket.com/albums/a175/ ... _trees.jpg
The game now runs at 7-30 fps. But it's so ugly now. I will probably need to find an easy way to delete the backface/non-visible sides of all the triangles in the village to further optimize the level. Anybody else have a better suggestion? I'm all ears.
I fixed issue #2 from my last post. I switched out all the polygonal trees with billboard trees. Here's the result:
http://i11.photobucket.com/albums/a175/ ... _trees.jpg
The game now runs at 7-30 fps. But it's so ugly now. I will probably need to find an easy way to delete the backface/non-visible sides of all the triangles in the village to further optimize the level. Anybody else have a better suggestion? I'm all ears.
Spintz is right. I goofed.
You see, I had many things running (max, vs 2005, fce nes emu -- this little app eats up ~41 cpu time, opera with 8+ pages opened, etc.), when I ran the game. If you looked at the earlier screen captures, you'll see that even with the poly trees and high poly count 17,000+, the frame rate was quite reasonable. I confirmed this when I copied it over to my notebook. Which didn't have anything big running in the background (and way under powered compared to my desktop development pc; notebook 1.2 ghz pentium m with integrated intel graphics tablet pc vs dual AMD 64-bit x2 4200+ dual cores with pci express 256 MB x800 ATI card). The fps result with the poly tree is like it was in the earlier screen captures.
That's what happens when you're tired from work and try to work on your hobby after spending 9+ hours at the office.
Boy, I'm glad I had a backup of the town with the poly trees. That would've taken some time to re-do.
Okay, I think I've done enough damages with the 3D graphics for one day. I think I'll stick with coding the inventory, adding in fonts, work on the title screen, add in audio, and work on the options screen instead modeling anything for the time being.
You see, I had many things running (max, vs 2005, fce nes emu -- this little app eats up ~41 cpu time, opera with 8+ pages opened, etc.), when I ran the game. If you looked at the earlier screen captures, you'll see that even with the poly trees and high poly count 17,000+, the frame rate was quite reasonable. I confirmed this when I copied it over to my notebook. Which didn't have anything big running in the background (and way under powered compared to my desktop development pc; notebook 1.2 ghz pentium m with integrated intel graphics tablet pc vs dual AMD 64-bit x2 4200+ dual cores with pci express 256 MB x800 ATI card). The fps result with the poly tree is like it was in the earlier screen captures.
That's what happens when you're tired from work and try to work on your hobby after spending 9+ hours at the office.
Boy, I'm glad I had a backup of the town with the poly trees. That would've taken some time to re-do.
Okay, I think I've done enough damages with the 3D graphics for one day. I think I'll stick with coding the inventory, adding in fonts, work on the title screen, add in audio, and work on the options screen instead modeling anything for the time being.
We have a title screen now! It's purely visual at this point (i.e. the dragon warrior logo does not animate at the moment, options is not available, credits still shows irrWizard's default).
It took me a while to "convert" the irrWizard's default play, credit, options, and exit into the same font as the DW original title screen. Luckily, there were enough characters in the original DW title screen to copy then paste together the words for credit, options, and exit!
http://i11.photobucket.com/albums/a175/ ... screen.jpg
It took me a while to "convert" the irrWizard's default play, credit, options, and exit into the same font as the DW original title screen. Luckily, there were enough characters in the original DW title screen to copy then paste together the words for credit, options, and exit!
http://i11.photobucket.com/albums/a175/ ... screen.jpg
Let there be sound! After many hours, I've finally managed to play the title track using FMOD Ex 4.02.09 sound API.
Here's the class I made (irrWizard doesn't support sound yet) for FMOD (note it's my first attempt at sound so be nice!):
FMODSoundSystem.h:
FMODSoundSystem.cpp:
I initialized FMOD in CGameMenuState.cpp (for some reason, I can't get it to work when the sound file is inside a zip file like media.zip):
I play & update the music in the Update() in CGameMenuState.cpp:
It sounded like crap when I used the hardware sound with 32 channels versus just using software sound mode with 8/16 channel. Oh, well.
Here's the class I made (irrWizard doesn't support sound yet) for FMOD (note it's my first attempt at sound so be nice!):
FMODSoundSystem.h:
Code: Select all
#pragma once
#include <fmod.hpp>
#include <fmod_errors.h>
#pragma comment(lib, "fmodex_vc.lib")
using namespace FMOD;
class FMODSoundSystem
{
private:
FMOD::System *system;
FMOD::Sound *sound;
FMOD::Channel *channel;
FMOD_RESULT result;
unsigned int version;
public:
FMODSoundSystem(const char *,int,FMOD_INITFLAGS);
~FMODSoundSystem(void);
void PlaySound(void);
void Update(void);
};
Code: Select all
#include "FMODSoundSystem.h"
void ERRCHECK(FMOD_RESULT result)
{
if (result != FMOD_OK)
{
// cout << "FMOD error! (" << result << ") " << FMOD_ErrorString(result) << "\n" << endl;
// ~FMODSoundSystem();
}
}
FMODSoundSystem::FMODSoundSystem(const char *name_or_data, int maxchannels, FMOD_INITFLAGS flags)
{
channel = 0;
// Create a system object
result = System_Create(&system);
ERRCHECK(result);
// Determine FMOD version
result = system->getVersion(&version);
ERRCHECK(result);
if (version < FMOD_VERSION)
{
// cout << "Error! You are using an old version of FMOD " << version << "x. This program requires " << FMOD_VERSION << "x\n" << endl;
// return 0;
}
// Initialize FMOD System
result = system->init(maxchannels, FMOD_INIT_NORMAL, 0);
ERRCHECK(result);
// Create Sound
result = system->createSound(name_or_data, flags, 0, &sound);
ERRCHECK(result);
// Set Sound Mode
result = sound->setMode(FMOD_LOOP_OFF);
ERRCHECK(result);
}
FMODSoundSystem::~FMODSoundSystem(void)
{
// shut down sound
result = sound->release();
ERRCHECK(result);
}
void
FMODSoundSystem::PlaySound(void)
{
result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
ERRCHECK(result);
}
void
FMODSoundSystem::Update(void)
{
result = system->update();
ERRCHECK(result);
unsigned int ms = 0;
unsigned int lenms = 0;
bool playing = 0;
bool paused = 0;
int channelsplaying = 0;
if (channel)
{
FMOD::Sound *currentsound = 0;
result = channel->isPlaying(&playing);
if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
{
ERRCHECK(result);
}
result = channel->getPaused(&paused);
if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
{
ERRCHECK(result);
}
result = channel->getPosition(&ms, FMOD_TIMEUNIT_MS);
if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
{
ERRCHECK(result);
}
channel->getCurrentSound(¤tsound);
if (currentsound)
{
result = currentsound->getLength(&lenms, FMOD_TIMEUNIT_MS);
if ((result != FMOD_OK) && (result != FMOD_ERR_INVALID_HANDLE) && (result != FMOD_ERR_CHANNEL_STOLEN))
{
ERRCHECK(result);
}
}
}
system->getChannelsPlaying(&channelsplaying);
}
Code: Select all
void CGameMenuState::Init(CGameManager * pManager)
{
// initialise from parent
CGameState::Init(pManager);
...
// Initialize music
//titleMusic = new FMODSoundSystem("media/Music/dw1_title_sound.wav",32,FMOD_HARDWARE);
titleMusic = new FMODSoundSystem("media/dw1_title_sound.wav",16,FMOD_SOFTWARE);
CGameState::FadeInOut(pManager);
}
Code: Select all
//! Update, game loop for intro state
void CGameMenuState::Update(CGameManager * pManager)
{
pManager->getDriver()->beginScene(true, true, video::SColor(0,0,0,0));
pManager->getGUIEnvironment()->drawAll();
// Play music
titleMusic->PlaySound();
titleMusic->Update();
MouseOver(pManager);
DisplayMouse(pManager);
pManager->getDriver()->endScene();
}
I'm currently working on the font for DW1 3D. I found a DW 1 truetype font by Woodus from this website:
http://www.woodus.com/den/fanfics/display.php?cls=font
IrrFontTool did not read it correctly but it works fine under MS Word. I was scratching my head for a while trying to figure out why it displays correctly in MS Word and not under IrrFontTool. When I opened using Font Creator, I instantly see why.
Arial Font (for comparison purposes):
http://i11.photobucket.com/albums/a175/ ... l_font.jpg
Woodus DW1 Font (note how some letters are out of order):
http://i11.photobucket.com/albums/a175/ ... 1_font.jpg
Fixed DW1 Font (yes, original DW1 doesn't have that many characters to fill all of the available font slots):
http://i11.photobucket.com/albums/a175/ ... 1_font.jpg
Original NES DW1 Font:
http://i11.photobucket.com/albums/a175/ ... attern.jpg
After the fix, IrrFontTool was able to recognize and generate the correct bitmap font sheet:
http://i11.photobucket.com/albums/a175/ ... 20_pts.jpg
But that's only half the battle!
Now I'm trying to "fit" it into the irrWizard's framework. It currently supports only irrlicht's static text not the bitmap text generated from IrrFontTool. My first attempt (while it did show up in game) ended up in several access violation runtime errors:
Boy, does it get interesting as one digs deeper and deeper.
http://www.woodus.com/den/fanfics/display.php?cls=font
IrrFontTool did not read it correctly but it works fine under MS Word. I was scratching my head for a while trying to figure out why it displays correctly in MS Word and not under IrrFontTool. When I opened using Font Creator, I instantly see why.
Arial Font (for comparison purposes):
http://i11.photobucket.com/albums/a175/ ... l_font.jpg
Woodus DW1 Font (note how some letters are out of order):
http://i11.photobucket.com/albums/a175/ ... 1_font.jpg
Fixed DW1 Font (yes, original DW1 doesn't have that many characters to fill all of the available font slots):
http://i11.photobucket.com/albums/a175/ ... 1_font.jpg
Original NES DW1 Font:
http://i11.photobucket.com/albums/a175/ ... attern.jpg
After the fix, IrrFontTool was able to recognize and generate the correct bitmap font sheet:
http://i11.photobucket.com/albums/a175/ ... 20_pts.jpg
But that's only half the battle!
Now I'm trying to "fit" it into the irrWizard's framework. It currently supports only irrlicht's static text not the bitmap text generated from IrrFontTool. My first attempt (while it did show up in game) ended up in several access violation runtime errors:
Code: Select all
First-chance exception at 0xe3c04316 in DW1_3D.exe: 0xC0000005: Access violation reading location 0xe3c04316.
First-chance exception at 0x004a01f3 in DW1_3D.exe: 0xC0000005: Access violation reading location 0x00000124.
First-chance exception at 0x1c88f9d4 in DW1_3D.exe: 0xC000001E: An attempt was made to execute an invalid lock sequence.
First-chance exception at 0x7c93784f in DW1_3D.exe: 0xC0000005: Access violation reading location 0x00000004.
Unhandled exception at 0x7c93784f in DW1_3D.exe: 0xC0000005: Access violation reading location 0x00000004.
The program '[460] DW1_3D.exe: Native' has exited with code -1073741819 (0xc0000005).
A very interesting project, I like the retro title screen. very cool.
Shouldn't you just PlaySound() once and not each game loop? I would have just expected to kick the sound off in the Init() and leave it. (not used FMOD at all though)
Definatly keep posting updates on your progress as this looks a very cool project.
________
List of engines
Shouldn't you just PlaySound() once and not each game loop? I would have just expected to kick the sound off in the Init() and leave it. (not used FMOD at all though)
Definatly keep posting updates on your progress as this looks a very cool project.
________
List of engines
Last edited by area51 on Thu Feb 24, 2011 11:55 pm, edited 1 time in total.
..If you get major problems with the sound then I can put the basic SoundManager I created using Audiere back in, and then release that if you're pushed for time with other areas of programming.
________
HONDA CIVIC (THIRD GENERATION) HISTORY
________
HONDA CIVIC (THIRD GENERATION) HISTORY
Last edited by area51 on Thu Feb 24, 2011 11:55 pm, edited 1 time in total.