On May 24 2010 20:40 iCCup.Nove wrote:
But...it's beta...
But...it's beta...
Indeed! And what's a beta for, bro? It's for feedback! It's for people to whine and complain because this is (supposedly) a period where we can incite change, yes?
Forum Index > SC2 General |
IskatuMesk
Canada969 Posts
On May 24 2010 20:40 iCCup.Nove wrote: But...it's beta... Indeed! And what's a beta for, bro? It's for feedback! It's for people to whine and complain because this is (supposedly) a period where we can incite change, yes? | ||
PobTheCad
Australia893 Posts
On May 24 2010 20:44 Rabiator wrote: In the novel DUNE the young hero Paul Atreides gets tested if he is a "human" or an "animal" ... if he can control his emotions or if they control him. Most of our children havent learned to control their emotions yet, so they will fall for every temptation which is presented to them. Thus I would really like for Starcraft 2 to get a "mature" rating and get rid of the ridiculous censorship. Of course Blizzard wont do it, because they are greedy adults who dont care if they are ruining peoples lives by presenting them with an addiction in a young age. maybe they think they will get more sales if it's rated T instead of M , like those GTA games that sold horribly blizzard is now part of activision , they are not the same company they were 10 years ago.One day a new company will rise up and create the ultimate successor to brood war in the RTS genre , SC2 is looking more and more like a joke every passing week. | ||
Liquid`Jinro
Sweden33719 Posts
On May 24 2010 20:19 Kuzmorgo wrote: Couldnt they do this censorship stuff with parental control? Like the parents of the youngsters can setup his B.net account so that he cant play maps with censored words, or dunno, maybe he would have it censored or smthing. I mean it wouldnt matter, cause it wont affect 1% of the gamers anyway, but maybe it would satisfy the authorities who decide the rating of the game?? Ah whatever... Right now, im seriously considering not to buy this game afterall... at least not until its starting price goes down Maybe they could just get the stick surgically removed from their ass, and not censor words like "god", "blow", "backdoor" etc. Seriously, the only explanation I can come up with is that said stick is constricting the blood supply to the brain of whomever is making all these calls. | ||
Wolfpox
Canada164 Posts
| ||
3772
Czech Republic434 Posts
| ||
Pigsquirrel
United States615 Posts
Instead, Blizz cocked it up with some hairbrained idea... | ||
lol.Froste
United States112 Posts
On May 24 2010 18:49 iMAniaC wrote: + Show Spoiler + Many good posts in here, especially the opening post. I really hope Blizzard sees it and reconsiders the way they're going. My thoughts are: It seems to me that what Blizzard is trying to implement here, is primarily not a good match making system, not a great editor, not an awesome game, but the age og micro transactions and getting even more money off your customers. I think the line of thinking is something like: "It's only obvious that people who use our IP the most, pay us a little more than everyone else". So they define the lowest threshhold in which the game seems like a one time investment. This is for the players that buy the game, play it for a couple of months and never get dedicated to it. It is also for the reviewers. In this package goes the one time investment and the awesome, completely free, map making and online play, as well as the single player game. This is undoubtedly game of the year, if not the decade. However, after the initial reviews and sales, the game isn't generating any money anymore, so that's where we need micro transactions. Introducing custom decals and whatnot is a great way to rip off the ladder players, of course, everyone would like their own decals to show when they're playing, so that they can feel special. But there's got to be a way to rip off people who spend their time in the editor as well. After all, they're using Blizz's product without paying anything extra for it. So the answer is to limit the number of free maps to 5. After that, you can probably buy more map slots and in that way, they've gotten the users to pay for using the editor. And yeah, I'm just speculating here, but it's pretty clear to me, that's the way it's going. Oh, and map of the month? Yeah, that'll cost you. Because that would be their way to collect additional money from the people who like single player. They'll probably back it up by saying that it's the same quality as premium maps, and as such, it would be unfair towards the map makers and destructive to the map market to release it for free. Also, there's one post I'd like to comment: On May 24 2010 15:29 Bael wrote: Playing devil's advocate for a moment, does it seem reasonable to suspect that with such a restriction on the number of maps available to upload and host, that the quality of these maps will invariably be very high? With no room to host the 4 millionth version of a tower defense spinoff, it seems like Blizzard are encouraging every player who uses Battle.Net to have a crack at the editor and see what they can come up with, rather than relying on a select few mapmakers to provide the bulk of entertainment. Concordantly, those mapmakers who do excel above and beyond the masses will be encouraged to refine and perfect the maps they have uploaded rather than building big mess of different ones. The size issue could be Blizzard's way of encouraging smaller 'demo' style maps that showcase various features of the SC engine, with the possibility of granting the most popular demos increased space and bandwidth with which to host the 'full' version of the map. Just a thought from a different perspective. You're probably right, but is that really what they/we want? There's a great joy in itself making your own map. Or perhaps you like to make maps just to play with your friends and don't really care about popularity. There's been a tradeoff here. Take away some of the fun in order to gain something on the average quality of your market place. So is the SC2 editor about being creative and having fun, or is it about producing the highest quality products for free, for Blizzard to sell? That's my perspective. TL;DR: I think they'll introduce additional map slots for money, just to get some more money off those who spend their time in the editor. Also, they want to use map makers as a resource for money rather than having the editor be a tool for fun. oh shit.... i just caught a glimpse of a very scary future | ||
Wolfpox
Canada164 Posts
| ||
Tinithor
United States1552 Posts
On May 24 2010 21:25 Wolfpox wrote: I never realized how much the Teen rating would screw over things... especially online, you need to have the "not responsible" disclaimer and just let it flow The problem with this is that they've removed all capabilities to play offline so they can have total control over the players experience... Thus they cant get away with that i don't think. | ||
IskatuMesk
Canada969 Posts
On May 24 2010 21:29 Tinithor wrote: Show nested quote + On May 24 2010 21:25 Wolfpox wrote: I never realized how much the Teen rating would screw over things... especially online, you need to have the "not responsible" disclaimer and just let it flow The problem with this is that they've removed all capabilities to play offline so they can have total control over the players experience... Thus they cant get away with that i don't think. You will be able to play single player stuff offline. | ||
tYsopz
Norway215 Posts
Even their policy on privacy and censorship has gotten to the point I feel very skeptic about accepting the EULA. I'm thinking more and more to just stick to playing scbw and only play SC2 if i can get my hands on a cracked version where I don't have to sign an EULA that actually would be illegal in my country. | ||
Kuzmorgo
Hungary1058 Posts
On May 24 2010 20:44 Rabiator wrote: Show nested quote + On May 24 2010 20:19 Kuzmorgo wrote: Couldnt they do this censorship stuff with parental control? Like the parents of the youngsters can setup his B.net account so that he cant play maps with censored words, or dunno, maybe he would have it censored or smthing. I mean it wouldnt matter, cause it wont affect 1% of the gamers anyway, but maybe it would satisfy the authorities who decide the rating of the game?? Ah whatever... Right now, im seriously considering not to buy this game afterall... at least not until its starting price goes down Do you really think that kids should play computer games this much and that they should dictate how the game works? Personally I think kids should learn to ... - do math without a calculator first, - walk before they try to fly a Jet Fighter, - read the book before the movie comes out and most importantly - develop "social competence" before getting dates over the Internet. *1 All these things are negated by the addiction of computer games coupled with the inability of interested children to say no to them. In the novel DUNE the young hero Paul Atreides gets tested if he is a "human" or an "animal" ... if he can control his emotions or if they control him. Most of our children havent learned to control their emotions yet, so they will fall for every temptation which is presented to them. Thus I would really like for Starcraft 2 to get a "mature" rating and get rid of the ridiculous censorship. Of course Blizzard wont do it, because they are greedy adults who dont care if they are ruining peoples lives by presenting them with an addiction in a young age. *1 I dont know how it is in your countries, but there are A LOT of commercials on TV for dating agencies for anything from marriage to one-night-stands ... Personally I find this really questionable, because we seem to become unable (or are too lazy) to do it ourselves in real life. Well i dont think this is the right forum to argue if the "system" is OK or not. I dont think we can expect Blizzard to care about children... Of course you can be mad at them for it, but I really believe the better solution is to take care of your children better (dont take it personnaly i just mean it generally).. You cant really expect to change how the world is (unfortunately), but for example when i was a kid i always had to ask permission to play on our computer (it had a password set from BIOS ). Anyway, what i was saying is that considering that you cannot honestly expect Blizzard to make changes that would change the games rating in a bad way for them, they should look for solutions that would satisfy everyone (And most important of all, satisfy me (and by that i mean us)!! )... | ||
Kuzmorgo
Hungary1058 Posts
On May 24 2010 20:46 IskatuMesk wrote: Indeed! And what's a beta for, bro? It's for feedback! It's for people to whine and complain because this is (supposedly) a period where we can incite change, yes? I guess he was just trolling/joking | ||
Tdelamay
Canada548 Posts
I wouldn't go as far as firing the developer team for Battle.net, but they definitely better insight or better goals. It's good to remember that battle.net and SC2 are not the same team - I tend to mash both together and despite how great Starcraft 2 is, battle.net sours the deal. | ||
UdderChaos
United Kingdom707 Posts
+ Show Spoiler + Concerns about the Galaxy language Hello, I have some concerns about the Galaxy language after examining data from the StarCraft II beta. First off, this list only contains issues which are not easily fixable with a preprocessor or a higher level language, some of it are just guesses which may or may not be wrong. Dynamically allocated records There is an error which implies that this isn't supported. This is quite an important issue since if this isn't supported it renders garbage collection, records and pointers pretty much useless. You can't reference a record before it's defined You fixed the chicken and egg problem with functions, please do the same for records. Garbage collection I don't know if and how garbage collection will work in Galaxy, but I'm confident you will screw it up anyway. Function pointers There doesn't seem to be any sign of function pointers. However TriggerCreate references to functions be strings, which is bad news, if Galaxy supports function pointers or not. If Galaxy doesn't support them (I'd slap the idiot who suggested that), I'll pray that there will be a way to execute triggers directly in the same and a new thread. Fixed point arithmetics Fixed point arithmetics, while good in certain scenarios can cause problems with doing more complex calculations. There doesn't seem to be alternative float type you can use to avoid the problems. If you want to read more about my findings with Galaxy, I suggest you visit this thread: http://www.wc3c.net/showthread.php?t=109011 (Viewing requires registration for some reason) I have some additional concerns after studying the language and API further. Associative arrays This is a very important structure, which allows you to attach, e.g., a structure to a unit. In JASS2, the "return bug" was utilized to get an integer from a native type which was used as an index into an array, or previously as an string to a gamecache entry. This allowed you to construct an associative array. When the return bug was fixed, new natives was introduced (thank god Vexorian managed to convince you!) to replace that specific use of the return bug. Galaxy has a more advanced type system with structures and pointers, which basically means it has a infinite number of types. Creating natives to return a index for a subset of these types would be a bad solution. You could however: - allow every scalar value to be typecasted to an integer. We could use the integer as an index to a fixed size hashtable. This may however perform bad in a poor VM (which is probably the kind Galaxy will get). - add a new type to the language which syntax similar to an array, e.g. int[string] map, which would be a mapping from integers to strings. You could use it in code like map["hello"] = 3. These two solutions are rather unclean and mess up the language. A much better solution would be to implement boxing (see http://en.wikipedia.org/wiki/Boxing_(computer_science)). This would add a new native type which you could call 'object' or 'box'. A box would contain a value of the type of this value. The type should be reduced to a simple integer ID at compile time to allow quick comparison of types. You could then for example box an object by doing this: object b = 5; This could be represented by by an opcode 'box', e.g., box(5, int) -> b, where int would be an integer representation of the type. Unboxing could be done like this: int i = b; This could be represented by by an opcode 'unbox', e.g. unbox(b, int) -> i. If you tried the following: unit u = b; This would result in unbox(b, unit) -> u. The unbox opcode would compare the type stored in the box b (int) to the argument in the unbox (unit), if they don't match (like now) it should raise a runtime error. Now you could simply add a type and some natives to implement a map, here is an example for such natives: native map MapCreate(); native void MapClear(map m); // Removes all the key/value pairs in the map. native bool MapCompare(map a, map b); // Returns true if all the key/value pairs of map 'a' is equal to all the key/value pairs of map 'b'. native void MapMerge(map m, map other); // Overwrites the key/value pairs in 'm' with those in 'other'. native void MapSet(map m, object key, object value); native object MapGet(map m, object key); // This should raise a runtime error if the key doesn't exist. native bool MapHasKey(map m, object key); native void MapFindValue(map m, object value, object *result); // Sets variable 'result' to the key if a key with the value 'value' was found. Sets the variable 'result' to null if no keys with the value 'value' was found. native bool MapDeleteKey(map m, object key); // Returns true if the key was found and thus deleted. native void MapDestroy(map m); API Design Native functions should not use function pointers unless absolutely required. In the case that it's required (events/timers), you should be able to pass along a boxed type to reduce the need for associative arrays. The native functions that work on groups should not use function pointers. Here is some examples of possible ways to loop over a group: unit *u = UnitGroupFirst(group); while(u) { RemoveUnit(*u); u = UnitGroupNext(group, u); } object u = UnitGroupFirst(group); while(u) { RemoveUnit((unit)u); u = UnitGroupNext(u); } int i; int count = UnitGroupCount(group); while(i < count) { RemoveUnit(UnitGroupUnit(group, i); i += 1; } You seem to have gone with the last approach, which is basically a dynamic array of units. So why not implement a dynamic array instead, and get rid of those group types? Here is an example of natives to represent a dynamic array: native array ArrayCreate(); native bool ArrayCompare(array a, array b); // Returns true if all the elements of array 'a' is equal to all the elements of array 'b'. native array ArrayConcat(array a, array b); // Adds the elements of array 'b' to the end of array 'a'. native array ArrayRange(array a, int start, int stop); // Returns the elements from start to stop as a new array. native int ArraySize(array a); native void ArrayResize(array a, int size); native object ArrayGet(array a, int index); native void ArraySet(array a, int index, object value); native void ArrayInsert(array a, int index, object value); native int ArrayPush(array a, object value); // Adds the object to the end of the array. Returns the number of elements in the array after the addition. native object ArrayPop(array a); // Removes and returns the object at the end of the array. native bool ArrayFind(array a, object value); // Returns true if the object was found. native void ArrayDelete(array a, int index); native bool ArrayRemove(array a, object value); // Returns true if the object was found and removed. native void ArrayDestroy(array a); Now if dynamic arrays are added, you could extend the map natives with a few convenient functions: native array MapKeys(map m); // Returns an array of all the keys. native array MapValues(map m); // Returns an array of all the values. Not all the natives I've listed here for arrays or maps would be required, but having the most common usage patterns as natives will help speed up and clean up the code. The difference between string and text types Strings in JASS2 was fairly limited. They were string table based (a leaking one at that!). There wasn't many operations to perform on them and they were slow. This begs the question, why are there two string types in Galaxy? It seems like the text type is used when text is needed to be displayed on screen, this suggests that text types are internally optimized to be displayed on screen somehow and are possibly still string table based. Let's hope that neither the string or text leaks memory or are too slow. Pointers Currently null pointers does not raise a runtime error when dereferenced. This is obviously quite bad and should be fixed. It's also weird that you can't take a pointer of a constant, maybe you should use a read-only data section if you want these to stay constant? Function pointers Apparently (*(&function))(); is a valid syntax, but it generates a runtime error and I can't find out the syntax for that type. Either you aren't done taking out the functionality of a C parser/compiler, or it's still work in progress. I'm hoping it's the latter one. Dynamically allocated records Records (or structs if you like) could be allocated with the new operator. So you could do: structure *a = new structure; Deletion of dynamic records could be done with: delete a; This would require a runtime check to make sure you aren't trying to delete anything on the heap or stack. Extra points are given if you can allocate arrays and native types the same way. Opcode limit/execution limit Ever heard of threading? This limit should be put as high as possible or simply removed. Performance Galaxy has the potential to be just as fast as C. However that is not a realistic goal since C programs tend to be very well optimized using relativity slow state of the art compilers. You can't compile Galaxy code and store it in a map (not the whole process anyway). It would not be safe nor portable to store x86 code there. You either need to store the bytecode there (which reduces loading times, but it's more work) or compile the code when the map is loaded. Either way the best way to give Galaxy decent performance would be to write (or reuse) a JIT compiler. Even a trivial JIT for x86 lacking stuff like register allocation would provide a substantial performance increase over a bytecode based VM and is relativity simple to write. However if you want to port StarCraft II to other architectures (PPC, x86-64 springs to mind), or you want to combine it with a decent garbage collector you will be better off using a library. I do hope that it at least performs better than the JASS2 VM did. I've been testing and benchmarking the runtime further and I have some more input. Performance Galaxy seems to have fairly poor performance. Here is some benchmarks comparing it to Ruby which is regarded as a rather slow language: - Linear graph: http://img697.imageshack.us/img697/175/galaxybench1.png - Logarithmic graph: http://img444.imageshack.us/img444/450/galaxybenchlog1.png Strings are still interned, but they don't seem to leak and they don't have the terrible performance of JASS2 (although I wouldn't call them fast). Opcode limit/execution limit The opcode limit seems to be around 20 times of JASS2's one, but that still only allows computation for around 200 ms. The opcode limit mostly limits what can be done while loading the map or in other appropriate situations, you don't want to play a map that constantly freezes for 200 ms, but then again I'd much rather have the map freeze for a while rather than ruining the game. If a map wanted to intentionally freeze StarCraft II, some computations and a Wait call effectively achieves that. Type-safety Pointers to stack variables of executed functions is persists after the function returns (more return bugs, yay!). This means you can change the value of new stack variable should they reside the in same location. You can even replace the return address to implement some goto like behavior. However, Blizzard seems to have added a lot of runtime checks to reduce the possibilities for arbitrary code execution, but they don't actually fix the issue. The simplest and fastest solution to this problem is to implement a tracing garbage collector and allocate local variables which gets referenced on the heap, but I doubt that will happen. Another solution would be to tag every value on the heap and the stack. This is similar to the boxing type except all values are tagged and all pointer dereferences are checked to make sure they get or set a value of the right type. You could either use two separate heaps and stacks or store pairs of a type and a value in a single heap and stack. Using separate heaps and stacks may be more secure, but it's likely slower due to cache effects and you need to calculate the offsets of the pointers into each area. With a single heap and stack, pointers can be absolute and a simple addition is enough to find the position of the other type or value. This might seem like a lot of overhead, but it will likely perform better than Blizzard's naive checks and actually solve the issue. Function pointers/closures Closures are extremely handy when doing event-driven programming, which is what Galaxy will be used for, so this is a must-have feature. Closures should have the same syntax as function pointers and be interchangeable with them. Closures should be able to nested and they should be garbage collected. With a tracing garbage collector implementing closures is trivial, without one, you'll need to implement reference counting to keep track off the local variables which are stored on the heap. Hopefully, Blizzard has already written this to track handles, so they could probably reuse that. If closures were implemented, natives taking function pointer arguments wouldn't need an extra parameter for passing values. Here is some suggested syntax for closures: int calc(int value) { return 4 / value; } void run() { int i = 2; int(int) func; func = int(int value) { return value + i; }; // Assign a closure to the function pointer. func = calc; // You should be able to assign regular functions too. print(IntToString(closure(2))); // Should print 2. } Website Original Link: http://sc2c.org/post53.html#p53 Also i read somewhere (cant find the thread now) there there is some sort of limit on stacks or something that basically rapes the editors future usefulness, really annoying i cant find the thread explaining it now but hey maybe IskatuMesk knows what im talking about. | ||
IskatuMesk
Canada969 Posts
Some games like NWN1 had updates to their scripting languages well past release, let's hope Blizzard does the same. /edit Oh wow... those graphs are really depressing... :\ | ||
DeCoup
Australia1933 Posts
On May 24 2010 21:33 IskatuMesk wrote: Show nested quote + On May 24 2010 21:29 Tinithor wrote: On May 24 2010 21:25 Wolfpox wrote: I never realized how much the Teen rating would screw over things... especially online, you need to have the "not responsible" disclaimer and just let it flow The problem with this is that they've removed all capabilities to play offline so they can have total control over the players experience... Thus they cant get away with that i don't think. You will be able to play single player stuff offline. campaign offline (and with no achievements), not single player custom games afaik. | ||
divinesage
Singapore649 Posts
One of the main selling points of Blizzard was that it produced games that fans asked for. Take Diablo II for example, it's no less than an action-adventure RPG that set many unpredecented standards that other companies have tried to emulate but failed. The equipment generator perhaps still generates the largest amount of weapons any game has seen. Starcraft revolutionized the competitive RTS gaming scene. WC3's WorldEdit was an improvement to SC's StarEdit that ensured that people kept playing the game till this day. Look at Garena and we can tell that there are still hundreds of thousands of people still playing WC3 every day. And to top it all off, the beautiful support that Blizzard provided for its games ensured that their games are still going strong long after the shelf life of what ordinary games would last. These I think were the hallmarks of Blizzard that made whatever new game they produced so successful (WoW, and SC2 to come). This is why it's so baffling to me why Blizzard is taking the wrong approach now though this new iteration of Battle.net that has obviously proven to be inferior in almost all senses to its older counterpart. The old Battle.net has been successful for the past 11 years, so if it ain't broken, why fix it? I thought the general rule for sequels (Bnet 2.0 is a "sequel" to the old one, SC2 is a sequel to SC, GalaxyEdit is a sequel to WorldEdit and StarEdit) was never to remove tried and tested functions (LAN Support, playability across regions, Local Hosting) because history shows that doing so is akin to developers shooting themselves in the foot. I genuinely hope that whoever is up there in Blizzard can realise that it has become a premier gaming brand. Hell, if they charge double or even triple the price for an SC2 that has all the features we wanted, and provided a support team that actually listens to the fans (the very ones that made them famous in the first place), I'd still buy it without any hestitation, knowing that I will enjoy the game for another 8-10 years down the road (as I have with Starcraft, Diablo II and Warcraft III). Battle.net 2.0 needs a complete overhaul, I don't even mind if the game is further delayed, as long as the end product is a polished piece of work like the old games are. | ||
IskatuMesk
Canada969 Posts
On May 24 2010 22:12 DeCoup wrote: Show nested quote + On May 24 2010 21:33 IskatuMesk wrote: On May 24 2010 21:29 Tinithor wrote: On May 24 2010 21:25 Wolfpox wrote: I never realized how much the Teen rating would screw over things... especially online, you need to have the "not responsible" disclaimer and just let it flow The problem with this is that they've removed all capabilities to play offline so they can have total control over the players experience... Thus they cant get away with that i don't think. You will be able to play single player stuff offline. campaign offline (and with no achievements), not single player custom games afaik. ... Really? Wow. Well, I mean, I'm on cable... but still. That's just silly. | ||
spinesheath
Germany8679 Posts
On May 24 2010 22:13 divinesage wrote: I genuinely hope that whoever is up there in Blizzard can realise that it has become a premier gaming brand. Hell, if they charge double or even triple the price for an SC2 that has all the features we wanted, and provided a support team that actually listens to the fans (the very ones that made them famous in the first place), I'd still buy it without any hestitation, knowing that I will enjoy the game for another 8-10 years down the road (as I have with Starcraft, Diablo II and Warcraft III). They ARE charging triple the price of a regular game. There are going to be 2 expansions. | ||
| ||
Next event in 47m
[ Submit Event ] |
StarCraft 2 StarCraft: Brood War Dota 2 Counter-Strike Super Smash Bros Other Games Organizations Other Games StarCraft: Brood War StarCraft 2 StarCraft: Brood War
StarCraft 2 • musti20045 26 StarCraft: Brood War• gosughost_ 24 • Kozan • Laughngamez YouTube • Poblha • aXEnki • intothetv • Gussbus • Migwel • IndyKCrew • LaughNgamez Trovo Dota 2 League of Legends |
Korean StarCraft League
Afreeca Starleague
hero vs Soulkey
AfreecaTV Pro Series
Reynor vs Cure
ESL Pro Tour
World Team League
ESL Pro Tour
BSL
Zhanhun vs DragOn
Dewalt vs Sziky
CSO Cup
Replay Cast
Sparkling Tuna Cup
[ Show More ] ESL Pro Tour
World Team League
ESL Pro Tour
BSL
Gypsy vs Bonyth
Mihu vs XiaoShuai
ESL Open Cup
ESL Open Cup
ESL Open Cup
ESL Pro Tour
ESL Pro Tour
ESL Pro Tour
ESL Pro Tour
|
|