Forum posts

Posted 1 year ago2021-04-28 19:22:41 UTC
in Enhanced Half-Life (custom SDK/mod) Post #345570
This is very interesting, looking forward to it! Keep up the good work :)

I have a few questions:
  • The overall goal is to make the smallest SDK possible while maintaining full functionality, and even expanding on features by using newer language/library features, and using code generation to help eliminate redundancy in things like save game code
  • All of HLEnhanced features should eventually be re-implemented in this project, along with merging the unique features from Opposing Force Updated (weapons, NPCs, game modes) and Blue Shift Updated (handful of entities). This should make EHL the one-stop-shop for making a mod that mimics any of these 3 games, aside from the issue of Op4 weapons having grunt hands only
Are you going to provide the ability to have these extra features toggle-able through preprocessor defines (like HLEnhanced's USE_OPFOR) or separate repositories (like Half-Life Updated) to get a "HL SDK but just cleaned up"? I know this would require a lot of work but that would be nice for total conversions which do not rely or very little on existing entities.
The UI should be replaced entirely with a VGUI2 version. The code for that exists in HLEnhanced and will be ported over later on when i tackle that task. Eliminating the use of VGUI1 entirely will help to simplify things.
By "the UI should be replaced entirely with a VGUI2 version", I'm guessing you are talking about all the existing VGUI elements (class menu, team menu, scoreboard, observer's control panel...) or are you extending this to other UI stuff (HUD based menu, ammo, crosshair, health...)?

I have an idea: a few days or weeks ago, I was talking with some other GoldSrc programmers about skill CVARs and how it's tedious to add them. As you know already, when you add a skill CVAR in the game code (not talking about updating skill.cfg), you need to add a float variable to the skilldata_t structure, create the 3 CVARs themselves (cvar_t), register them (CVAR_REGISTER), "link" the variable and the CVARs using GetSkillCvar and optionally provide a multiplayer override. This is a pain in the ass because:
  • If you want to add a 4th difficulty, you need to manually add a 4th CVAR and register it for every set of skill CVARs and don't forget to update the "hardcoded clamp".
  • Prone to human mistakes in my opinion, especially for beginners, also known as the "did I updated the number correctly in that cvar_t->name syndrome?"
I was wondering if it would be possible to simplify all of these tedious things by having some kind of CSkillCvar class that would create the appropriate number of cvar_t, register them automatically?
Posted 1 year ago2021-04-06 11:56:56 UTC
in Help me, Lords of coding!! Post #345515
The way you have programmed your item is fine if the player keeps the item in his inventory forever which is not what you want because you want the power up to be "time based".

First, remove your BOOL m_fDamageDoubler because it's going to be more confusing than helping.

In CBasePlayer (player.h) class declaration, add this:
float m_flDoubleDamageBonusTime;

bool HasDoubleDamageBonus()
    return gpGlobals->time < m_flDoubleDamageTime;
If you are not familiar with HL SDK programming: gpGlobals->time is the current game time.

m_flDoubleDamageBonusTime basically tells when the power up should be "off" and it gives you the state of the power up (game time higher than double damage time? It's off then. Double damage time higher than game time? It's on then) so you basically have 2 information in a single variable. That's why the handy bool HasDoubleDamageBonus() is made and you should use it whenever you want to check if the player has the double damage bonus (it replaces your obsolete if ( m_fDoubleDamageBonus )).

In CBasePlayer::Spawn in player.cpp, add m_flDoubleDamageBonusTime = -1.0f; to the end to properly initialize the variable (because nobody likes problems).

If you are making a singleplayer mod, add m_flDoubleDamageBonusTime to the save/restore table of CBasePlayer as a FIELD_TIME to prevent issues when saving/loading games (again because nobody likes problems).

Want to give 15 seconds of power up to the player? Just do m_flDoubleDamageBonusTime = gpGlobals->time + 15.0f;.

Like Dr. Orange mentioned, the FireBulletsPlayer method is responsible for firearms damage (crowbar, grenades and such are handled separately). That's where you do if ( pPlayer->HasDoubleDamageBonus() ) flDamage *= 2.0f; to actually apply the damage bonus.
Posted 1 year ago2021-03-08 12:10:02 UTC
in Grenade Tinnitus (Ear Ringing) Effect Post #345407
Posted 1 year ago2021-01-14 12:20:12 UTC
in Half-Life Updated (custom SDK) Post #345222
I can fix the crowbar bug, but what's the double shot bug exactly? Just so i know what to look for.
Probably the fact that client prediction can call events twice, I opened this related issue back in 2015.

Mods can compile the SDK without the CLIENT_WEAPONS pre-processor define enabled. This will however require the programmer to move the client sided stuff back to the server for weapons. In other words: revert what Valve did when they introduced the client prediction system. An alternative is to set the cl_lw CVAR (Console VARiable) to 0 (false).

However, I strongly advise to not do that since they are more "workarounds" rather than "proper fixes", especially if the mod supports multiplayer.
Posted 1 year ago2021-01-14 09:55:15 UTC
in Half-Life Updated (custom SDK) Post #345219
This is really interesting stuff! Does this fix the fast crowbar gib bug and the double shot bug from the glock's secondary fire?
No for both.
Posted 1 year ago2020-11-20 18:30:19 UTC
in Need help with Activities and NPC coding Post #344910
I second Captain P advice, the way you are doing it right now will involve a lot of code duplication and that will put a lot of burden when maintaining it.

Sometimes in situations like these, it's best to make methods that solve small but repetitive problems. In your case, one small problem is "how do I convert the pev->weapons value to a C string that would match the animations names" and "how do I handle the standing up/crouched difference".

Then you combine both solutions to get the "final answer" to your original problem which was "how do I get the proper value to use in LookupSequence ". In the end, you have something like this:
 * Returns the name of a sequence for this monster based on his stance (standing up or crouched), a specific name and his current weapon's name.
 * @param szName The name of the sequence without the stance ("ref_" and "crouch_"), weapon's name ("python"...) and any underscore.
 * @return The corresponding sequence name.
const char *CMyMonster::GetSequenceName( const char *szName ) const
    static char szResult[32];

    strncpy( szResult, m_fStanding ? "ref_" : "crouch_", sizeof( szResult ) );
    strncat( szResult, szName, sizeof( szResult ) );
    strncat( szResult, "_", sizeof( szResult ) );
    strncat( szResult, GetWeaponIDAsCStr(), sizeof( szResult ) );

    return szResult;

 * Returns the name of the weapon this monster is currently using as a "C string".
 * This is used to select the proper sequence when performing activities.
 * @return This monster's current weapon name.
const char *CMyMonster::GetWeaponIDAsCStr() const
    if ( pev->weapons & HEVSCI_PYTHON )
        return "python";
    else if ( pev->weapons & HEVSCI_SHOTGUN )
        return "shotgun";
    else if ( pev->weapons & HEVSCI_MP5 )
        return "mp5";
    else if ( pev->weapons & HEVSCI_CROSSBOW )
        return "bow";
    else if ( pev->weapons & HEVSCI_RPG )
        return "rpg";
    else if ( pev->weapons & HEVSCI_GAUSS )
        return "gauss";
        return "onehanded";
Which you can use like this:
void CMyMonster::SetActivity( Activity NewActivity )
    int iSequence = ACTIVITY_NOT_AVAILABLE;
    void *pModel = GET_MODEL_PTR( ENT( pev ) );

    switch ( NewActivity )
    case ACT_IDLE:
        iSequence = LookupSequence( GetSequenceName( "aim" ) );
        iSequence = LookupActivity( NewActivity );

    if ( iSequence <= ACTIVITY_NOT_AVAILABLE )
        // Not available try to get default anim
        ALERT( at_console, "%s has no sequence for act:%d\n", STRING( pev->classname ), NewActivity );
        pev->sequence = 0; // Set to the reset anim (if it's there)

    // Set to the desired anim, or default anim if the desired is not present
    if ( pev->sequence != iSequence || !m_fSequenceLoops )
        pev->frame = 0;

    pev->sequence = iSequence; // Set to the reset anim (if it's there)
Assuming your monster is crouched, uses the Python and you want the corresponding aim sequence, GetSequenceName( "aim" ) will return crouched_aim_python.
Posted 1 year ago2020-11-19 22:28:35 UTC
in Need help with Activities and NPC coding Post #344895
For the RPG, inspire yourself from the player weapon or the func_tankrocket entity (HGrunt uses them during the "On A Rail" chapter).

For the crossbow, inspire yourself from the player crossbow weapon (or the bullsquid spit attack).

The Gauss and Egon will require some extra work since some effects are done on the client side. I guess you will have to "copy and translate" all the effects from the client to the server.
When the game/mod starts, issue the map <your fancy background map here> command
This can be done by putting the command in a RC or CFG file.
have some kind of if ( thisIsMyMenuMap ) condition to show that new main menu (powered by VGUI or another UI framework if you use one). Then you issue commands depending on the buttons being clicked. For example: "New Game" button would issue map <your first map here>. "Load game" would load up the default load dialog.
That would be client sided.
Posted 2 years ago2020-06-20 12:29:28 UTC
in hl1 weapon coding bug Post #344439
Okay, there are some stuff I've noticed about your weapon code. First, the secondary attack:
void CFuckfinger::SecondaryAttack(void)


If your weapon does not have a secondary attack, then it is useless to override it in your weapon class, also that void; thingy is useless (maybe you meant return;?)

Now onto the reload:
void CFuckfinger::Reload(void)
    // Ammo check and actual reload code here

    if (iResult)
        m_flTimeWeaponIdle + UTIL_SharedRandomFloat(m_pPlayer->random_seed, 10, 15);
The problem here is that you calculate the next weapon idle time but you never assign the result, you missed a m_flTimeWeaponIdle =

And finally the weapon idle code :
void CFuckfinger::WeaponIdle(void)
    // Reset empty sound, autoaim and "time to idle check" code here

    if (m_iClip != 0)
        int iAnim;
        float flRand = UTIL_SharedRandomFloat(m_pPlayer->random_seed, 0, 1);

        if (flRand <= 0.5)
            iAnim = FUCKFINGER_IDLE;
            m_flTimeWeaponIdle + 70.0 / 30.0;
        else if (flRand <= 0.7)
            iAnim = FUCKFINGER_IDLE;
            m_flTimeWeaponIdle + 60.0 / 16.0;
            iAnim = FUCKFINGER_IDLE;
            m_flTimeWeaponIdle + 88.0 / 30.0;
        SendWeaponAnim(iAnim, 1);
There are 3 problems here, the first one is the identical to the reload problem (you calculate the next idle times but you never assign them). The second problem is that you forgot UTIL_WeaponTimeBase() in the calculation which is the current game time. And the final problem is that you are randomly picking one of 3 possibles scenarios but all of them play the same idle animation (the idle time being the only difference). You could simplify your WeaponIdle function to something like this:
void CFuckfinger::WeaponIdle()

    // Play idle animation only if it is time to do so and the clip/magazine isn't empty
    if ( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() || m_iClip <= 0 )

    SendWeaponAnim( FUCKFINGER_IDLE );
    m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 3.0f; // Assuming your idle animation duration is 3 seconds
Next time when you post code here, post it in a code block so that's it's easier for everyone to read, see the formatting help wiki page for details.
You can try to do something similar à la Cry of Fear but this involves re-creating the main menu itself.

When the game/mod starts, issue the map <your fancy background map here> command, that map would trigger an entity or your code would have some kind of if ( thisIsMyMenuMap ) condition to show that new main menu (powered by VGUI or another UI framework if you use one). Then you issue commands depending on the buttons being clicked. For example: "New Game" button would issue map <your first map here>. "Load game" would load up the default load dialog.
Posted 2 years ago2020-06-19 19:46:02 UTC
in hl1 weapon coding bug Post #344427
It would be a lot easier if you post the code so we can help you.
Posted 2 years ago2020-06-11 17:29:30 UTC
in Need help with broken buttons in mod Post #344394
Have you tried cleaning and building again the solution?
Posted 2 years ago2020-06-11 17:27:44 UTC
in SharpLife - Dot Net Core based modding p Post #344393
There will be a SL Single-Multiplayer source then?It is not that I will start anything in a near future, but it could be interesting for people to start doing something cool with the GS code using your "mod".
No, Solokiller said in a previous post when he redesigned the engine that the game source code is gonna be a "client/server/shared" architecture where client-only stuff goes into the client part, the server-only stuff goes into the server part and everything common to the client and server goes into the shared part.

It's basically the same architecture as Source which he also used in HLEnhanced.

Unless everything changed fairly recently, there is a year gap between the mentioned post and this one.
Maybe the target (aka the monster to follow) becomes invalid at some point and the game crash due to an attempt to access an invalid pointer.

Try implementing this fix I made for Parasomnia and see if it solves the problem or not.
Posted 2 years ago2020-01-12 13:59:24 UTC
in TWHL Tower 2 Post #343605
Reminder to hammermaps and SourceSkyBoxer that there is likely gonna be no code change and TWHL Tower 2 is gonna stick to vanilla SoHL 1.8. It's way too late to change the "base" anyways.

I would like the deadline extension as well.
Posted 2 years ago2019-12-18 07:35:54 UTC
in Hidden gems / Underrated games? Post #343477
Replayed Raven Shield recently with the Elite Counter Terror mod, it's always fun to play the game.
Posted 2 years ago2019-12-09 05:57:34 UTC
in Hidden gems / Underrated games? Post #343452
Half-Rats: Parasomnia, a lot of players played the game and stopped because it was either "too hard" or "lost". I guess this means that players are way too much used to navigation assistance (beacons, quest markers, GPS...) and no longer have the desire of exploration and a sense of orientation (something that the Thief series except the 2014 reboot heavily encouraged).

DeathMatch Classic, it's just Quake on GoldSrc.

Ricochet because of it's gameplay.
Here's how I would see things:
  • Introduction (why do we have rules in the first place)
  • Rules that applies to both here and Discord (the existing TWHL rules: 'be nice, no piracy, no spam' are enough, each detailed in a sub-title)
  • Examples of bad behavior that we don't tolerate
  • Consequences for disobeying
  • Reporting bad behavior to moderators & administrators
All of these in a short size (like a single A4 page should be enough) and using simple sentences (no "lawyer style language"). The references that PenguinBoy posted could be use to reform complicated rules (if needed) and examples of bad behavior.
Posted 2 years ago2019-11-22 13:03:34 UTC
in Half-Life: Alyx Post #343386
btw how long do you think until someone will create a non vr version mod ? XD
A "flat" version of HL:A would be "boring" as you would lose all the interactions that VR grant.

Source: The Final Hours of Half-Life: Alyx (20 min interview).
My speculation is, less than 4 months after the SDK releases, if they provide one.
Right now, it is confirmed that we'll have Hammer 2 for HL:A. As for a "standard source code" à la GoldSrc/Source (even complete), nothing official yet.
Posted 2 years ago2019-11-21 21:11:44 UTC
in Half-Life: Alyx Post #343372
Hammer 2 for the Source 2 engine which you can already mess around through Dota 2 tools and/or Steam VR.
Posted 2 years ago2019-11-04 11:36:13 UTC
in TWHL Tower 2 Post #343303
Can't you use "fake" fog? By "fake" I mean sprites, func_illusionary, non-solid func_conveyor...
Posted 2 years ago2019-11-01 21:11:52 UTC
in TWHL Tower 2 Post #343280
Give me some info before... What game mode will be used, singleplayer with deathmatch 0 or multiplayer with deathmatch 1? Is gauss hopping allowed?
Likely singleplayer, as for gauss hopping, it depends if Spirit of Half-Life 1.8 allow it in singleplayer.

I can try to participate.
Posted 2 years ago2019-09-10 16:07:48 UTC
in The ~Video Game Music~ Thread Post #343118
Painkiller - Mech
Posted 3 years ago2019-06-17 11:36:02 UTC
in Locking a .BSP file? Post #342747
Decompiling a Source map is the same as GoldSrc. It's possible but it won't produce a 1:1 replica and it might end up with errors.

As others mentioned, give some time to another mapper and he'll fix the decompiled stuff and/or recreate it from scratch.
Posted 3 years ago2019-06-05 22:51:39 UTC
in Help with gauge creation Post #342700
This is from a Zombie Panic! Source map I made years ago.

Each "tick" (white brush) is a "func_brush" with a different name. At the beginning of the round, I call the "Color" input on all of them with the red color to tell "0%". There are 10 ticks so one tick = 10%, when the objective would reach 10%, I call the "Color" input on the first tick in green and I would repeat for the next tick every 10%.

A potential GoldSrc equivalent of this system would be to use "func_wall" instead of "func_brush", "env_render" instead of "Color" input and a "multi_manager" to replace Source's I/O system.
Posted 3 years ago2019-04-01 11:38:42 UTC
in Post your screenshots! WIP thread Post #342376
Posted 3 years ago2019-03-13 06:47:06 UTC
in A Utopia At Stake Post #342249
FMOD does support MIDI out of the box on Windows. On other OSes lile Linux, you will likely need a soundfont first.

It's possible to detect if the game window has focus with SDL2 (assuming you are using GitHub SDK), I need to find the code again but it is possible.
Like potatis said, you need to increase the "Xmx" parameter which is the maximum heap memory allocation on the Java Virtual Machine (JVM) to at least 6 Gb. Google has plenty of tutorial about that.
Posted 3 years ago2019-03-08 07:19:45 UTC
in The Core Post #342186
I would have rushed something out in the last year or so to get it over the line.
Don't make the same mistake as we did with Half-Rats: Parasomnia. Take the time you need to finish it and most importantly: have a lot of people playtest the shit out of it (different play styles, profiles...)
Maybe the server needs to self restart at some time where nobody plays.
Posted 3 years ago2019-03-05 16:44:35 UTC
in More mods that never were... Post #342161
Knowing how Gearbox (especially Randy) is very protective of the DN trademark/franchise, I doubt that releasing the 2001 build of DNF for free would be allowed, but you never know.

But I do agree with you that the E3 2001 trailer and the in-game footage (from the released build's extras) felt more convincing than what we have today.
Posted 3 years ago2019-03-05 12:26:50 UTC
in The Core Post #342158
In all seriousness, glad to see you haven't abandoned the project and you are still working on it.
Posted 3 years ago2019-03-05 12:10:22 UTC
in The Core Post #342156
Should probably finish this mod, huh?
Not sure if this is the truth...... or a trap for hype.
Started playing a little bit yesterday, did a lot of exploration of the world (for the map). I took the liberty of visiting your homes, bases and you guys sure have talent for building stuff, I was impressed.

Started some very minor digging stuff, I claimed some territory to the east of potatis_invalid's home (near the snowy "mountain").

Since I'm a newbie with all this modded stuff, can anyone guide me for building an item production facility?
Posted 3 years ago2019-03-04 21:05:56 UTC
in More mods that never were... Post #342141
Half-Counter mod
Story wise: G-Man ordered Gordon Freeman to erase all traces from the Black Mesa Incident that could link back the Resonance Cascade to him. You were supposed to play the first chapter with him. At the end of that chapter, you would learn that the U.S. Marines called the rest of the world for assistance with the incident, you were supposed to play the second chapter as a GIGN agent and it goes Half-Life: Opposing Force again. Final chapter would be Gordon Freeman dealing with a boss and the ending would open to a potential sequel.

Gameplay wise: the mod was supposed to be a "CS/HL" hybrid. As Gordon Freeman, you would keep the HEV suit and the standard HL weaponry as well as some from Opposing Force. As the GIGN agent, it would be more like CS where it would get "tactical".

Technology wise: I decided to use the Half-Life: REBIRTH's source code for it's various improvements.

Took the existing Half-Life: REBIRTH source code and made minor changes, I made a single not completed map which was basically a 2048x2048x2048 outside area with a lot of polygons to simulate highly detailed terrain. I remember that I also tried to model the terrain in Hammer 4 (Source) with displacements, export to models with Propper and use "env_model".

What happened?
I basically pulled the plug when I realized that I needed more experience within HL's engine before diving in a serious project like that. School and real lives were not on my side at that time too. I also realized that I was asking too much from the engine.

Revenge of Love mod

I don't consider this project "dead" yet since I might "revive" this some day, probably on GoldSrc or another engine. But since I haven't actually touched that project for years, I think it can be discussed here.

Story wise: not gonna spoil the entire story for the reason I stated above. You would play as a french student that nobody care about him due to his taste for metal music, not going to parties, not having friends... Nobody except a childhood friend that has always been there for him. One day, he confess his love for his childhood friend and he finally found something/someone to live for. But in a sudden, the school would get attacked for an unknown reason and the police stated that only one student survived and only one is missing: his childhood friend. Since he "had nothing to lose", he went to make his own investigation.

Gameplay wise: the mod is supposed to be an old school Quake/Painkiller/Unreal shooter with some features from modern shooters.

Technology wise: prototype was made in GitHub SDK then switched to Xash3D until Arrangement was complete so I could switch back there (again for the tech. improvements).

Had the weapons done (assets were placeholders tho) and basic gameplay mechanics like sprinting, "rage mode" (temporary damage multiplier). Had the basic layout of the school done as well.

What happened?
Same reasons as Half-Counter but also for another obvious reason that you might have guessed while reading the story. I know talking politics in TWHL is against it's rules but allow me a small exception for a small moment. If you read correctly the story above, you might have noticed the sentence "school would get attacked". As you might know already, "school" and "violence" (especially with weapons) is a VERY sensible subject in our world (especially in the U.S.). I never planned to showcase any "shooting inside school" scene but the simple fact of talking about it in a video game is enough to sparkle attention. So if I pick up the project again, I will likely remove that part from the script and I will have to tackle this from another angle.
Posted 3 years ago2019-02-05 18:26:26 UTC
in Can´t find "hud.h", but It´s in there!! Post #341976
Check the "include directories" in the project's settings
Very excited. Have an idea in my head that I've wanted to try for ages. Does it strictly have to be HL1 / Source or is something like Sven Coop applicable?
The competition refers to "the" player in singular, so I'm guessing that only singleplayer games in the Valve universe are allowed.

But best to wait for an official confirmation from Urby. Something worth a note and he confirmed that to me directly on Discord: Counter-Strike: Condition Zero - Deleted Scenes is forbidden.
I think that engine's choice does matter, if you haven't done it already, you should look at this GDC presentation from Warren Spector about Deus Ex 1, the engine related part is at 36:20 :
Another example is PAYDAY: The Heist and PAYDAY 2 where the "Diesel" engine has been created for racing games in mind ("FlatOut" IIRC). IMHO, Overkill didn't took enough time to remove that "racing" foundation and replace it by a "FPS" one. This is heavily noticeable on PAYDAY 1 (network issues) and PAYDAY 2 (especially during it's launch period).

I'm not saying that Unity/UE4 are nowadays the "must use engines". A game under QuakeWorld, GoldSrc, Source, CryENGINE 1 or whatever engine still could make wonders. I haven't played Ion Maiden and Dusk but from what I see on the Internet, people are enjoying it despite using "old tech".

"The right engine in the wrong video game can make all the difference in the world"
Posted 3 years ago2019-01-22 12:20:02 UTC
in RunThinkShootLive's Ville Competitions Post #341779
Well, the issue there would be the difference between Source and Goldsource. I have no idea how to set up a Source mod. :P
I can handle that.
And can we get an official word specifically on custom code, because I feel like that is sort of a different level of custom content that doesn't tend to fit with these sorts of competitions.
To be fair, the code and binaries would need to be open to everyone even non-programmers.

Time to get myself ready this February then ^^
Posted 3 years ago2019-01-21 14:49:09 UTC
in Post Your Desktops Post #341763
Sorry, I should have added more details.

By "HDD eater", I mean that the disk I/O usage always was at 100% on a 7200 turns per minutes HDD, fresh installation.
Posted 3 years ago2019-01-21 14:11:10 UTC
in Post Your Desktops Post #341760
With the proper settings applied, you can disable the auto-restart post updates.

Only problems I have against Windows 10 is that it's a HDD eater and a SSD is near to mandatory, also the lack of deeper User eXperience customisation.
Posted 3 years ago2019-01-20 16:48:48 UTC
in Post Your Desktops Post #341740
@Urby : I had to hide the precious leaks of The Core xD
Posted 3 years ago2019-01-19 18:44:32 UTC
in Post Your Desktops Post #341719
Good quality desktop right thereGood quality desktop right there
Posted 3 years ago2019-01-16 07:56:08 UTC
in TWHL Modded Minecraft Server Post #341688
I'm fine with whatever, if we're going "modded", don't add 500 mods tho xD
Posted 3 years ago2019-01-15 20:08:10 UTC
in SharpLife - Dot Net Core based modding p Post #341679
In my opinion, it may do the opposite. It may encourage people. I've never used C#, but from what I hear and see here, it seems easier than C++
It is, in high programming languages (C#/Java), you don't have to deal with pointers (but you still need to worry about "null references"), memory allocations, memory leaks and more, the language does that for you. The only problems (which aren't really problems if you ask me) is you need a "Common Language Runtime" (.NET Core Runtime in the case of Sharp-Life) to run the code and it can be easily reverse engineered (yeah I know about obfuscation). C/C++ being low level programming languages are "closer to the machine", it's the opposite.
Then there's the question of doing it from scratch. If the HL SDK is ported to C#, do we replicate the changes which we made to our C++ HL SDK code over to the C# HL SDK, or something else?
My guess is that you will need to start from scratch, there are already so many differences that you can't just move your C++ code over to C#. Let's take an example: to save/restore entities data, the C/C++ way is to declare and use a save/restore table. Sharp-Life through the power of C#'s annotations handles the save/restore table already for you and you just need to annotate the variables you want to be saved/restore.

// Might be wrong here
C# (Sharp-Life):
// Might be wrong here too (feel free to correct me Solokiller if I messed up)
class CTWHL
    bool StatusSent;
Posted 3 years ago2019-01-15 16:47:39 UTC
in SharpLife - Dot Net Core based modding p Post #341672
For now, nothing, it's not even mature enough to start building your own game/mod on top of it
Posted 3 years ago2019-01-14 15:52:27 UTC
in RunThinkShootLive's Ville Competitions Post #341651
Good to know about the custom content disclamer.

Looking forward to this.
Posted 3 years ago2019-01-13 17:17:46 UTC
in The Hype-o-matic (Upcoming games) Post #341634
  • Black Mesa: Xen
  • Rage 2
  • Wolfenstein: Youngblood
  • DOOM: Eternal
  • Serious Sam 4: Planet Badass
Posted 3 years ago2019-01-13 16:05:58 UTC
in TWHL Modded Minecraft Server Post #341630
I think the server had too many mods and it caused 2 problems:

The first one being that people like me who knew nothing about these mods had to learn everything, aside from helping Solokiller with his base and exploring the map, I haven't done much more interesting.

The second one is that you basically needed a somewhat beefy computer to even start the game. The only time I could join the server was when I had my desktop PC, but if I was using my laptop (2,4 Ghz Dual Core + 4 Gb RAM + Ubuntu), it took me literally 10 to 15 minutes to get the main menu (and my entire desktop was freezing).

I'm interested for a vanilla 1.13.2 or vanilla 1.14-SNAPSHOT, although I would prefer 1.13.2 so I can grab OptiFine (unless they also provide builds for snapshots versions but I don't remember).