03.10.2016, 14:35
It's scaleable/asynchronous: assuming you write your code right (ie. with good use of tasks), your server can be as feature rich at 1000 players as it could be at 1.
This is a huge, huge, huge, huge, HUGE improvement over Pawn. Because of this lack of scaleability there are whole schools of thought around optimization lead by some of the most recognizable developers on these forums. Also - proper containers (lists, dictionaries, sets, etc) with dynamic memory allocation/management.
I'd be interested to hear how it performs directly against Pawn too - given the way that Tim has implemented it I have a sneaking suspicion that it'd perform better than Pawn even without threading. Though this is pure speculation on my part.
It's .NET: there are at least tens of thousands of methods/functions - and that's a conservative estimate on my part. The only stat I could find is for types (most of which will be classes) - 40,000. Alongside Java it has to be one of the most popular languages in the world, which means it's very robust, and it has a very active, contributing community.
One of the many cool things I have done in SAMP# is to host my web UCP directly from the gamemode where all calls are made directly to the game with no sort of messaging interface - if I wanted to have a button on the UCP that sets someone's health to 100, all I had to do was player.Health = 100 and it would reflect immediately ingame.
Entity Framework (which Tim fixed last night) has the capacity to analyse an entire database and develop a OOP implementation of that object model, meaning no direct database code. It's what all ORMs (including the ones written for SA-MP) want to be when they grow up.
It's easy to work with: Development lifecycle is a fraction of what it was using Pawn - simply being about to to list.Add(bla) rather than fucking about with arrays saves a ton of time. It's modular + OOP - meaning your code can be split into individual 100 line files that implement a specific feature, rather than having a 150,000 line behemoth. Visual Studio (the IDE that people most commonly write C# in) is personally my favourite IDE on the planet and I think most other IDEs are pale imitations of what VS has achieved.
Pawn is a dinosaur: like let's look at the crux of this; for what it was designed to do, Pawn is a fantastic.
But it was written in the 00's to control MP3 players and things that are alike. That's why it doesn't have things like asynchronicity or dynamic memory management: it had a set of simple tasks to achieve.
The only other thing that I can think of that uses Pawn is AMXX on GoldSource (Half Life 1/CS 1.6) and I strongly suspect AMXX's implementation was what influenced the SA-MP development team to implement it here. But even AMXX/AlliedModders have acknowledged that Pawn struggles to rise to the challenge - now demonstrated by the fact that they basically overhauled it for SourceMod.
Now I owe an awful lot to Pawn: it is the first language I learnt (for AMXX on The Specialists) when I was 11, and therefore I owe my entire career to that small but versatile little programming language. But try as I might (like many others) to improve Pawn to implement things like OOP, it was not built for it and all you do is introduce instability in return for a nearly-but-not-quite-there syntactical sugar. I ask you all this: can you think of any other modern multiplayer project that uses Pawn?
I only have one concern around this - and that would be is if Tim were to fall off the radar and the plugin fell into disrepair - but a) that hasn't happened and b) the project is open-source and if it came to it I would maintain it.
This is a huge, huge, huge, huge, HUGE improvement over Pawn. Because of this lack of scaleability there are whole schools of thought around optimization lead by some of the most recognizable developers on these forums. Also - proper containers (lists, dictionaries, sets, etc) with dynamic memory allocation/management.
I'd be interested to hear how it performs directly against Pawn too - given the way that Tim has implemented it I have a sneaking suspicion that it'd perform better than Pawn even without threading. Though this is pure speculation on my part.
It's .NET: there are at least tens of thousands of methods/functions - and that's a conservative estimate on my part. The only stat I could find is for types (most of which will be classes) - 40,000. Alongside Java it has to be one of the most popular languages in the world, which means it's very robust, and it has a very active, contributing community.
One of the many cool things I have done in SAMP# is to host my web UCP directly from the gamemode where all calls are made directly to the game with no sort of messaging interface - if I wanted to have a button on the UCP that sets someone's health to 100, all I had to do was player.Health = 100 and it would reflect immediately ingame.
Entity Framework (which Tim fixed last night) has the capacity to analyse an entire database and develop a OOP implementation of that object model, meaning no direct database code. It's what all ORMs (including the ones written for SA-MP) want to be when they grow up.
It's easy to work with: Development lifecycle is a fraction of what it was using Pawn - simply being about to to list.Add(bla) rather than fucking about with arrays saves a ton of time. It's modular + OOP - meaning your code can be split into individual 100 line files that implement a specific feature, rather than having a 150,000 line behemoth. Visual Studio (the IDE that people most commonly write C# in) is personally my favourite IDE on the planet and I think most other IDEs are pale imitations of what VS has achieved.
Pawn is a dinosaur: like let's look at the crux of this; for what it was designed to do, Pawn is a fantastic.
But it was written in the 00's to control MP3 players and things that are alike. That's why it doesn't have things like asynchronicity or dynamic memory management: it had a set of simple tasks to achieve.
The only other thing that I can think of that uses Pawn is AMXX on GoldSource (Half Life 1/CS 1.6) and I strongly suspect AMXX's implementation was what influenced the SA-MP development team to implement it here. But even AMXX/AlliedModders have acknowledged that Pawn struggles to rise to the challenge - now demonstrated by the fact that they basically overhauled it for SourceMod.
Now I owe an awful lot to Pawn: it is the first language I learnt (for AMXX on The Specialists) when I was 11, and therefore I owe my entire career to that small but versatile little programming language. But try as I might (like many others) to improve Pawn to implement things like OOP, it was not built for it and all you do is introduce instability in return for a nearly-but-not-quite-there syntactical sugar. I ask you all this: can you think of any other modern multiplayer project that uses Pawn?
I only have one concern around this - and that would be is if Tim were to fall off the radar and the plugin fell into disrepair - but a) that hasn't happened and b) the project is open-source and if it came to it I would maintain it.