• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 22:32
CET 04:32
KST 12:32
  • 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
RSL Season 3 - Playoffs Preview0RSL Season 3 - RO16 Groups C & D Preview0RSL Season 3 - RO16 Groups A & B Preview2TL.net Map Contest #21: Winners12Intel X Team Liquid Seoul event: Showmatches and Meet the Pros10
Community News
Weekly Cups (Nov 24-30): MaxPax, Clem, herO win2BGE Stara Zagora 2026 announced15[BSL21] Ro.16 Group Stage (C->B->A->D)4Weekly Cups (Nov 17-23): Solar, MaxPax, Clem win3RSL Season 3: RO16 results & RO8 bracket13
StarCraft 2
General
Chinese SC2 server to reopen; live all-star event in Hangzhou Maestros of the Game: Live Finals Preview (RO4) BGE Stara Zagora 2026 announced Weekly Cups (Nov 24-30): MaxPax, Clem, herO win SC2 Proleague Discontinued; SKT, KT, SGK, CJ disband
Tourneys
StarCraft Evolution League (SC Evo Biweekly) RSL Offline Finals Info - Dec 13 and 14! RSL Offline FInals Sea Duckling Open (Global, Bronze-Diamond) $5,000+ WardiTV 2025 Championship
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 502 Negative Reinforcement Mutation # 501 Price of Progress Mutation # 500 Fright night Mutation # 499 Chilling Adaptation
Brood War
General
BW General Discussion Which season is the best in ASL? Data analysis on 70 million replays BGH Auto Balance -> http://bghmmr.eu/ [ASL20] Ask the mapmakers — Drop your questions
Tourneys
[BSL21] RO16 Group D - Sunday 21:00 CET [BSL21] RO16 Group A - Saturday 21:00 CET [Megathread] Daily Proleagues [BSL21] RO16 Group B - Sunday 21:00 CET
Strategy
Current Meta Game Theory for Starcraft How to stay on top of macro? PvZ map balance
Other Games
General Games
ZeroSpace Megathread Stormgate/Frost Giant Megathread Nintendo Switch Thread The Perfect Game Path of Exile
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Mafia Game Mode Feedback/Ideas TL Mafia Community Thread
Community
General
Things Aren’t Peaceful in Palestine Russo-Ukrainian War Thread US Politics Mega-thread The Big Programming Thread Artificial Intelligence Thread
Fan Clubs
White-Ra Fan Club
Media & Entertainment
[Manga] One Piece Movie Discussion! Anime Discussion Thread
Sports
2024 - 2026 Football Thread Formula 1 Discussion NBA General Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
Where to ask questions and add stream? The Automated Ban List
Blogs
James Bond movies ranking - pa…
Topin
Esports Earnings: Bigger Pri…
TrAiDoS
Thanks for the RSL
Hildegard
Saturation point
Uldridge
Customize Sidebar...

Website Feedback

Closed Threads



Active: 2086 users

The Big Programming Thread - Page 338

Forum Index > General Forum
Post a Reply
Prev 1 336 337 338 339 340 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
Ilikestarcraft
Profile Blog Joined November 2004
Korea (South)17731 Posts
August 09 2013 16:20 GMT
#6741
Ah thanks, makes sense now.
"Nana is a goddess. Or at very least, Nana is my goddess." - KazeHydra
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2013-08-09 16:44:13
August 09 2013 16:42 GMT
#6742
-- ignore, i was wrong --
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
Last Edited: 2013-08-09 16:51:14
August 09 2013 16:50 GMT
#6743
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

As a sidenote: Don't write code like that. It's not readable and prone to mistakes.

This works in C/C++ because everything can and will be implicitly casted to bool. 0 => false, everything else => true. I doubt C++ would still support this if it wasn't for compatability (with C) reasons. NULL is defined as
#define NULL 0
and personally I don't like using NULL anyways, 0 does the job and doesn't have to worry about #define shenanigans.

It wouldn't work in languages with stricter typing, where you typically don't have this implicit cast to bool.
If you have a good reason to disagree with the above, please tell me. Thank you.
gedatsu
Profile Joined December 2011
1286 Posts
Last Edited: 2013-08-09 16:53:58
August 09 2013 16:52 GMT
#6744
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

A statement like "a = b" will set the variable a to b, and then return the (new) value of a. The while test interprets 0 as false, and anything else as true. So when you reach the terminating '\0' of t, it will set *s to '\0', and then return '\0'=0 to the while statement which interprets it as false and stops.


The code is susceptible to a buffer overflow attack, you shouldn't use it.
doubleupgradeobbies!
Profile Blog Joined June 2008
Australia1187 Posts
Last Edited: 2013-08-09 16:58:18
August 09 2013 16:56 GMT
#6745
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?


Just aside from what others have said, it's often important to know what the return value of functions/operators are, because c will use them as implicit bool values.

As spine said, try not to program like this, it's difficult to read and forces people to memorize alot of return values especially when you start putting functions in there. Some of them are common/intuitive and arn't a big problem, but it's a slippery slope for putting more obscure functions into your while/if statements and it becomes a pain to read for even experienced programmers.

That said, it is important to know that return values can be used in that fashion, because people do this all the time, it's even pretty common in textbooks. So that at least you will know to look up return values when you see something like that.

Basically don't do it yourself, but be prepared to deal with having to read it :D
MSL, 2003-2011, RIP. OSL, 2000-2012, RIP. Proleague, 2003-2012, RIP. And then there was none... Even good things must come to an end.
nunez
Profile Blog Joined February 2011
Norway4003 Posts
August 09 2013 18:04 GMT
#6746
On August 10 2013 01:50 spinesheath wrote:
Show nested quote +
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

As a sidenote: Don't write code like that. It's not readable and prone to mistakes.

This works in C/C++ because everything can and will be implicitly casted to bool. 0 => false, everything else => true. I doubt C++ would still support this if it wasn't for compatability (with C) reasons. NULL is defined as
#define NULL 0
and personally I don't like using NULL anyways, 0 does the job and doesn't have to worry about #define shenanigans.

It wouldn't work in languages with stricter typing, where you typically don't have this implicit cast to bool.


we have nullptr now! :>
conspired against by a confederacy of dunces.
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
August 09 2013 18:22 GMT
#6747
On August 10 2013 03:04 nunez wrote:
Show nested quote +
On August 10 2013 01:50 spinesheath wrote:
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

As a sidenote: Don't write code like that. It's not readable and prone to mistakes.

This works in C/C++ because everything can and will be implicitly casted to bool. 0 => false, everything else => true. I doubt C++ would still support this if it wasn't for compatability (with C) reasons. NULL is defined as
#define NULL 0
and personally I don't like using NULL anyways, 0 does the job and doesn't have to worry about #define shenanigans.

It wouldn't work in languages with stricter typing, where you typically don't have this implicit cast to bool.


we have nullptr now! :>

Yeah, I just didn't actually code any C++ lately so I haven't gotten a chance to use it and forgot to mention it. It's a lot better than the previous solution as it has much better type safety. NULL should be considered obsolete imo (even if the definition is changed to nullptr, though I wonder how many compilers would actually do that since it might break existing hackish code).
If you have a good reason to disagree with the above, please tell me. Thank you.
Kambing
Profile Joined May 2010
United States1176 Posts
August 09 2013 18:25 GMT
#6748
On August 10 2013 03:22 spinesheath wrote:
Show nested quote +
On August 10 2013 03:04 nunez wrote:
On August 10 2013 01:50 spinesheath wrote:
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?

As a sidenote: Don't write code like that. It's not readable and prone to mistakes.

This works in C/C++ because everything can and will be implicitly casted to bool. 0 => false, everything else => true. I doubt C++ would still support this if it wasn't for compatability (with C) reasons. NULL is defined as
#define NULL 0
and personally I don't like using NULL anyways, 0 does the job and doesn't have to worry about #define shenanigans.

It wouldn't work in languages with stricter typing, where you typically don't have this implicit cast to bool.


we have nullptr now! :>

Yeah, I just didn't actually code any C++ lately so I haven't gotten a chance to use it and forgot to mention it. It's a lot better than the previous solution as it has much better type safety. NULL should be considered obsolete imo (even if the definition is changed to nullptr, though I wonder how many compilers would actually do that since it might break existing hackish code).


The standard defines conversions from nullptr to NULL (and other pre-C++11 null types), so there's no concern of breaking existing code.
Rannasha
Profile Blog Joined August 2010
Netherlands2398 Posts
August 09 2013 18:31 GMT
#6749
On August 09 2013 03:34 Millitron wrote:
Show nested quote +
On August 08 2013 14:18 Rannasha wrote:
On August 08 2013 13:16 Millitron wrote:
Alright, my google-fu has failed me, I'm pretty stumped on this one.

I'm trying to use Java to create a simple coordinate plane in an image file. Basically I want a jpeg that looks like graph paper.

I can't simply grab one off google images because I don't know exactly what size I need yet or how big each grid will be, and I'd like to be able to change these easily.

My current code is as follows:
import java.awt.image.*;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.awt.Color;


public class BlankMapBuilder {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
File mapfile = new File("blankmap.bmp");
BufferedImage image = ImageIO.read(mapfile);
Color c = Color.BLACK;
for (int i = 1; i < 2000; i++)
{
for (int j = 1; j < 2000; j++)
{
if((j % 10 == 0) || (i % 10 == 0))
{
System.out.println("j: " + j + "i: " + i);
image.setRGB(j, i, c.getRGB());
}
}
}
}
}


I've got a blank bitmap image of the right size and name in the package in eclipse, and the print statement triggers exactly as it should. I get no exceptions thrown or anything like that. But the image is still blank after I run the code. "image.setRGB()" doesn't seem to be doing anything.


Unless this isn't your entire code, you're not writing the image to a file. You create an empty .bmp, read it in, then manipulate the image in memory and then... nothing.

Instead, try creating the image object, manipulate it and then write it to a file.

edit: Changing your loops to
for (int i = 10; i < 2000; i += 10)

(and similar for j) will reduce the number of iterations by a factor 100 and allows you to also remove the if-statement, giving an additional small speedup.

Thanks. I got it to work, though I couldn't do your idea for the for-loops. That only colored the corners of every, it did not draw the edges. I don't mind the minor efficiency cost. I doubt the images will ever be much bigger than 2000x2000, and they're not used in anything time-critical.

Ah yes, you're right. I didn't think it through long enough.

What would work is something like:
for (int i = 10; i < 2000; i+= 10)
{
for (int j = 1; j < 2000; j++)
{
DoSomethingWithPixel(i, j);
DoSomethingWithPixel(j, i);
}
}
Such flammable little insects!
bangsholt
Profile Joined June 2011
Denmark138 Posts
August 10 2013 18:20 GMT
#6750
But why would you do that You'll just take the runtime from "not very long" to "a bit less than not very long", and now it is not obvious why you are skipping it

Unless the run time is a problem, you should not optimize. If you do optimize, run a profiler and figure out where you should optimize. You are almost always wrong in your guesses with where to optimize.

Clearness of code is as important if not more important than speed, as it's hard to achieve better speed if you do not know what is going on.
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-08-10 19:41:40
August 10 2013 19:38 GMT
#6751
On August 11 2013 03:20 bangsholt wrote:
But why would you do that You'll just take the runtime from "not very long" to "a bit less than not very long", and now it is not obvious why you are skipping it

Unless the run time is a problem, you should not optimize. If you do optimize, run a profiler and figure out where you should optimize. You are almost always wrong in your guesses with where to optimize.

Clearness of code is as important if not more important than speed, as it's hard to achieve better speed if you do not know what is going on.


Any "a bit less than not very long" is better than "not very long". If something isn't clear, you always have /* comments */, right? I don't really agree with your thinking. After all, one of Software Engineering's goals is efficiency, in particular not to waste system resources.
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2013-08-10 20:24:00
August 10 2013 20:09 GMT
#6752
I believe bangsholt meant if you're sacrificing readability in your code, as in your code isn't as self-documenting as it is before, the change you made is covering up another issue. Your comments should explain, this-and-that does X function, and if someone reads your code, they should very easily understand what's going on. Ideally you shouldn't be explaining why you did X optimization. X optimization should just be intuitive.

In this case, it's decently intuitive, so I don't think bangsholt's point stands (I would say the loops are still a bit unclear in their intent (for example using x and y instead of i and j, etc)), but the idea is okay.


In an ideal world, when you optimize, you shouldn't be writing little hacky its to get X marginally faster. Instead, you should be focusing on why your original code wasn't as fast as it could've been before. (Some exceptions may apply).

Small hackish behavior should feel very dirty because the premise is that all software problems can be resolved to much smaller, simpler problems, so when you use little "tricks" to gain an edge, it means the solution to your original problem wasn't optimal, and you could've found a more elegant solution that doesn't require this quirky, unclear optimization.
There is no one like you in the universe.
waxypants
Profile Blog Joined September 2009
United States479 Posts
August 10 2013 21:03 GMT
#6753
On August 10 2013 01:08 Ilikestarcraft wrote:
Have a quick question

In this code
while (*s++ = *t++);

I know that its copying a string but what confuses me is how does the loop actually work without what it seems to me a test condition?


Question was eventually addressed adequately I think, but there seems to be a lot of misunderstanding about NULL. NULL is meant for pointers. NULL actually has nothing to do with this problem. The conditional takes the value of "*s" after it has been assigned and will evaluate to false if it was 0 and true otherwise. At the end of the string is the null character ('\0', 0x00, etc). This is not the same as NULL, which is the null pointer. So, after "*s" is set to the null character, the while statement evaluates to false and then breaks out. As a side note, in C NULL can be defined as


#define NULL ((void*)0)


which makes its intention more clear. Setting a pointer to 0 rather than NULL sucks because then you lose the ability to look at the assignment statement and immediately tell if you are dealing with a pointer or an integer type.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
August 10 2013 21:06 GMT
#6754
On August 11 2013 06:03 waxypants wrote:

#define NULL ((void*)0)


which makes its intention more clear. Setting a pointer to 0 rather than NULL sucks because then you lose the ability to look at the assignment statement and immediately tell if you are dealing with a pointer or an integer type.

It doesn't matter so much, as both (void *)0 and 0 are the same bit configuration underneath. The only difference between the two is compiler semantics.
waxypants
Profile Blog Joined September 2009
United States479 Posts
Last Edited: 2013-08-10 21:30:27
August 10 2013 21:28 GMT
#6755
On August 11 2013 06:06 CecilSunkure wrote:
Show nested quote +
On August 11 2013 06:03 waxypants wrote:

#define NULL ((void*)0)


which makes its intention more clear. Setting a pointer to 0 rather than NULL sucks because then you lose the ability to look at the assignment statement and immediately tell if you are dealing with a pointer or an integer type.

It doesn't matter so much, as both (void *)0 and 0 are the same bit configuration underneath. The only difference between the two is compiler semantics.


I'm a bit confused as I don't even see how your point relates to my point, or even how even the rest of your statement implies "It doesn't matter so much". Additionally, they are not even necessarily the same "bit configuration underneath" (edit: As assigned to pointers, they are, but not in general).
Shenghi
Profile Joined August 2010
167 Posts
August 10 2013 21:38 GMT
#6756
On August 11 2013 04:38 darkness wrote:
Show nested quote +
On August 11 2013 03:20 bangsholt wrote:
But why would you do that You'll just take the runtime from "not very long" to "a bit less than not very long", and now it is not obvious why you are skipping it

Unless the run time is a problem, you should not optimize. If you do optimize, run a profiler and figure out where you should optimize. You are almost always wrong in your guesses with where to optimize.

Clearness of code is as important if not more important than speed, as it's hard to achieve better speed if you do not know what is going on.


Any "a bit less than not very long" is better than "not very long". If something isn't clear, you always have /* comments */, right? I don't really agree with your thinking. After all, one of Software Engineering's goals is efficiency, in particular not to waste system resources.

If something isn't clear, you ought to rewrite it so that it is clear rather than using comments to explain the unclear code. Furthermore, "a bit less long" is really only better than "not very long" if we're talking about orders of magnitude. The minor optimization discussed here is turning an algorithm from O(N^2) to O(N^2), losing a bunch of readability in the process. So you're really giving up something important and hardly gain anything in return.
People are not born stupid, they choose to be stupid. If you made that choice, please change your mind.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2013-08-10 22:35:43
August 10 2013 22:35 GMT
#6757
On August 11 2013 06:38 Shenghi wrote:
The minor optimization discussed here is turning an algorithm from O(N^2) to O(N^2), losing a bunch of readability in the process.


The O(N^2) is a notation of complexity, not performance.

for (i = 0; i < 1000;++i)

for (i = 0; i < 100; ++i)


Both are O(1) but the second is still preferrable whenever possible. Just because they are both O(1) doesn't mean that one can't be better than the other. The code being discussed makes the execution 10 times faster, so that is not a minor optimization. Depending on the context it can be a huge difference for a really, really, really tiny loss of readability.
CecilSunkure
Profile Blog Joined May 2010
United States2829 Posts
August 10 2013 22:38 GMT
#6758
On August 11 2013 07:35 Morfildur wrote:
Show nested quote +
On August 11 2013 06:38 Shenghi wrote:
The minor optimization discussed here is turning an algorithm from O(N^2) to O(N^2), losing a bunch of readability in the process.


The O(N^2) is a notation of complexity, not performance.

for (i = 0; i < 1000;++i)

for (i = 0; i < 100; ++i)


Both are O(1) but the second is still preferrable whenever possible. Just because they are both O(1) doesn't mean that one can't be better than the other. The code being discussed makes the execution 10 times faster, so that is not a minor optimization. Depending on the context it can be a huge difference for a really, really, really tiny loss of readability.

That's O(N)

N is 1000, then 100.
Deleted User 101379
Profile Blog Joined August 2010
4849 Posts
Last Edited: 2013-08-10 22:45:22
August 10 2013 22:44 GMT
#6759
On August 11 2013 07:38 CecilSunkure wrote:
Show nested quote +
On August 11 2013 07:35 Morfildur wrote:
On August 11 2013 06:38 Shenghi wrote:
The minor optimization discussed here is turning an algorithm from O(N^2) to O(N^2), losing a bunch of readability in the process.


The O(N^2) is a notation of complexity, not performance.

for (i = 0; i < 1000;++i)

for (i = 0; i < 100; ++i)


Both are O(1) but the second is still preferrable whenever possible. Just because they are both O(1) doesn't mean that one can't be better than the other. The code being discussed makes the execution 10 times faster, so that is not a minor optimization. Depending on the context it can be a huge difference for a really, really, really tiny loss of readability.

That's O(N)

N is 1000, then 100.


Depends. The 1000 is a constant, it never changes. Constant execution time is O(1). If the 1000 was passed in via a variable, it would be O(N), i.e. scales linarly. The 100 is not related to the 1000 before, so it's in itself O(1) as well.

In the case of
void foo(int x)
{
for (int i = 0; i < x; ++i) { }
}

foo(1000);
foo(100);

it would be O(N)

Then again, that is just my interpretation. Might be that comp sci people disagree with it. I never cared much about the theory of that stuff since it has no connection to real programming anyways.
Shield
Profile Blog Joined August 2009
Bulgaria4824 Posts
Last Edited: 2013-08-10 22:47:33
August 10 2013 22:46 GMT
#6760

for (int i = 10; i < 2000; i+= 10)
{
for (int j = 1; j < 2000; j++)
{
DoSomethingWithPixel(i, j);
DoSomethingWithPixel(j, i);
}
}


How is this not O(N^2)? As far as I remember, nested loop is O(N^2) or O(N^3) if you have 3 loops inside each other. I'm 99% sure this is the case, but regardless if I'm right, I still need to refresh my Big O notation knowledge.
Prev 1 336 337 338 339 340 1032 Next
Please log in or register to reply.
Live Events Refresh
Replay Cast
00:00
WardiTV Mondays #62
CranKy Ducklings151
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Nathanias 151
RuFF_SC2 118
StarCraft: Brood War
Artosis 757
Tasteless 86
Bale 81
Shine 60
Icarus 7
Dota 2
monkeys_forever846
NeuroSwarm149
League of Legends
JimRising 620
C9.Mang0328
Counter-Strike
Coldzera 1205
Fnx 197
Other Games
summit1g13531
tarik_tv4987
shahzam569
ViBE141
Mew2King76
ToD29
CosmosSc2 24
Organizations
Other Games
gamesdonequick1075
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 13 non-featured ]
StarCraft 2
• Hupsaiya 86
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• RayReign 22
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Doublelift4440
Upcoming Events
The PondCast
6h 28m
OSC
12h 28m
Demi vs Mixu
Nicoract vs TBD
Babymarine vs MindelVK
ForJumy vs TBD
Shameless vs Percival
Replay Cast
20h 28m
Korean StarCraft League
1d 23h
CranKy Ducklings
2 days
WardiTV 2025
2 days
SC Evo League
2 days
BSL 21
2 days
Sziky vs OyAji
Gypsy vs eOnzErG
OSC
2 days
Solar vs Creator
ByuN vs Gerald
Percival vs Babymarine
Moja vs Krystianer
EnDerr vs ForJumy
sebesdes vs Nicoract
Sparkling Tuna Cup
3 days
[ Show More ]
WardiTV 2025
3 days
OSC
3 days
BSL 21
3 days
Bonyth vs StRyKeR
Tarson vs Dandy
Replay Cast
4 days
Wardi Open
4 days
StarCraft2.fi
4 days
Monday Night Weeklies
4 days
Replay Cast
4 days
WardiTV 2025
5 days
StarCraft2.fi
5 days
PiGosaur Monday
5 days
StarCraft2.fi
6 days
Tenacious Turtle Tussle
6 days
Liquipedia Results

Completed

Proleague 2025-11-30
RSL Revival: Season 3
Light HT

Ongoing

C-Race Season 1
IPSL Winter 2025-26
KCM Race Survival 2025 Season 4
YSL S2
BSL Season 21
CSCL: Masked Kings S3
Slon Tour Season 2
Acropolis #4 - TS3
META Madness #9
SL Budapest Major 2025
ESL Impact League Season 8
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2

Upcoming

BSL 21 Non-Korean Championship
Acropolis #4
IPSL Spring 2026
Bellum Gens Elite Stara Zagora 2026
HSC XXVIII
RSL Offline Finals
WardiTV 2025
Kuram Kup
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
eXTREMESLAND 2025
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 © 2025 TLnet. All Rights Reserved.