[WIP] NEW INGAME CONSOLE

Post Reply
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

[WIP] NEW INGAME CONSOLE

Post by ezee »

:idea: I know there is already a complex python console in the c++ code , but not in working state:
//Register commands
//COmmand Interpretor Seems to break VC8, so I'm leaving disabled for now - Patrick, Dec 24
if ( XMLSupport::parse_bool( vs_config->getVariable( "general", "command_interpretor", "false" ) ) ) {
CommandInterpretor = new commandI;
InitShipCommands();
}
I wonder if you ( the ancients ) have ever used that console system ?
I could try to fix the windows bug , but that will be time expensive .

So i've found a quick and dirty way to hack the mainloop and interact with AI , take
the control of the camera , launch .py files etc ...

Well , it's my planning and i'm not able right now to make it .
But i've started something , using the chat box :
void TextMessageKey( const KBData&, KBSTATE newState )
{
if (newState == PRESS) {
static bool chat_only_in_network =
XMLSupport::parse_bool( vs_config->getVariable( "network", "chat_only_in_network", "false" ) );

if ( (Network == NULL) && chat_only_in_network )
{
//new hack by ezee to create a console
winsys_set_keyboard_func( TextMessageCallback );
textmessager = _Universe->CurrentCockpit();
return;
}
winsys_set_keyboard_func( TextMessageCallback );
textmessager = _Universe->CurrentCockpit();
}
}
That is cool , and works as i can see what i have typed , use backspace etc ...
The next step is to create an interpretor to play with .
Logically , i should use the TextMessageCallback fonction to code an output
for the AI .

And yeah , i will make that hack in a proper way , that is a brutal force beginning ...
:lol:

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

As we'll have to deal with CockpitKeys::TextMessageCallback, we should start to explore its
inside .

The main idea now is to don't break the actual Network chat , but bind a new set of instructions that will redirect the user input to an interpretor .

Let's go :
void TextMessageCallback( unsigned int ch, unsigned int mod, bool release, int x, int y )
{
GameCockpit *gcp = static_cast< GameCockpit* > ( _Universe->AccessCockpit( textmessager ) );
Nice . We probably will use the same way to access the AI later .
With that , we already have access to a lot of stuff .
The list is here : GameCockpit Class Reference

go ahead :
There is a filter
if ( ( release
178 && (waszero || ch == WSK_KP_ENTER || ch == WSK_ESCAPE) ) || ( release == false && (ch == ']' || ch == '[') ) ) {
179 waszero = false;
180 gcp->editingTextMessage = false;
181 RestoreKB();
182 }
uhh ... so that say if a key was released and it was zero or enter or escape , or the key is pressed and the char is [ or ] , then RestoreKB() .
Okay ... here we go
void RestoreKB()
185 {
186 for (int i = 0; i < LAST_MODIFIER; ++i)
187 for (int a = 0; a < KEYMAP_SIZE; a++)
188 if (keyState[a] == DOWN) {
189 keyBindings[a].function( keyBindings[a].data, RELEASE );
190 keyState[a] = UP;
191 }
192 winsys_set_keyboard_func( glut_keyboard_cb );
193 }


k, it's a special case treatment , will let that for now .
Go forward, an other filter
if ( release || (ch == ']' || ch == '[') ) return;

I don't remember what is the default key mapping , to understand why this returns .
go forward,
unsigned int code =
185 ( ( WSK_MOD_LSHIFT == (mod&WSK_MOD_LSHIFT) ) || ( WSK_MOD_RSHIFT == (mod&WSK_MOD_RSHIFT) ) ) ? shiftup(
186 ch ) : ch;


find out the key modifier , called code .
forward ...
I let this bunch of code without comment , to let you appreciate this alien landscape
:lol:
if ( textmessager < _Universe->numPlayers() )
{
if (ch == WSK_BACKSPACE || ch == WSK_DELETE)
{
gcp->textMessage = gcp->textMessage.substr( 0, gcp->textMessage.length()-1 );
}
else if (ch == WSK_RETURN || ch == WSK_KP_ENTER)
{
if (gcp->textMessage.length() != 0)
{
std::string name = gcp->savegame->GetCallsign();
if (Network != NULL) {
Unit *par = gcp->GetParent();
if (0 && par)
name = getUnitNameAndFgNoBase( par );
Network[textmessager].textMessage( gcp->textMessage );
}
else if (gcp->textMessage[0] == '/')
{
string cmd;
string args;
std::string::size_type space = gcp->textMessage.find( ' ' );
if (space)
{
cmd = gcp->textMessage.substr( 1, space-1 );
args = gcp->textMessage.substr( space+1 );
}
else
{
cmd = gcp->textMessage.substr( 1 );
//Send custom message to itself.
}
UniverseUtil::receivedCustom( textmessager, true, cmd, args, string() );
}// end of == '/'
waszero = false;
}
else
{waszero = true; } gcp->textMessage = "";
}
else if (code != 0 && code <= 127)
{
char newstr[2] = {(char) code, 0};
gcp->textMessage += newstr;
}
}
else
{
RestoreKB();
gcp->editingTextMessage = false;
}
}


All i can say now is that this part :
else
{
cmd = gcp->textMessage.substr( 1 );
//Send custom message to itself.
}
UniverseUtil::receivedCustom( textmessager, true, cmd, args, string() );
}// end of == '/'


is promising .
8)

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

Promising ?
The graal is to have a python console , yeah ?
Now look inside that :
void receivedCustom( int cp, bool trusted, string cmd, string args, string id )
{
int cp_orig = _Universe->CurrentCockpit();
_Universe->SetActiveCockpit( cp );
_Universe->pushActiveStarSystem( _Universe->AccessCockpit()->activeStarSystem );
securepythonstr( cmd );
securepythonstr( args );
securepythonstr( id );
string pythonCode = game_options.custompython+"("+(trusted ? "True" : "False")
+", r\'"+cmd+"\', r\'"+args+"\', r\'"+id+"\')\n";
COUT<<"Executing python command: "<<endl;
cout<<" "<<pythonCode;
const char *cpycode = pythonCode.c_str();
::Python::reseterrors();
PyRun_SimpleString( const_cast< char* > (cpycode) );
::Python::reseterrors();
_Universe->popActiveStarSystem();
_Universe->SetActiveCockpit( cp_orig );
Seen ?
:wink:

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

:idea: Working in the Ingame menu , i've found an instruction that bring light with the use of
the python scripting in the c++ code :
void SaveGame::LoadSavedMissions()
{
unsigned int i;
vector< string >scripts = getMissionStringData( "active_scripts" );
vector< string >missions = getMissionStringData( "active_missions" );
PyRun_SimpleString(
"import VS\nVS.loading_active_missions=True\nprint \"Loading active missions \"+str(VS.loading_active_missions)\n" );
That is pretty nice , it's just a question of classical c text formatting .
( \n mean newline ... :wink: )

In the example above , the formatted script is :
import VS
VS.loading_active_missions=True
print("Loading active missions "+ str(VS.loading_active_missions))
Great no ?
Now we know how to feed our in-game console ! :wink:
If you want to learn more about Python/C API , visit the Reference Manual :
The Very High Level Layer
The functions in this chapter will let you execute Python source code given in a file or a buffer, but they will not let you interact in a more detailed way with the interpreter.

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

:idea: I'm getting close to my goal :

I typed my first python cmd , and the python interpreter answered error report .
I am learning how to talk to that snake . :lol:

My stdout for debug :
CONSOLE TESt By Ezee :cmd= import,args= VS\n======= Processing message =======
Command: import
VS/n
Command 'import' does not exist. Available functions:
['mission_lib', 'campaign', 'campaign_readsave', 'computer', 'dialog_box', 'guilds']]
from that function i wrote based in and for void TextMessageCallback( unsigned int ch, unsigned int mod, bool release, int x, int y ) :
bool CallbackWorker_Enter( unsigned int ch,GameCockpit *gcp)
{

if (ch == WSK_RETURN || ch == WSK_KP_ENTER)
{
if (gcp->textMessage.length() != 0)
{
std::string name = gcp->savegame->GetCallsign();
//NETWORK SEND TO
if (Network != NULL)
{
Unit *par = gcp->GetParent();
if (0 && par)
name = getUnitNameAndFgNoBase( par );
Network[textmessager].textMessage( gcp->textMessage );
}
else if
(gcp->textMessage[0] == '/')
{
string cmd;
string args;
std::string::size_type space = gcp->textMessage.find( ' ' );
if (space)
{
// The substring is the portion of the object that starts
// at character position pos and spans len characters
// (or until the end of the string, whichever comes first).
// Note: The first character is denoted by a value of 0 (not 1).

cmd = gcp->textMessage.substr( 1, space-1 );
args = gcp->textMessage.substr( space+1 );
}
else
{
cmd = gcp->textMessage.substr( 1 );
//Send custom message to itself.
}
printf("CONSOLE TESt By Ezee :");
printf("cmd= %s,args= %s",cmd.c_str(),args.c_str() );


UniverseUtil::receivedCustom( textmessager, true, cmd, args, string() );
}
waszero = false;
}
else
{waszero = true;
}


gcp->textMessage = "";
}
return waszero;//always enter
}
In fact , i am not talking to the snake directly as my command is filtered in
void receivedCustom( int cp, bool trusted, string cmd, string args, string id )
{
int cp_orig = _Universe->CurrentCockpit();
_Universe->SetActiveCockpit( cp );
_Universe->pushActiveStarSystem( _Universe->AccessCockpit()->activeStarSystem );
securepythonstr( cmd );
securepythonstr( args );
securepythonstr( id );
string pythonCode = game_options.custompython+"("+(trusted ? "True" : "False")
+", r\'"+cmd+"\', r\'"+args+"\', r\'"+id+"\')\n";
COUT<<"Executing python command: "<<endl;
cout<<" "<<pythonCode;
const char *cpycode = pythonCode.c_str();
::Python::reseterrors();
PyRun_SimpleString( const_cast< char* > (cpycode) );
::Python::reseterrors();
_Universe->popActiveStarSystem();
_Universe->SetActiveCockpit( cp_orig );
}
That is the original custom python message's handler .
I want to talk to the boss directly .

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
Eye~R
Hunter
Hunter
Posts: 70
Joined: Sun Jan 19, 2014 5:02 am

Re: [WIP] NEW INGAME CONSOLE

Post by Eye~R »

Hi,

Um, I'm an idiot so forgive the intrusion upon your thread... What do you mean by "ingame console" -=- Replacing the interface that spawns from shift&m (or adding functionality) or adding another?
Multiplayer Server Offline. Copy ony testing rig semi-funcitonal.
User Signup Offline.
Server Health Shows old data from last snapshot before the server downed.

If you have any issues you can usually find me in #vegastrike on freenode.
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

Hi !
Um, I'm an idiot so forgive the intrusion upon your thread...
:lol:
A real idiot never introduce himself like that .
:wink:

And after all , i am an idiot too compared to someone else . Anyway ...
Your question was :
What do you mean by "ingame console" -=- Replacing the interface that spawns from shift&m (or adding functionality) or adding another?
I am not sure to know what is the shift&m binding in your case .
Are you talking about the online chat console ?
I am actually using it in singleplayer mode to make a python/dev console with it .

_This console should be able to load a script file and execute it while in game , for AI debugging for example .

_Also for debugging python scripts ( you have VS running in window mode , you code your script in your .py editor , you test it within the VS ingame python console .
( VS py module is a c++ module , accessible only at runtime .
My idea is to use the console to import VS , Director , that are c++ modules not in python's range , and to code the .py files from Vegastrike .

An other use could be to moove the player's camera in a specific place/system , to help
for the creation of ingame cinematics . ( The Camera could be a drone in the future )
I am sure a lot of things are doable with that console , imagined for the Developer's sessions .

I just remember an idea that i had last night , to use the ingame c++ menu's interface to create a mini python script editor .
Imagine a menu page , with a multiline text box , an edit box for filename , a save and test button.
You type your script in the memo ( copy paste would be the best ), you save it and press
Test button : You are back in the cockpit and the script executes himself.

That is what i imagine .
The real situation is that i'm in the early hours of that project , and my python knowledge
is weak . But with patience and time a lot of things are possible .

You know Blender ?
It is typically the kind of use of python that i want to introduce .
There is a text editor in Blender that you can use for access every part of the render engine , and even make scripts for the gameEngine .

VegaStrike needs an editor , and VegaStrike could have an editor mode .
( place units , give them AI orders , watch them evolve , in observer mode )
My concept is globally that .
:wink:

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

How python and C++ works together must be understood ( at least by me :mrgreen: ) ,
and i still search and find help in the source code comments .

This time , a precious information found in init.cpp
void Python::test()
{
/* initialize vegastrike module so that
* 'import VS' works in python */

/* There should be a python script automatically executed right after
* initVegastrike to rebind some of the objects into a better hierarchy,
* and to install wrappers for class methods, etc.
*
* This script should look something like <<EOF
* import VS
* import sys
*
* #Set up output redirection
* sys.stdout = VS.IO()
* sys.stderr = sys.stdout
*
* #Make Var look like a nested 'class'
* VS.Config.Var = VS.Var()
*
* EOF
* This should be executed with PyRun_SimpleString(char *command)
* See defs.py for some recipes that should go in there
*
* Other useful Python functions:
*
* PyObject* Py_CompileString(char *str, char *filename, int start)
* Return value: New reference.
* Parse and compile the Python source code in str, returning the resulting code object. The start token is given by start; this can be used to constrain the code which can be compiled and should be Py_eval_input, Py_file_input, or Py_single_input. The filename specified by filename is used to construct the code object and may appear in tracebacks or SyntaxError exception messages. This returns NULL if the code cannot be parsed or compiled.
*
* This would be the preferred mode of operation for AI scripts
*/

#if 0 //defined(WIN32)
FILE *fp = VSFileSystem::OpenFile( "config.py", "r" );

freopen( "stderr", "w", stderr );
freopen( "stdout", "w", stdout );
changehome( true );
FILE *fp1 = VSFileSystem::OpenFile( "config.py", "r" );
returnfromhome();
if (fp1 == NULL)
fp1 = fp;
if (fp1 != NULL) {
PyRun_SimpleFile( fp, "config.py" );
VSFileSystem::Close( fp1 );
}
#endif
#ifdef OLD_PYTHON_TEST
//CompileRunPython ("simple_test.py");
//PyObject * arglist = CreateTuple (vector <PythonBasicType> ());
//PyObject * res = PyEval_CallObject(po, arglist);
//Py_DECREF(arglist);
//Py_XDECREF(res);

PyRun_SimpleString(
"import VS\n"
"import sys\n"
"sys.stderr.write('asdf')\n"
//"VSConfig=VS.Var()\n"
//"VSConfig.test='hi'\n"
//"print VSConfig.test\n"
//"print VSConfig.undefinedvar\n"
//"VSConfig.__setattr__('undefined','An undefined variable')\n"
//"print VSConfig.__getattr__('undefined')\n"
"class MyAI(VS.CommAI):\n"
" def Execute(self):\n"
" sys.stdout.write('MyAI\\n')\n"
"hi2 = MyAI()\n"
"hi1 = VS.CommAI()\n"
"print hi1.Execute()\n"
"print hi2.Execute()\n"
);
#endif
//char buffer[128];
//PythonIOString::buffer << endl << '\0';
//vs_config->setVariable("data","test","NULL");
//VSFileSystem::vs_fprintf(stdout, "%s", vs_config->getVariable("data","test", string()).c_str());
//VSFileSystem::vs_fprintf(stdout, "output %s\n", PythonIOString::buffer.str());
fflush( stderr );
fflush( stdout );
}
In addition , the python initialisation func is useful for better understand how
python wrapper works :
void Python::init()
{
static bool isinit = false;
if (isinit)
return;
isinit = true;
//initialize python library
Py_NoSiteFlag = 1;
Py_Initialize();
initpaths();
#if BOOST_VERSION != 102800
boost::python::converter::registry::insert( Vector_convertible, QVector_construct, boost::python::type_id< QVector > () );
boost::python::converter::registry::insert( Vector_convertible, Vector_construct, boost::python::type_id< Vector > () );
#endif
InitBriefing();
InitVS();
VSFileSystem::vs_fprintf( stderr, "testing VS random" );
std::string changepath( "import sys\nprint sys.path\n" );
VSFileSystem::vs_fprintf( stderr, "running %s", changepath.c_str() );
char *temppython = strdup( changepath.c_str() );
PyRun_SimpleString( temppython );
Python::reseterrors();
free( temppython );
InitDirector();
InitBase();
//InitVegastrike();
}

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
Eye~R
Hunter
Hunter
Posts: 70
Joined: Sun Jan 19, 2014 5:02 am

Re: [WIP] NEW INGAME CONSOLE

Post by Eye~R »

Heh, naw, the "Shift&M" binding brings up a window displays user stats and faction relations, navigational systems etc....

But what your playing with has use for me too =) I've noticed in the multi-user environment there's no form of control available... Most complex function offered is /userlist ....
Needs serious overhaul... in a multi-user environment at least, needs some basic heirachy of auth, to provide for basic admin responsibility delegation, if nothing else then at least some form of admin functionality... there's not even a MOTD... I'm unsure of how much of that can be achieved via your mod direction, but it could provide interface to.. which is as critical as it being in place...

You talk of a need for an editor, it'd make things simpler for me, at least, Would enable some simple construction of both an online persistent universe(Hopefully, via Nido's Markets, with working economy) and for easy deployment of additional mission senario and plot.

Good luck
Multiplayer Server Offline. Copy ony testing rig semi-funcitonal.
User Signup Offline.
Server Health Shows old data from last snapshot before the server downed.

If you have any issues you can usually find me in #vegastrike on freenode.
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

You talk of a need for an editor, it'd make things simpler for me, at least, Would enable some simple construction of both an online persistent universe(Hopefully, via Nido's Markets, with working economy) and for easy deployment of additional mission senario and plot.

Good luck
Thank you .
I'm working with different parts that should be linked together at some time :
_ CUSTOM INGAME-MENU ( with a panel for an editor of file scripts , can be extended later)
_ Python console ( to send quick msg to units , launch scripts ,moove the camera etc ...)

I can work in the Multiplayer's menu panel if you need .
Just say exactly what kind of control you need .
I've noticed in the multi-user environment there's no form of control available... Most complex function offered is /userlist ....
Needs serious overhaul... in a multi-user environment at least, needs some basic heirachy of auth, to provide for basic admin responsibility delegation, if nothing else then at least some form of admin functionality... there's not even a MOTD... I'm unsure of how much of that can be achieved via your mod direction, but it could provide interface to.. which is as critical as it being in place...
You are talking of the VS client or server side ?
I can try to add commands in the console application , yeah .
Try to describe your need better please .
:wink:

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
Eye~R
Hunter
Hunter
Posts: 70
Joined: Sun Jan 19, 2014 5:02 am

Re: [WIP] NEW INGAME CONSOLE

Post by Eye~R »

Hi,

As to towards client/server side... Kind of both...

I run mine headless(think it does such in standalone, too, only tweak avail via edit .conf -> restart) So the vegaserver doesn't need to worry about fabricating the GUI elements (or is it viable to push this to the client from the server? Like it does universe maps and ship stats) but it certainly needs to understand the interactive input from the user...

As to what it'd need, I've honestly not placed enought thought into it... Input from others appreciated, it is after all a community affair. Entirely unsure as to how much of your custom menu can add in terms of functionality, and how much better provisioned by other means, But I should imagine it'd provide an ideal interface to control -=- But to start some sort of "outline" of functionality;

User chat:
  • * Ideally need some sort of "frequency management" - Can limit broadcast to say a "sub-channel" applicable to all of same faction, or possibly opposing ones, Some sort of buddy/friendlist. Current options are global (server-wide, akin to "normal" IRC operation) or spefcified (To preselected user, akin to IRC's "PM" function)
    * Desperately needs additional functionality to provide basic admin functions, ie:
    • - White/blacklist maintainence (Currently, I don't think provided, in any capacity)
      - Basic sever manipulation / control (Ideally prequisites hierachial structure to users, Don't need everyone with admin...)
      - Some sort of MOTD like functionaly would be good

Custom Menu:
would require following functionality:
  • * Similar in-flight functionality to the mission/cargo/upgrade computer whilst docked. Interplayer realtions requires more than chat, and docked trade... Would be good to donate money to other players, or demand a toll fee for passing thorugh your system(or just existing)...
    * Fleet management (for Faction leaders / fleet commanders)
    • - Needs ability to relay orders to fleet, in terms of movements or targeting... Converge here, fly in formation to there, attack that... Move here, protect this.... Some things (like target priority) once changed would ideally reflect across faction/fleet members HUD. I think might be at least possible to issue optional tasks to faction/fleet members by making the output of this populate a "mission template" and have it offered in applicable players computers. If owning more than one ship in the multiplayer didn't kill the player, I'd suggest this could be used to move a players (unpiloted)fleet around, whilst in flight... Allowing multiple cargo ships to follow pre-plotted course, and user-piloted escort...
    * Faction Management (For faction leaders, or possibly one or two tiers lower)
    • - Needs abiltiy to relay orders to faction, in terms of trade and production goals(Once Nido's Markets apply), and general stratergies. Possibly a per-faction MOTD.
      - Needs ability to admin faction ie: control of faction members, and hierachial positions of
      - Inter-faction relation: ie: treaties, pacts, aliances and inter-faction diplomatics
      - Fabrication and distrobution of resources, and resource management(on a per-user basis for delegation)
    * Resource Management (For owners of resources)
    • - Needs to interface, both on a macro (Universal) level and micro (Individual) level with production facilities(ie: factories, shipyards, fighter bases, research stations) and resource collection/fabrication facilities (mining stations, etc) to enable control over production, in "macro" mode by indicating general intention and allowing some "AI Governer" to specifically set through the chain required to fabricate, and in micro mode allowing the user specific control(Preferably with tiered production lists) over production.
    * Profile management
    • - Allow user to update/edit contact details / password
      - Allow user to repawn with another ship selection (Currently require account refabrication, would be good to eventually have this tied in to the available ships produced by your faction)
      - Import/selection of ship liveries (might be good for additional per-faction markings)
As a beast the Multiplayer envronment is kinda insane... That .py server it prequsites execution of, tho functional, doesn't strike me as too great.. seems to be able to be crashed easily ( by bots that has found forms, usually, and attempt spam) -=- accounts are not generated over HTTPS, and account auth/validation takes place plaintext, too, in fact, all comms between vegaserver and http_accountserver.py take place in an unsavoury fashion... I don't seem to note any form of account or server management, either.. Fabrication of an account already existing results in the "original" account being overwritten - Potential for abuse lies within - But this rant possibly better suited elsewhere...
Multiplayer Server Offline. Copy ony testing rig semi-funcitonal.
User Signup Offline.
Server Health Shows old data from last snapshot before the server downed.

If you have any issues you can usually find me in #vegastrike on freenode.
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

Thank you to have taken the time to share your ideas .

They are good , and some of them are part of my goal(s) :
_ Interface for ressource owner ( in ship cargo + Base admin etc ... )
_ "frequency management" : A thing that i wanted to implement in the game , like in real
aviation , with ground,tower,airspace frequencies . And Unicom for not civilized areas ( aeras are civilized :mrgreen: )
_Faction Management : I had an idea of a career mode , where you begin as pilot and you
win grades that allow you to command a fleet if you are skilled enough . For military , and traders also , think at a guild leader . Could be enlarged to political control , that could open a new kind of gameplay , RTS like .
-=- accounts are not generated over HTTPS, and account auth/validation takes place plaintext, too, in fact, all comms between vegaserver and http_accountserver.py take place in an unsavoury fashion...
I'm not aware of the good way to achieve what you expect to be ( not experienced in that domain ) , so your experience could be useful . Don't hesitate to develop this section .

You can also share drawings or pictures of pseudo menu interfaces , layouts , to see what could be done already ( use of picture boxes , listboxes , texts areas , labels etc... )
I mean , the artistic part .
As you said previously , the Menu could exist first , and the link to the functions in a second time . Could be a preview and give ideas/motivations to people .
:wink:

As this thread is relative to ingame console , i think that some parts of your wish could be done
with it : Faction management ( send orders to ) , chat with frequencies .

I suggest to you to open a thread specific to your project now , that could live in // with
mine . My domain is research , your domain is application , we should be able to work together . :)

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
Eye~R
Hunter
Hunter
Posts: 70
Joined: Sun Jan 19, 2014 5:02 am

Re: [WIP] NEW INGAME CONSOLE

Post by Eye~R »

Almost sounds like a plan.

Only thing I'm confuddled from now, would be where to start the thread up...
Multiplayer Server Offline. Copy ony testing rig semi-funcitonal.
User Signup Offline.
Server Health Shows old data from last snapshot before the server downed.

If you have any issues you can usually find me in #vegastrike on freenode.
ezee
Intrepid Venturer
Intrepid Venturer
Posts: 703
Joined: Tue Feb 11, 2014 12:47 am
Location: FRANCE
Contact:

Re: [WIP] NEW INGAME CONSOLE

Post by ezee »

Where to start ...
In the multiplayer forum i guess .
Your project/ambition is fantastic , and it's a part of Vegastrike that could federate the community . I'd like to talk with you in the Atlantis's bar , for exemple .
Or in a miner's station , with space cowboys and indians all around . 8)
The social part is important , and a lot of scifi-fans would enjoy to meet themselves in a
scifi environment .

You are the first i know that has a strong motivation for the multiplayer side , and that is
good, speaking of energy .
John Lennon — 'A dream you dream alone is only a dream. A dream you dream together is reality.'
Working in the network part of VegaStrike is good for his future .
:wink:

Code: Select all

 if (!track.HasWeapons())
            {
                // So what are you going to threaten me with? Exhaustion gas?
                return ThreatLevel::None;
            }
Vegastrike evolved
DEV YOUTUBE CHANNEL
Vegastrike evolved wiki
Post Reply