ULX

Author Topic: Contribution  (Read 7050 times)

0 Members and 6 Guests are viewing this topic.

Offline jay209015

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 934
  • Karma: 62
    • Dev-Solutions
Contribution
« on: September 26, 2013, 08:03:19 AM »
Okay,

I think I've finally found some time to be able to come back and offer up some more contributions to Ulysses.
It's been a while, but I'm sure it won't take too much to hop back in and give the community something new.

This project... is going to be a web front end for XGUI. There's a lot in there! (Stickly... ;) )
The design is simply going to be the same as the GUI in GMOD, but a little more refined.

It's going to be a hosted solution with steam and/or rcon authentication. (not sure which one yet. Don't really want the steam credentials though)
I'm going to try and implement every feature of XGUI, this means a few extra hooks in the core since everything will have to be rcon.

There are some road blocks, like transferring map thumbnails and auto complete functions.

Of course standard RCON functions will be available.

I would really like to add some way of view a players screen. (even if it's 1-2 frames per second.)

But, before tackling the project, I thought I'd through the idea up here and see if you guys have any insight or potential pitfalls.

As a plus, this service would be able to monitor and alert of down times and other things.
I want to hook all ULib logs and be able to alert on specified events.


What do you guys think?
An error only becomes a mistake when you refuse to correct it. --JFK

"And thus the downfall of the great ULX dynasty was wrought not by another dynasty, but the slow and steady deterioration of the leaders themselves, followed by the deprecation of the great knowledge they possessed." -Gmod, Chapter 28, verse 34 -- Stickly

Offline MrPresident

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 2728
  • Karma: 430
    • |G4P| Gman4President
Re: Contribution
« Reply #1 on: September 26, 2013, 08:22:46 AM »
Great idea, though I'm curious to see how you work out sending player screens to a web interface.

Offline jay209015

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 934
  • Karma: 62
    • Dev-Solutions
Re: Contribution
« Reply #2 on: September 26, 2013, 10:01:22 AM »
Thanks. Me too. I was thinking of capturing about 5-10 fps for about 5 seconds (buffer) then transfer the buffer how the browser play it while the server builds the next buffer. I just have to find out how to capture the players screen. Probably not too hard though.

I think Brett has done some work with this in the past, but that my have just been changing players camera position in game.
An error only becomes a mistake when you refuse to correct it. --JFK

"And thus the downfall of the great ULX dynasty was wrought not by another dynasty, but the slow and steady deterioration of the leaders themselves, followed by the deprecation of the great knowledge they possessed." -Gmod, Chapter 28, verse 34 -- Stickly

Offline JamminR

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 8096
  • Karma: 390
  • Sertafide Ulysses Jenius
    • Team Ulysses [ULib/ULX, other fine releases]
Re: Contribution
« Reply #3 on: September 26, 2013, 01:51:34 PM »
I'm fine with every idea, with exception of this;
try and implement every feature of XGUI

Remember, XGUI is just a front end for ULX.
XGUI does everything ULX does, just, graphically.
We purposely pushed Stickly in that path as he worked on it.
So, I feel it would be better to say "try and implement every feature ULX does - like XGUI does in-game, but with a web based GUI interface instead.

Rock on!
"Though a program be but three lines long, someday it will have to be maintained." -- The Tao of Programming

Offline MrPresident

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 2728
  • Karma: 430
    • |G4P| Gman4President
Re: Contribution
« Reply #4 on: September 26, 2013, 06:05:55 PM »
Semantics!

Offline Megiddo

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 6214
  • Karma: 394
  • Project Lead
Re: Contribution
« Reply #5 on: September 26, 2013, 06:19:33 PM »
This is actually something Stickly and I kicked around for a while. We were wondering if we could implement XGUI as a web server. In game you'd just get an HTML window that would properly authenticate you. Outside of the game, it would be the exact same interface, just with a different authentication. We were thinking of putting it directly on the server as a module; it's going to be a little more tricky to have it as a hosted solution (though if you do a really spiffy job, it's a great feature to charge a small monthly fee for).

On capturing client screens, it's not going to be possible without client modules. Remember that the dedicated server has no rendering capability.

As with XGUI, more than happy to add or modify capabilities in ULX/ULib were appropriate to support a project like this. And you're experience with ULib will certainly help you get this going all that much faster. :)
Experiencing God's grace one day at a time.

Offline JamminR

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 8096
  • Karma: 390
  • Sertafide Ulysses Jenius
    • Team Ulysses [ULib/ULX, other fine releases]
Re: Contribution
« Reply #6 on: September 26, 2013, 07:28:50 PM »
Semantics!
I'll eat my tomatoes and potatoes any way I wish!
:P
"Though a program be but three lines long, someday it will have to be maintained." -- The Tao of Programming

Offline Stickly Man!

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 1270
  • Karma: 164
  • What even IS software anymore?
    • XGUI
Re: Contribution
« Reply #7 on: September 26, 2013, 11:46:42 PM »
I like the idea  ;D  I do agree with JamminR though, I'd focus on supporting ULX rather than XGUI-- but feel free to use the similar style of XGUI in your interface.

I would love help you out with any specifics with how XGUI works, should you need it.. and if I remember how it works. :P
Join our Team Ulysses community discord! https://discord.gg/gR4Uye6

Offline jay209015

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 934
  • Karma: 62
    • Dev-Solutions
Re: Contribution
« Reply #8 on: September 27, 2013, 05:57:14 AM »
On capturing client screens, it's not going to be possible without client modules. Remember that the dedicated server has no rendering capability.
Yeah, that's expected. Was going to try and use something like this: http://wiki.garrysmod.com/page/video/Record

It'll be a design to look much like XGUI, but a bit more polished for the web. If I do the screen captures, I will have to have some sort of monthly fee for sure.

An error only becomes a mistake when you refuse to correct it. --JFK

"And thus the downfall of the great ULX dynasty was wrought not by another dynasty, but the slow and steady deterioration of the leaders themselves, followed by the deprecation of the great knowledge they possessed." -Gmod, Chapter 28, verse 34 -- Stickly

Offline Decicus

  • Hero Member
  • *****
  • Posts: 552
  • Karma: 81
    • Alex Thomassen
Re: Contribution
« Reply #9 on: September 27, 2013, 07:01:55 AM »
I like this idea, it could probably benefit our server a lot!
Contact information:
E-mail: alex@thomassen.xyz.
You can also send a PM.

Offline Megiddo

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 6214
  • Karma: 394
  • Project Lead
Re: Contribution
« Reply #10 on: September 27, 2013, 11:05:50 AM »
Yeah, that's expected. Was going to try and use something like this: http://wiki.garrysmod.com/page/video/Record

You still have an issue with getting it from the client to the server. I guess you could try passing it up to the server using the network library, but I'm not sure what sort of bandwidth you'll get with that. Didn't know that we had a video recording library though, that's awesome!
Experiencing God's grace one day at a time.

Offline jay209015

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 934
  • Karma: 62
    • Dev-Solutions
Re: Contribution
« Reply #11 on: September 27, 2013, 11:41:00 AM »
Yeah, the screen capture feature is probably going to be the hardest.
But we will see how it goes when the time comes. Perhaps I can utilize your networking knowledge ;)
An error only becomes a mistake when you refuse to correct it. --JFK

"And thus the downfall of the great ULX dynasty was wrought not by another dynasty, but the slow and steady deterioration of the leaders themselves, followed by the deprecation of the great knowledge they possessed." -Gmod, Chapter 28, verse 34 -- Stickly

Offline jay209015

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 934
  • Karma: 62
    • Dev-Solutions
Re: Contribution
« Reply #12 on: September 27, 2013, 12:00:05 PM »
First bit of progress:
First two is the output from RCon commands.
The other part is through the api.


Code: [Select]
hostname: Garry's Mod
version : 1.6.20.0/23 5301 secure
udp/ip  : 72.14.178.181:27015  (public ip: 72.14.178.181)
map     : gm_construct at: 0 x, 0 y, 0 z
players : 0 (16 max)

# userid name                uniqueid            connected ping loss state  adr
ULX Help:
If a command can take multiple targets, it will usually let you use the keywords '*' for target
all, '^' to target yourself, '@' for target your picker, '$' to target by ID (steamid,
uniqueid, userid, ip), '#' to target users in a specific group, and '%' to target
users with access to the group (inheritance counts). IE, ulx slap #user slaps all players who are
in the default guest access group. Any of these keywords can be preceded by '!' to negate it.
EG, ulx slap !^ slaps everyone but you.
You can also separate multiple targets by commas. IE, ulx slap bob,jeff,henry.
All commands must be preceded by "ulx ", ie "ulx slap"

Command Help:


Category: Fun
o ulx armor   - Sets the armor for target(s). (say: !armor)
o ulx blind  [] - Blinds target(s). (say: !blind) (opposite: ulx unblind)
o ulx cloak [] [] - Cloaks target(s). (say: !cloak) (opposite: ulx uncloak)
o ulx freeze  - Freezes target(s). (say: !freeze) (opposite: ulx unfreeze)
o ulx god [] - Grants god mode to target(s). (say: !god) (opposite: ulx ungod)
o ulx hp   - Sets the hp for target(s). (say: !hp)
o ulx ignite  [] - Ignites target(s)
Array
(
    [Protocol] => 17
    [HostName] => Garry's Mod
    [Map] => gm_construct
    [ModDir] => garrysmod
    [ModDesc] => Sandbox
    [AppID] => 4000
    [Players] => 0
    [MaxPlayers] => 16
    [Bots] => 0
    [Dedicated] => d
    [Os] => l
    [Password] =>
    [Secure] => 1
    [Version] => 1.6.20.0
    [GamePort] => 27015
    [ServerID] => 90087756281314305
    [GameTags] =>  gm:sandbox
)
Array
(
)
Array
(
    [ai_disabled] => 0
    [ai_ignoreplayers] => 0
    [coop] => 0
    [deathmatch] => 1
    [decalfrequency] => 10
    [mp_allowNPCs] => 1
    [mp_autocrosshair] => 1
    [mp_fadetoblack] => 0
    [mp_falldamage] => 0
    [mp_flashlight] => 1
    [mp_footsteps] => 1
    [mp_forcerespawn] => 1
    [mp_fraglimit] => 0
    [mp_friendlyfire] => 0
    [mp_teamlist] => hgrunt;scientist
    [mp_teamplay] => 0
    [mp_timelimit] => 0
    [mp_weaponstay] => 0
    [nextlevel] =>
    [physgun_limited] => 0
    [r_AirboatViewDampenDamp] => 1.0
    [r_AirboatViewDampenFreq] => 7.0
    [r_AirboatViewZHeight] => 0.0
    [r_JeepViewDampenDamp] => 1.0
    [r_JeepViewDampenFreq] => 7.0
    [r_JeepViewZHeight] => 10.0
    [r_VehicleViewDampen] => 0
    [sbox_bonemanip_misc] => 0
    [sbox_bonemanip_npc] => 1
    [sbox_bonemanip_player] => 0
    [sbox_godmode] => 1
    [sbox_maxballoons] => 100
    [sbox_maxbuttons] => 50
    [sbox_maxdynamite] => 10
    [sbox_maxeffects] => 200
    [sbox_maxemitters] => 20
    [sbox_maxhoverballs] => 50
    [sbox_maxlamps] => 3
    [sbox_maxlights] => 5
    [sbox_maxnpcs] => 10
    [sbox_maxprops] => 200
    [sbox_maxragdolls] => 10
    [sbox_maxsents] => 300
    [sbox_maxspawners] => 10
    [sbox_maxthrusters] => 50
    [sbox_maxturrets] => 4
    [sbox_maxvehicles] => 3
    [sbox_maxwheels] => 50
    [sbox_noclip] => 1
    [sbox_persist] =>
    [sbox_playershurtplayers] => 1
    [sbox_weapons] => 1
    [sensor_debugragdoll] => 0
    [sensor_stretchragdoll] => 0
    [sv_accelerate] => 10
    [sv_airaccelerate] => 10
    [sv_allowcslua] => 0
    [sv_alltalk] => 0
    [sv_bounce] => 0
    [sv_cheats] => 0
    [sv_contact] =>
    [sv_footsteps] => 1
    [sv_friction] => 8
    [sv_gravity] => 600
    [sv_hl2mp_item_respawn_time] => 30
    [sv_hl2mp_weapon_respawn_time] => 20
    [sv_maxspeed] => 10000
    [sv_noclipaccelerate] => 5
    [sv_noclipspeed] => 5
    [sv_password] => 0
    [sv_pausable] => 0
    [sv_report_client_settings] => 0
    [sv_rollangle] => 0
    [sv_rollspeed] => 200
    [sv_specaccelerate] => 5
    [sv_specnoclip] => 1
    [sv_specspeed] => 3
    [sv_steamgroup] =>
    [sv_stepsize] => 18
    [sv_stopspeed] => 10
    [sv_voiceenable] => 1
    [sv_wateraccelerate] => 10
    [sv_waterfriction] => 1
    [toolmode_allow_axis] => 1
    [toolmode_allow_balloon] => 1
    [toolmode_allow_ballsocket] => 1
    [toolmode_allow_button] => 1
    [toolmode_allow_camera] => 1
    [toolmode_allow_colour] => 1
    [toolmode_allow_creator] => 1
    [toolmode_allow_duplicator] => 1
    [toolmode_allow_dynamite] => 1
    [toolmode_allow_editentity] => 1
    [toolmode_allow_elastic] => 1
    [toolmode_allow_emitter] => 1
    [toolmode_allow_example] => 1
    [toolmode_allow_eyeposer] => 1
    [toolmode_allow_faceposer] => 1
    [toolmode_allow_finger] => 1
    [toolmode_allow_hoverball] => 1
    [toolmode_allow_hydraulic] => 1
    [toolmode_allow_inflator] => 1
    [toolmode_allow_lamp] => 1
    [toolmode_allow_leafblower] => 1
    [toolmode_allow_light] => 1
    [toolmode_allow_material] => 1
    [toolmode_allow_motor] => 1
    [toolmode_allow_muscle] => 1
    [toolmode_allow_nocollide] => 1
    [toolmode_allow_paint] => 1
    [toolmode_allow_physprop] => 1
    [toolmode_allow_pulley] => 1
    [toolmode_allow_remover] => 1
    [toolmode_allow_rope] => 1
    [toolmode_allow_slider] => 1
    [toolmode_allow_thruster] => 1
    [toolmode_allow_trails] => 1
    [toolmode_allow_weld] => 1
    [toolmode_allow_wheel] => 1
    [toolmode_allow_winch] => 1
    [tv_enable] => 0
    [tv_password] => 0
    [tv_relaypassword] => 0
)

Also, I came across this http://facepunch.com/showthread.php?t=1256669
« Last Edit: September 27, 2013, 12:03:30 PM by jay209015 »
An error only becomes a mistake when you refuse to correct it. --JFK

"And thus the downfall of the great ULX dynasty was wrought not by another dynasty, but the slow and steady deterioration of the leaders themselves, followed by the deprecation of the great knowledge they possessed." -Gmod, Chapter 28, verse 34 -- Stickly

Offline Megiddo

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 6214
  • Karma: 394
  • Project Lead
Re: Contribution
« Reply #13 on: September 27, 2013, 12:35:07 PM »
Good progress!
Experiencing God's grace one day at a time.

Offline jay209015

  • Ulysses Team Member
  • Hero Member
  • *****
  • Posts: 934
  • Karma: 62
    • Dev-Solutions
Re: Contribution
« Reply #14 on: September 27, 2013, 01:02:20 PM »
Thanks! As soon as I get it capture more than just the head of the response, I'll move on to UI.
An error only becomes a mistake when you refuse to correct it. --JFK

"And thus the downfall of the great ULX dynasty was wrought not by another dynasty, but the slow and steady deterioration of the leaders themselves, followed by the deprecation of the great knowledge they possessed." -Gmod, Chapter 28, verse 34 -- Stickly