• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 06:27
CEST 12:27
KST 19:27
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL22] Ro24 Preview: Summer's End9Serral wins HomeStory Cup 2915Serral wins Maestros of the Game 244ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7
Community News
Weekly Cups (August 10-16): SHIN doubles2GSTL Returns in 2026!45Weekly Cups (Aug 3-9): Protoss get shut out7RSL goes to London! 2026 Offline Finals Nov 21-2212Weekly Cups (July 27-Aug 2): SHIN's big week0
StarCraft 2
General
Geoff 'iNcontroL' Robinson has passed away GSTL Returns in 2026! SC4ALL II: SC2 Player Announcement 6/8 - Maru Balance hotfix patch 5.0.16b (July 16) Serral wins Maestros of the Game 2
Tourneys
SC2 AI Tournament 2026 Fall 2026 GSTL Announcement Master Swan Open (Global Bronze-Master 2) PIG STY FESTIVAL 8.0! (13 - 23 August) WardiTV Mondays
Strategy
[G] Having the right mentality to improve
Custom Maps
Nexus Wars 2021 GUIDE [M] (2) Industrial Park
External Content
The PondCast: SC2 News & Results Mutation # 539 Thunder Dome Mutation # 538 Media Blackout Mutation # 537 Hostile Territory
Brood War
General
[Personal Project Share] Terran Defense v0.60 BW General Discussion Are you ready for ASL 22? NEW HYPE VIDEO [ASL22] Ro24 Preview: Summer's End BGH Auto Balance -> http://bghmmr.eu/
Tourneys
Escore Tournament - Season 3 [Megathread] Daily Proleagues [ASL22] Ro24 Group B [ASL22] Ro24 Group A
Strategy
Odyssey Mineral Stack Saturation Fighting Spirit mining rates Any training maps people recommend? Simple Questions, Simple Answers
Other Games
General Games
Nintendo Switch Thread General RTS Discussion Thread Anyone here play Quakeworld back in the day? Stormgate/Frost Giant Megathread EVE Corporation
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
[TL LoL EUW IHs] Teemo shall perish TSM pausing esports and CLG Dead
Heroes of the Storm
Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
TL Mafia Power Rank TL Mafia Community Thread NeO.D_StephenKing vs This Guy From 1 Million Dance
Community
General
US Politics Mega-thread Artificial Intelligence Thread Russo-Ukrainian War Thread Dating: How's your luck? The Letting Off Steam Thread
Fan Clubs
The Creator Fan Club MarineLorD Fan Club The ShoWTimE Fan Club
Media & Entertainment
Movie Discussion! Anime Discussion Thread Series you have seen recently...
Sports
Football (Soccer) Thread MLB/Baseball 2023 TeamLiquid Health and Fitness Initiative For 2023 NBA General Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread Simple Questions Simple Answers FPS when play League Of Legend on laptop
TL Community
The Automated Ban List Northern Ireland Global Starcraft
Blogs
Young Players Exit Esports E…
TrAiDoS
LOCKPICKING NOOB
LUCKY_NOOB
Cathedral Of CS And NY pizza a…
FuDDx
Please support my new stand…
Peanutsc
Customize Sidebar...

Website Feedback

Closed Threads



Active: 5934 users

Competitive Gaming Article by Day[9]

Forum Index > BW General
Post a Reply
1 2 3 4 5 6 7 8 Next All
Day[9]
Profile Blog Joined April 2003
United States7366 Posts
Last Edited: 2008-01-02 19:10:56
December 31 2007 01:44 GMT
#1
Hey everyone

Here's an article i wrote about some competitive game design theory. I figured some of you might like to read it, so here it is! <3 TL.net!!

-------------------------------------

The Marginal Advantage
By Sean Plott

I recently was involved in a Mancala competition, where the entrants had to code an artificial intelligence program that could play Mancala. It taught me an important lesson about competitive game design.

Mancala is a game in which the winner is the player who “captures” more stones than his opponent. Thus the winner of the competition was the entrant whose AI program bested all others in stone capture. One of the coders devised a computer program that would maximize the number of stones captured in a given turn. Throughout the tournament, he steamrolled his opponents, repeatedly winning by fifteen stone margins and instilling fear and despair in the hearts of other coders. However, his program ultimately lost in the finals by 0-2, and lost each of those games by exactly one stone. In fact, I was shocked to hear that the winning program had consistently won every game it played by exactly one stone. How could the first program, which seemed to terrorize opponents, lose to another program that could only barely squeak out a victory each time?

The results were explained by subtle differences in their approaches to game play. The first player wrote a greedy program, one that would gobble up as many stones as possible. The coder reasonably theorized that maximizing the number of stones would maximize his chances of winning. However, the winning coder displayed even greater insight into the game: his goal was to have more stones after both players had taken a turn. In a sense, after taking the lead, he chose to maintain that lead, rather than extend it. For example, instead of capturing ten stones in a turn, he would capture four, knowing all the while that his opponent could only capture three, and that his lead would thus be extended by one. In a sense, the first programmer’s AI was successful in maximizing the number of stones captured in each turn, it just happened that this was always one less than the winner.

I found this incident to be particularly intriguing, as it reflects the nature of successful competitive game design. I’ve been involved in the competitive gaming community since 2001. Although my primary game is StarCraft, I have considerable experience with WarCraft 3, CounterStrike, Marvel vs Capcom 2, and a variety of other games. Despite the fact that these games function in drastically different ways and demand completely different skill sets, the expert players, the players who consistently win, always share a single commonality: they play comfortably with a marginal advantage.

The marginal advantage embodies the notion that one cannot, and should not, try to “win big.” In a competitive setting, the strong player knows that his best opponents are unlikely to make many exploitable mistakes. As a result, the strong player knows that he must be content to play with just the slightest edge, an edge which is the equivalent to the marginal advantage. More importantly, a one-sided match ultimately carries as much weight as an epic struggle. After all, the match results only in a win or a loss; there are no “degrees” of winning. Therefore, at any given point in a game, the player must focus on making decisions that minimize his probability of losing the advantage, rather than on decisions that maximize his probability of gaining a greater advantage. In short, it is much more important to the expert player to not lose than it is to win big. Consequently, a regular winner plays to extend his lead in a very gradual, but very consistent manner.

Amateur players, on the other hand, try risky, greedy strategies. In CounterStrike, for example, it is not unusual for amateurs to dash out into crowds of enemies trying to pull off a miraculous string of headshots in order to eliminate the opposing team. The majority of the time, this kind of amateur is fragged in a nanosecond. Expert Counterstrike players, on the other hand, patiently and carefully pick off enemies, knowing that such caution and precision virtually guarantee a win.

Moreover, amateurs often have no idea what to do with a marginal advantage once they gain one. I have personally watched countless games of StarCraft in which a player gained a massive lead but later lost the game. An opponent moves out a large force, and the amateur annihilates it with ease. At this point, the amateur has a marginal advantage: he has not yet won, but his opponent has lost his military and cannot apply any pressure for some time. The amateur in this situation will immediately try to win by launching a counterattack and will then crumble to a strong defense. Alternatively, the amateur will expand excessively, overextending his bases to the point where his defenses are too thinly spread. Such decisions violate the law of the marginal advantage, as they allow the opponent to get back into the game. They erroneously attempt to extend the lead, as opposed to maintaining it.

So, what’s so special about the marginal advantage? It might seem that all I’ve done is imply that newbie players take unnecessary risks and experts do not. However, just as playing for a marginal advantage is the hallmark of the expert player, the presence of a potential marginal advantage in a game is the hallmark of excellent competitive game design. The Mancala tournament brought this sharply into focus for me. Building in and allowing for a marginal advantage leads to exciting and dynamic play.

Not that providing for a marginal advantage is the only critical element in competitive game design. I will concede that all reasonably designed competitive games share three basic traits: ambiguity of optimal play, diversity of play, and allowance for skill.

First, there is no such thing as a good competitive game that has an obvious optimal strategy. For example, there is no competitive tic-tac-toe gaming, as two logical players would tie every time. I remember playing an old real-time strategy game called KKND, where one of the units was clearly the strongest unit in the game. Playing against my brother degenerated into a fray where we hurled masses of the same unit at each other until one of us got bored and stopped playing. On the other hand, a superior game like StarCraft presents a completely intractable problem. There is no best race, no best strategy, and certainly no best way to win.

Second, a quality competitive game should have a variety of techniques that can be employed in order to win. That is, if a player performs strategy A, the opponent should have more than one reasonable response as an option. Games frequently have a system of built-in counters. Theoretically, game creators insert such counters to avoid the danger of an optimal strategy. However, these kinds of systems often cause games to be nothing more than a fancy multimedia version of rock-paper-scissors: Unit A counters Unit B counters Unit C counters Unit A. On the other hand, excellent competitive games, such as Marvel vs Capcom 2, allow for huge diversity in response. In Marvel vs Capcom 2, players can elect three characters to form a fighting team. With fifty-six characters from which to choose, Marvel vs Capcom 2 offers over 25,000 combinations of possible teams, presenting the player with virtually unlimited options. At the highest level of play, strong competitive players can be seen using drastically different teams and styles.

Third, a good competitive game should test a player’s skills and minimize the element of chance or luck. Ideally, the probability of a weak player defeating a good player should be as close to zero as possible. For example, in a well-designed game like WarCraft 3, it is highly unlikely that an amateur will be able to control his units or respond to his opponent’s tech patterns as well as an experienced player. In fact, the best way to test a player’s skill in a game is to present the player with more decisions. In WarCraft 3, a player not only has to make major decisions, such as which buildings to make or what hero to choose, but also has to make innumerable small decisions, such as how to precisely control each unit or time an attack. By presenting a player with more decisions, the game offers amateurs more opportunities to make mistakes and experts more opportunities to shine.

However, against this framework of competitive game design, we can understand why the marginal advantage gives a game flavor and excitement for both the player and observer. The marginal advantage not only provides the player with the joy of overcoming obstacles, of finding new and more effective methods of winning, but also allows a player to express himself, to have his own unique style. By exploiting the marginal advantage, the expert player is both a problem solver and an artist. In WarCraft 3, StarCraft, Marvel vs Capcom2, and CounterStrike alike, we see the individuality of the players shine through: some play aggressively, some play defensively; some are renowned for their solid, steady play, others for their unorthodox tactics. We respect the brilliance of their expert skills; we admire their ability to win. Yet, at the same time, we appreciate the aesthetic of each player’s technique, that each player finds a solution that is so different from the next player. If too many decisions are clear cut, the player has no need to discover his own marginal advantage over the field, and the competitive game collapses into redundant, unexciting play, unappealing to master and unappealing to watch. The brilliance of a competitive game is that the designer must limit his role to be the creator and balancer, to allow for the potential of innovation. In this way, each player can uncover his own marginal advantage and become the true pioneer of the game.
Whenever I encounter some little hitch, or some of my orbs get out of orbit, nothing pleases me so much as to make the crooked straight and crush down uneven places. www.day9.tv
ManaBlue
Profile Blog Joined July 2004
Canada10458 Posts
December 31 2007 02:34 GMT
#2
Wow Day, that got me thinking about all the games I've enjoyed and why. You really summed up the necessary aspects of a good competitive game.

Good stuff dude.
ModeratorTL VOD legends: Live2Win, hasuprotoss, Cadical, rinizim, Mani, thedeadhaji, Kennigit, SonuvBob, yakii, fw, pheer, CDRdude, pholon, Uraeus, zatic, baezzi. The contributors make this site what it is. *Props to FakeSteve for respecting the guitar gods*
NonY
Profile Blog Joined June 2007
8751 Posts
December 31 2007 03:03 GMT
#3
Let's make a game together!
"Fucking up is part of it. If you can't fail, you have to always win. And I don't think you can always win." Elliott Smith ---------- Yet no sudden rage darkened his face, and his eyes were calm as they studied her. Then he smiled. 'Witness.'
SonuvBob
Profile Blog Joined October 2006
Aiur21551 Posts
December 31 2007 03:42 GMT
#4
Let's make babies together!

Great read, very interesting. I didn't intend to read it all right now, but it sucked me in. One thing I'd like to mention is that players whose strategy is to gain and maintain the marginal advantage are almost always boring as hell to watch.
Administrator
Day[9]
Profile Blog Joined April 2003
United States7366 Posts
December 31 2007 03:48 GMT
#5
On December 31 2007 12:42 SonuvBob wrote:
Let's make babies together!

Great read, very interesting. I didn't intend to read it all right now, but it sucked me in. One thing I'd like to mention is that players whose strategy is to gain and maintain the marginal advantage are almost always boring as hell to watch.


i think you are taking it a little too much to the extreme

virtually every progamer plays in the margin; the games are extremely fragile. but, again, this is why starcraft is so fun to watch. its so intense to see players battle knowing that one or two errors can cost a game, or that one or two good decisions can swing a win
Whenever I encounter some little hitch, or some of my orbs get out of orbit, nothing pleases me so much as to make the crooked straight and crush down uneven places. www.day9.tv
SK.Testie
Profile Blog Joined January 2007
Canada11084 Posts
Last Edited: 2007-12-31 04:03:25
December 31 2007 04:02 GMT
#6
I'm in disagreement with Bob.
The players who take huge gambles are the most boring to watch.
3 hatch hydra all-in RARELY makes a good game vs a FE toss.
Whereas a long game where you know you have the advantage and calmly out expo your opponent while reaching 200 is fine and will give you lots of big battles that will look closer to the spectators than they really are, but you know you are winning unless some screw up happens.
Social Justice is a fools errand. May all the adherents at its church be thwarted. Of all the religions I have come across, it is by far the most detestable.
SonuvBob
Profile Blog Joined October 2006
Aiur21551 Posts
December 31 2007 04:17 GMT
#7
Well, the skill level in professional Starcraft is ridiculously high, and it has the depth to keep every match exciting. Also, in SC players tend to resign when the advantage gets to be too great.

In games where the 'greedy' approach is viable, the 'slow and steady' players tend to be less exciting to watch, though as your article says, the latter will be more likely to win. And as skill levels rise, eventually that will be the only viable option. Sorry, I can't think of many examples. If you followed the CS scene from the beginning, think about watching games from the early days vs more recent ones. When a team was basically 5 individuals with no real cohesive strategy, there was a lot more action (and lots of aces), whereas nowadays it's all about a perfectly executed strategy, with lots of waiting (the shortened timelimit kinda fixed that though). It's slower, with less aces and all that, but the game has the depth to keep it interesting for the spectators.

The games that are the most successful when it comes to spectating are those that have enough depth that the marginal advantage strategy is still fun to watch.
Administrator
SonuvBob
Profile Blog Joined October 2006
Aiur21551 Posts
December 31 2007 04:22 GMT
#8
Testie: I'm mainly referring to the average spectator. Obviously the more knowledge you have of a game, the more interesting the smaller details will be, whereas a lot of folks would probably rather watch a hydra all-in than a close 30 minute TvT.
Administrator
SonuvBob
Profile Blog Joined October 2006
Aiur21551 Posts
December 31 2007 16:35 GMT
#9
Bump. Don't fear the wall of text, people. Read it!
Administrator
Day[9]
Profile Blog Joined April 2003
United States7366 Posts
December 31 2007 17:03 GMT
#10
On January 01 2008 01:35 SonuvBob wrote:
Bump. Don't fear the wall of text, people. Read it!


ty for your support!!
Whenever I encounter some little hitch, or some of my orbs get out of orbit, nothing pleases me so much as to make the crooked straight and crush down uneven places. www.day9.tv
ATeddyBear
Profile Blog Joined December 2005
Canada2843 Posts
December 31 2007 19:09 GMT
#11
Hi day, long time lurker first time poster. I'd just like to say this was a great read, and now I know why I never manage to finish off my opponent when I attack him after I just won a battle.
Professional twice over - an analyst and a therapist. The world’s first analrapist.
Hot_Bid
Profile Blog Joined October 2003
Braavos36402 Posts
January 02 2008 19:11 GMT
#12
bump
@Hot_Bid on Twitter - ESPORTS life since 2010 - http://i.imgur.com/U2psw.png
Rekrul
Profile Blog Joined November 2002
Korea (South)17174 Posts
Last Edited: 2008-01-02 19:41:12
January 02 2008 19:23 GMT
#13
That was a really great, solid, and concise article. I enjoyed it and agree fully. I also feel this is not limited to competitive gaming alone but to other things like most sports (though i think it applies alot to poker and not to poker at the same time, depending on situations).

Punting on 4th and inches rather than going for it.

Safety shot in 9-ball (maybe this example applies the least)

Walking Barry Bonds.

Making your star baller sit out in the first half cause he has 3 fouls.

All of these things are examples of things that are not 'fundamentally correct' if you envision the game in it's purest form...but since we are human and there are always different situations and scenarios there are a lot of cute things that must be done to maintain the marginal advantage. Though, I must say that this definitely applies in games more than sports, in sports most of the time it's all about collecting as many rocks as possible.
why so 진지해?
Jonoman92
Profile Blog Joined September 2006
United States9110 Posts
January 02 2008 19:30 GMT
#14
I wasn't going to read it... but then I did when glancing at the positive comments.

I like the metaphor relating to Mancala. It's a nice article with a lot of truth.
Jibba
Profile Blog Joined October 2007
United States22883 Posts
January 02 2008 19:31 GMT
#15
First, there IS in fact competitive rock, paper, scissors. I'm not sure how they do it, but I guess it's all about reading people.

Second, I don't agree that one should always try and maintain a marginal lead. Certainly you should avoid becoming sloppy and overly aggressive, but maintaining that assertive edge is what gave you the lead in the first place, so you should continue to press it.

CS really is a good example of this, because momentum plays a huge role. Everyone has amazing aim at the expert levels, but when your confidence is high your aim becomes just a bit better and your reactions a bit faster. The opposite goes for when your confidence is struggling. A team might take a 10-2 lead in the first half and win the opening pistol round, basically guaranteeing them 12 rounds (13 to win.) From then on, there's three things that could happen. They could get overly confident, push impatiently and begin to lose rounds. They could maintain what they were doing before, and they could become too passive, and begin playing not to lose.

There's no fine line between these and ultimately it comes down to whether you're successful or not. We've all seen NFL teams get a big lead and then lose their aggressiveness, ultimately allowing the other team to come back. We've also seen the Patriots go full throttle for 60 minutes each game this season, demoralizing their opponents even further. Or "dagger" three pointers in the NBA. When they go in, of course it was the right decision, but when they miss it's always a mistake. It's really impossible to see the line between too aggressive and too safe, until after the game is over which is why sports (and esports) are so fantastic.
ModeratorNow I'm distant, dark in this anthrobeat
Chill
Profile Blog Joined January 2005
Calgary26003 Posts
January 02 2008 19:32 GMT
#16
Oh fuck I meant to post in this thread and then forgot to. Everything I have to say on this subject is already written more eloquently in this article; It was a great read.
Moderator
samachking
Profile Blog Joined August 2007
Bahrain4949 Posts
Last Edited: 2008-01-02 19:56:13
January 02 2008 19:39 GMT
#17
FE?

Edit: this is a really amazing article, well written,it's definetly the quality of a FE article, although I dont know the requirements.
"And then Earthlings discovered tools. Suddenly agreeing with friends could be a form of suicide or worse. But agreements went on, not for the sake of common sense, or decency, or self preservation, but for friendliness."
Rekrul
Profile Blog Joined November 2002
Korea (South)17174 Posts
January 02 2008 19:42 GMT
#18
this should go in the articles section i think, FE is specifically for starcraft progaming and involves progamers as far as i know, but then again i'm not sure...it is a worthy article though
why so 진지해?
iNcontroL *
Profile Blog Joined July 2004
USA29055 Posts
January 02 2008 19:50 GMT
#19
FE=Fast Expand.
Chill
Profile Blog Joined January 2005
Calgary26003 Posts
January 02 2008 19:50 GMT
#20
I was thinking of linking this in the strategy forum recommended threads. It's not entirely about StarCraft, but the leap is quite short. Thoughts?
Moderator
1 2 3 4 5 6 7 8 Next All
Please log in or register to reply.
Live Events Refresh
Escore
10:00
Season 3 Week 8
escodisco1311
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Lowko166
ProTech129
StarCraft: Brood War
Calm 6672
Leta 3760
Hyuk 1634
Shuttle 742
Bisu 701
Jaedong 643
Pusan 395
firebathero 322
EffOrt 209
Mini 156
[ Show more ]
Light 137
Stork 130
Soulkey 116
Soma 107
Snow 102
hero 64
NaDa 62
Killer 62
ZerO 46
Mong 37
sorry 36
Aegong 31
SilentControl 28
Rush 27
soO 25
Sexy 25
scan(afreeca) 24
Barracks 22
sSak 21
Hm[arnc] 19
Free 12
Noble 9
Dota 2
The International98712
Gorgc7343
singsing2310
KheZu80
resolut1ontv 36
Counter-Strike
olofmeister462
Other Games
summit1g4961
crisheroes365
ToD182
Sick115
Mew2King61
Trikslyr11
ZerO(Twitch)7
[ Show 14 non-featured ]
StarCraft 2
• Berry_CruncH364
• LUISG 22
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• Migwel
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• WagamamaTV113
• Noizen50
League of Legends
• Jankos1279
• Stunt498
Upcoming Events
PiG Sty Festival
1h 33m
Serral vs Reynor
HeRoMaRinE vs herO
Big Brain Bouts
5h 33m
MaNa vs Kelazhur
Nicoract vs HeRoMaRinE
Serral vs Cure
CranKy Ducklings
23h 33m
PiG Sty Festival
1d 1h
Zoun vs Solar
SHIN vs Maru
Patches Events
1d 5h
Sparkling Tuna Cup
1d 23h
PiG Sty Festival
2 days
OSC
2 days
Afreeca Starleague
2 days
hero vs ggaemo
Larva vs Mong
The Patches Monday
3 days
[ Show More ]
GSL
4 days
PiGosaur Cup
4 days
Replay Cast
4 days
Replay Cast
5 days
The PondCast
5 days
Liquipedia Results

Completed

Proleague 2026-08-19
CranK Gathers Season 4: BW vs SC2 Team League
Eternal Conflict S2 Finale

Ongoing

KCM Race Survival 2026 Season 3
K-JUNGMAN
ASL Season 22
Super Anchor Qualifying S3
CSL Season 22: Qualifier 1
Escore Tournament S3: W8
RSL Revival: Season 6
PiG Sty Festival 8.0
META DYMY #4
Esports World Cup 2026
Esports World Cup 2026: LCQ
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
XSE Pro League 2026
IEM Cologne Major 2026

Upcoming

CSL Season 22: Qualifier 2
CSL 2026 AUTUMN (S22)
Acropolis #5
Acropolis #5 - TRS
Blizzard Classic Cup 2026
Acropolis #5 - GSA
Acropolis #5 - GSB
HSC XXX
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Offline Finals
Big Dog Cup 2026 Div 1
IEM Beijing 2026
Stake Ranked Episode 5
PGL Masters Bucharest 2026
Thunderpick World Champ. '26
ESL Pro League Season 24
Stake Ranked Episode 4
1win Private Club #1
Logitech G Play Connect 2026
SL StarSeries Fall 2026
FISSURE Playground #3
BLAST Open Fall 2026
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.