Plop !
Yes , it is a sound .
VSE now can produce sounds in his menu , and soon on every base's room !
Check it out :
It is something that i wanted , to be able to configure some options in the game .
I've started to implement the volume setup because some python functions already allow this . But a lot more can be done , using new wrapped c++ functions .
But that mean rebuild the .exe , and i prefer wait for the people to test it without
.exe changes , because of portability issues ( working executable under linux , windows and mac )... read more
Now that i have avatars to select before to launch a new campaign , it's time to
code that new state in vegastrike .
Just looking in the python code that launches a campaign ,
~~~~
def StartNewGame(self,params):
Base.SetCurRoom(HOMEPAGEMENU.ID)
#below i'll code the avatars campaigns starts
#perhaps will have to rewrite VS.loadGame(VS.getNewGameSaveName())
#as VS.loadGame(VS.getNewAvatarCampaign())
DoStartNewGame(self,HOMEPAGEMENU.baseroom)... read more
I have started to design a rpg mode for the solo campaign .
This is a video preview of the character selection ( each character will have his own campain ):
The characters are temporary ones , found as free models over the Net .
The artists of the team will produce original models representative of existing factions.
Edit : I have now coded a python class ( MenuPage ) that make the creation of avatars very easy ,
i hope also for artists ! ( in their development tests).... read more
As it is already possible to display 3d meshes in the launchpad ( that is a Gui.room ),
i'm thinking on how to display a 3d character .
The 3d character could be displayed in a menu page , just after the user pressed the " start camapign " or " Multiplayer " buttons .
The character could be tuned by the user ( clothes , skin color , etc ... ), like every good RPG .
It's an aspect i want to reinforce in vegastrike EVOLVED .... read more
Now the " official " branch is https://svn.code.sf.net/p/vegastrikevo/svn/branch/VS_evolved_v1.0/
Just check out now , and enjoy the new vessel designed by DarkVixen and reworked for
VSevo by i .
the revision commit : https://sourceforge.net/p/vegastrikevo/svn/13703/
As i'm still unable to use video with vegastrike , i'm thinking at a new way to tell
stories : Use the camera of the engine !
eh eh
Duno if it is really possible , as the idea started after i discovered that in c++ :
~~~~
...
void Briefing::Render()
{
AnimatedTexture::UpdateAllFrame();
cam.SetPosition( cam.GetPosition(), Vector( 0, 0, 0 ), Vector( 0, 0, 0 ), Vector( 0, 0, 0 ) );
cam.UpdateGFX( GFXTRUE, GFXFALSE );
for (unsigned int i = 0; i < starships.size(); i++)
starships[i]->Render( identity_matrix, interpolation_blend_factor );
GFXEnable( DEPTHTEST );
GFXEnable( DEPTHWRITE );
GFXBlendMode( ONE, ZERO );
GFXDisable( CULLFACE );
//
GFXClear( GFXTRUE );
Mesh::ProcessUndrawnMeshes();
_Universe->AccessCamera()->UpdateGFX( GFXTRUE, GFXFALSE );
}... read more
I just have finished to implement a cool feature in python , now we have cool buttons
with 3 states in game .
You can checkout to see the result here : https://sourceforge.net/p/vegastrikevo/svn/13691/
Thatwas a long time since i hadn't " played " with the snake , and that was cool to
use python again .
So i have new ideas on how to use it in vegastrike , in a new way and with new wrapped
functions :... read more
Ooooh yeah !
^^
As it is a pain to detach GFXLIB ( the OpenGl based renderer of vegastrike ) from
the game ( to use it as scene editor for example ) , i have decided to focus at mesh level and let Blender being the editor .
It is possible already to work in Blender with .bfxm files , but the models must be first converted into .obj and .mtl files ( wavefront ) .
My idea is to tweak the actual .obj importer/exporter of Blender to load the .bfxm
directly .... read more
Well , the thing seemed to be easy , but Vegastrike is not like me ...
WHO CREATED THAT ?
void Camera::UpdateCameraSounds()
Someone that probably wrote that too :
initSceneManager();// me : it's an audio thing , don't you hear ?
initScenes();// same here
That make me crazy all that non-sense ...... read more
Before turning vegastrike into a game engine ( with separated singletons for 3D Render ( we could then propose other render api , like ogre3d ...), Audio , physics , Network ) , i need to fully understand what's actually going on .
Vegastrike.exe starts ( Client Mode ...) in the main.cpp file , at :
As i'm trying this time to build a .dll , i have excluded from the project all files
with " _server" inside ...
Apparently , GFX was designed to be a dll under windows , but that was abandonned ?
~~~~~~
~~~~~~... read more
I could make the lib , and surprise ...
The lib size is ... 116 MO !!! Aaarrghhhh ..
SOmething wrong here as the GFX source folder is 1.51 mo only ...
And the vegastrike project failed to link because of :
~~~~~~
1>------ Build started: Project: Vegastrike, Configuration: Release Win32 ------
1>Linking...
1>GFXLIB.lib(cockpit.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
1>GFXLIB.lib(mesh_server.obj) : error LNK2005: _winsys_exit already defined in winsys.obj
1>GFXLIB.lib(background.obj) : error LNK2005: "public: void __thiscall Background::Draw(void)" (?Draw@Background@@QAEXXZ) already defined in GFXLIB.lib(background_server.obj)
1>GFXLIB.lib(background.obj) : error LNK2005: "public: void __thiscall Background::BackgroundClone::FreeClone(void)" (?FreeClone@BackgroundClone@Background@@QAEXXZ) already defined in GFXLIB.lib(background_server.obj)
1>GFXLIB.lib(background.obj) : error LNK2005: "public: struct Background::BackgroundClone __thiscall Background::Cache(void)" (?Cache@Background@@QAE?AUBackgroundClone@1@XZ) already defined in GFXLIB.lib(background_server.obj)
1>GFXLIB.lib(background.obj) : error LNK2005: "public: void __thiscall Background::EnableBG(bool)" (?EnableBG@Background@@QAEX_N@Z) already defined in GFXLIB.lib(background_server.obj)
1>GFXLIB.lib(background.obj) : error LNK2005: "public: __thiscall Background::Background(char const *,int,float,class std::basic_string<char,struct std::char_traits\<char="">,class std::allocator\<char> > const &,struct GFXColor const &,bool)" (??0Background@@QAE@PBDHMABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABUGFXColor@@_N@Z) already defined in GFXLIB.lib(background_server.obj)
1>GFXLIB.lib(mesh_fx.obj) : error LNK2005: "public: void __thiscall Mesh::EnableSpecialFX(void)" (?EnableSpecialFX@Mesh@@QAEXXZ) already defined in GFXLIB.lib(mesh_server.obj)
1>GFXLIB.lib(mesh_fx.obj) : error LNK2005: "public: void __thiscall Mesh::AddDamageFX(class Vector const &,class Vector const &,float,struct GFXColor const &)" (?AddDamageFX@Mesh@@QAEXABVVector@@0MABUGFXColor@@@Z) already defined in GFXLIB.lib(mesh_server.obj)
1>LINK : fatal error LNK1104: cannot open file 'boost_python-vc90-mt-1_45.lib'
1>Build log was saved at "file://D:\program\VEGASTRIKE\VEGA_EVO\branch\Windows\1.0\vega-vc9\Release\Vegastrike\BuildLog.htm"
1>Vegastrike - 9 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========... read more</char></char,struct>
========================================================================
STATIC LIBRARY : GFXLIB Project Overview by mnemonikus
========================================================================
This is my first attempt to create a stand alone renderer with the GFX files of vegastrike .
I just made a new project with vc9 , with all the content of GFX folder + some files that were needed .
GFX had the reputation to be a lib , but everything is so melted in VS that it was impossible for me
to fully understand how it works.
Now , GFX start to be a real good static lib , and perhaps also dynamic .
The advantages of that configuration is that it's easier to debug parts of a program than a whole .
If we want to improve the renderer , we just improve the GFX source and build it again .
vegastrike.exe could keep his version , and the renderer evolve separatly .
Or the inverse , evolve VS without touching to GFX .
I think also the compile time of vegastrike will be shorter , that is good for me . ^^... read more
Vegastrike's programming is very particular , because of the use of python to control
the c++ code .
To be able to render a video in Vegastrike with TheoraPlayer , we can't simply use
the TheoraPlayer manager , because the events or states in the game loop are handled
by python scripts .... read more
~~~~~~~~~~~~~~~~~~~~~~~~~~
"""----------------------------------------------------------------"""
""" """
""" GUIVideoTexture - a non-interactive video texture """
""" (no audio) """
""" """
"""----------------------------------------------------------------"""... read more
Vegastrike use python scripts in a kind of framework to work with the 2D interface Menu
and other 2D Elements , accessible in a Gui.py file .
In that document , a dev commentary about "special rooms " , and in particular video rooms :
" ...
...
...
In the example above, we have two rooms, intro and preintro.
Preintro would be a short movie or animation clip to show when the
game launches (e.g: "Vega Strike" logo). Intro would be the story's
intro cutscene to display when starting a new campaign.... read more
I am following the demo_glut_player example from the theoraplayer sdk to understand the
logic of a frame rendering loop .
So in this example , we've got :
void init()
{
mgr=new TheoraVideoManager();
clip=mgr->createVideoClip("media/bunny" + resourceExtension, outputMode, 16);
// use this if you want to preload the file into ram and stream from there
// clip=mgr->createVideoClip(new TheoraMemoryFileDataSource("../media/short" + resourceExtension),TH_RGB);
clip->setAutoRestart(1);// looping mode
tex_id=createTexture(nextPow2(clip->getWidth()),nextPow2(clip->getHeight()), textureFormat);
}... read more
So we have already a manager to load video files .
Let's try to load one in that function i created in the main.cpp of vegastrike :
/ intialize theoraPlayer here /
void initVideoManager()
{
videoManager= new TheoraVideoManager();
//now just for a test
clip=videoManager->createVideoClip("animations/intro.ogv" , outputMode, 16);... read more
previous
WHAT'S NEXT ?
Now that i can figure out how the video playback will work ( c++ side , because there is also a python part ...) and start to organize my project .
There are 2 sub folders into the orignal vega-vc9 project's GFX header folder :
* nav
* radar... read more
This part is sent to the vegastrike's gfx library , when AnimatedTexture::LoadVideoSource( VSFileSystem::VSFile &f ) succeeded to load a video file :
Bind( 65535, GFXFALSE ); //line 469 ani_texture.cpp
Bind(...) will then call Transfer( maxdimension, detailtexture );... read more
Looking at the libtheoraplayer tutorial page , i've found :
Loading video
TheoraVideoClip clip=mgr->createVideoClip("path/to/video/file.ogg");
Note that on iOS and Mac if you use the AVFoundation backend, you can provide H.264 files with the ".mp4" extension.*... read more
INTRODUCTION
I tried to fix the old ffmpeg video implementation in vegastrike , but i ended with
a conflict between vorbis lib that is used with the Audio engine and avcodec.lib that
was built with vorbis support .
I could fix that by making an other ffmpeg lib without vorbis linkage , but that would
mean a redirection of audio from video to Audio engine , and only for windows systems .
So the best tactic to still offer portability is to use libtheoraplayer :
" It runs equally good on Windows Mac Linux, iOS, Android etc. The library also supports native platform decoders where applicable for performance reasons, eg. H.264 on iOS and Mac. "... read more