Not Windows 8: start, run, %temp%, delete everything
Windows 8: Right click dashboard area in bottom left corner, click on run, type %temp%, delete everything
Setting Up NewGen
Part 0.5: Intro to WE
Exploring WE
Create a map with deep water and then go to the Terrain Editor and click on Apply Height. From there, click on the Raise tool and apply it to the map until the ground goes above the water level. This is used to get more natural water. Alternatively, cliffs can be used, but those look horrible.
Part 2: Calling functions, special integers (hex, ascii, octal? (not sure if I hit octal)), unit type ids
If I didn't hit octal, octal integers start with 0 instead of 0x -> 0123
Octal: 01234567
Hexadecimal: 0123456789ABCDEF
For more information on number systems, please see Saving and Loading
Part 3: Setting variables, math expressions, string expressions, passing variables into functions, setting variables to functions
Part 4: creating functions, introduction to scope, local variables, returning values
Part 5: globals block, if statements, boolean expressions, loops, exitwhen
Part 6: scopes, public, private, initializers, libraries, uses/requires (library ordering)
I say nested functions at one point for initializers, but I meant to say nested scopes.
Part 7: intro to structs: fields, methods, static, onInit, this, thistype, create, destroy, structs as types, typecasting
Part 9: optional modules, more interesting uses for modules, timer, timerdialog
Part 10: stacks, allocation/deallocation
Alloc from video
I made a slight mistake in the video for deallocating.
Notice the == -1. When a struct is allocated, it's set to -1, so this would always end up throwing an error. debugif(recycler[this]==-1orthis==0)then
It should be != -1 debugif(recycler[this] !=-1orthis==0)then
When it is deallocated or wasn't allocated before, it's going to have a value that isn't -1. The only instances with a value of -1 are allocated instances.
The fixed code is found below (using DisplayTimedText instead of Print so that it is ready for use).
set recycler[this]= recycler[0] set recycler[0]=this endmethod endmodule
Part 11: collection modules, queues, dequeues, and linked lists
Part 12: unit groups
Part 13: intro to triggers
Part 14: execute func, threading, trigger sleep action
Part 15
triggers, boolexpr, force group enum for evaluation
There are some things I didn't make clear in this video due to the state I was in while making it. Watch the video before reading these points.
#1: TriggerEvaluate runs all conditions on a trigger. Conditions are boolean expressions (Condition native) that wrap up functions. They are stored in a trigger as triggercondition.
#2: TriggerExecute runs all actions on a trigger. Actions are just functions. They are stored in a trigger as triggeraction.
#3: The op limit is the thing that determines how much code you can run before a thread crashes. If you run too much code, your thread will crash.
#4: Triggers start their own threads, meaning that they get their own internal op limits. They are useful for avoiding op limit.
#5: Trigger actions are synchronous, meaning that they stay sync'd for all players in the game. This means that they can use TriggerSleepAction. They are also slower due to this.
#6: Trigger evaluations are also useful for dynamic code. You can't run a function dynamically unless you use ExecuteFunc, TriggerExecute, TriggerEvaluate, or ForceGroupEnum.
#7: In terms of speed, TriggerEvaluate > ForceGroupEnum (only slightly slower) > TriggerExecute > ExecuteFunc.
#8: Use ForceGroupEnum for evaluating single functions. Use TriggerEvaluate for evaluating multiple.
Part 16: method operators
Part 17: static ifs, keywords, keys
Part 18: local code
texttag limit is 100, not 255
Special: memory
This last video takes everything you learned and delves deep into how memory is actually managed in JASS, Galaxy, and languages like c++. You will learn how identifiers work, how structs/classes really work, and you will even learn how to move from vjass to c++ and code a Linked List without relying on arrays. I really recommend this video.
Missing Things
interfaces - useless
function interfaces - useless
delegates - useful, but limited
0:56:27 "Im tired right now its 2:30 in the morning" but you still type twice fast as I do :D
also the sound gets a little off the video I think(your typing noises are around 3-4 seconds before its "typed" on the video at that point).
You could name the video somehow normally you know :D, 20120809 0123 54 doesnt really looks like its going to do something with jass except the tag vjass :D
0:56:27 "Im tired right now its 2:30 in the morning" but you still type twice fast as I do :D
also the sound gets a little off the video I think(your typing noises are around 3-4 seconds before its "typed" on the video at that point).
You could name the video somehow normally you know :D, 20120809 0123 54 doesnt really looks like its going to do something with jass except the tag vjass :D
Actually, the sound is 3-4 seconds off through the whole video. The video is also 700 megs, and I'm not uploading it again just to fix the filename ;p. Also, I don't know how to fix the sound, I used a program to record my screen or w/e.
The videos now have zooming, are much smaller, and have good quality ; ).
Parts 1-6 cover: variables, functions, scopes, libraries, initializers, lib requirements
Done Parts 7-8: structs Done Part 9: timers
Part 10: triggers, boolexpr, and force group enum for evaluations
Part 11: unit groups and group enum
Part 12: execute func, threading, trigger sleep action
Part 13: local code, data synchronization Done Part 14: stacks (arrays, linked) Done Part 15: allocation and deallocation Done Part 16: queues, dequeues, and linked lists
static ifs
Other data structures like binary search trees, avl trees, red-black trees, and so on can just be googled as you will have enough coding experience to understand them without a special tutorial ^_^.
If you look, there are no special tutorials on making things MUI or on memory leaks as they aren't needed.
My goal is to move GUIers to vjass and then move them to c++ and into regular game dev with game engines =).
Don't believe it's possible to get them into c++? Think again.
Code:
#include "Core.h"
prototype(nothing, firstFunction, nothing)
onInit
call display("Hello World");
local integer i = 5;
call display(i);
call firstFunction();
end
function(nothing, firstFunction, nothing)
local integer i = 5;
display("This is my first function ^^");
if (i == 5) then
display(i);
endif
loop
exitwhen(true)
endloop
endfunction
The above is c++ using definitions to transition people from vjass to c++.
Part 16 looks interesting, I've always been lazy to read more about queues, stacks and linked lists are usually enough for my needs, and either way, school is starting in a few weeks, I'll lore about them soon or later :)
Good job anyways, would've definitely helped a lot if these had been available when I started learning vJASS, learning only from other resources is quite slow (but at least efficient).
I'm likely going over part 16 next so as to better cover the back structure of triggers and unit groups ;D.
I also do cover stacks in the part 10 video. I added a little description to each video =P.
For each tutorial, I really do spend a lot of time to explain and demonstrate the content extremely well ;o. The first tutorial is all about declaring variables, and it's 9.5 minutes long, lol. In part 10, I really dive into stacks as well as how struct allocation and deallocation works (as it is a great stack example). I also show vjass generated code and compare it to the code I write in the tutorial.
The latest outline is (for remaining stuff)
Part 11. queues, dequeues, linked lists
Part 12. unit groups
Part 13. triggers, boolexpr, force group enum for evaluation
Part 14. execute func, threading, trigger sleep action
Part 15. local code, data synchronization
Its betrer then the one hella-long video and covers almost evertthing, but would you like to do one about static ifs as well? :D
I have no clue what they are except that they can be outside of functions :/