lordiolordio

Main News Favorites Reviews Stats
Add to Favorites

Contact Info / Websites

lordio's News


C++ Paradox has been through two overhauls now: once to Insanity, partially to change the name, now that I am aware of the existence of Paradox Interactive, a game publishing company, and partially to reorganize the file layout; once more to InsanityCOM, which uses Component Object Model principles to completely divide the interface (used by application code) from the implementation (the actual library code). InsanityCOM was the name I gave it while I was curious about how an implementation with COM would work, but I was still in favor of what is now the "classic" (deprecated) style.

The major bonus to a COM setup is that any headers used in the implementation are completely invisible to application code. For instance, before, the ConsoleDevice would include the iostream header, and this would expose the header in application code, even if the application should use the Insanity API rather than the C++ one.

A side bonus is that having separate source code and header files for Mac-specific implementations allows the use of the .mm file extension I expect will be prevalent.

A downside is that any template code must be implemented as a set of function overloads for all acceptable input types. The effect has only been felt so far with the input-output object interface (IIOObject), which has approximately fifteen overloads for each primary function, these being read, write, and writeLine.

The only template function in the code base so far is IObject::queryInterface(), which takes an explicit template parameter, and returns the calling object as a pointer to the requested type if the interface is supported, or nullptr if not. Anyone well-versed in C++ will point out that this is just a dynamic_cast, and they would be right on the money. All queryInterface does is "return dynamic_cast<_retType*>(this);" I'm sort of not sure why I included it, but the compiler will probably optimize it to dynamic_cast on its own anyway.

As a design consideration, Insanity will be just a platform abstraction framework. Any sort of game engine would be built on top of that. The only thing I've pinned down as definitely engine-level is mesh loading and drawing.

Tried going back to Parallels to iron out some issues in the level compile/decompile code. I think I managed to get them.


I live!

3/9/11 by lordio

Been a while.

I recently revisited what until recently was known as ASymmetric, and have decided to rename it Paradox, after Platinum Paradox Productions, a company that I have had in the back of my mind for some time. As a result, I have rewritten the pseudo-OS yet again, and have worked to incorporate several new ideas. Among them, I used to have a set of wrapper classes for certain essential AS3 classes. I have discarded this idea in favor of a "package" instruction that takes a user-defined object (though likely one defined in the kernel) and converts it to an opaque AS3 object. I am still considering whether this operation should be an instruction unto itself, or a gfunction.

On that note, I have largely scrapped the all-caps syntax of older versions, and intend to implement a case-insensitive lexer.

Another big instruction is "class". This creates a new object template in memory, and assigns the subsequent "class_method," "class_member," "instance_method," and "instance_member" calls to that class. An "end_class" instruction flushes the new class to the local datatype segment. "Get_member" and "set_member" work as they used to for these, though to access a class member, the class's name should be passed. Instances of the class have the same access to class members, so that will still work, but no instance is needed to access class members.

To use class and instance methods, the "call_cmethod" (class) and "call_imethod" (instance) instructions were devised. Here, the infixed letter determines whether to look for the first param in datatype memory, or the stack. I presume a "gcall_cmethod" and "gcall_imethod" are forthcoming, for accessing methods of global objects and classes.

I also decided to shrink the instruction signature from four parameters to two by moving the process's compiled token and depth arrays into read-only segments of its memory.

Another idea I had just earlier today was to institute a series of checks done at compile-time, ensuring that instructions only make valid assignments, such as ensuring a "set" instruction assigns a string to a string, and not, say, a boolean to a string.

I feel it may be somewhat tedious rewriting the lexer and linker yet again, but to ensure they work the way I want them to, I will soldier on.

One other instruction I also look forward to implementing is the "hook" instruction. This tells the program where to jump to when an event occurs. Most of these will have to be assigned in the kernel.

I also still have to give some thought to whether there should be a way to allow a variable to be looked up at specific scopes. This is particularly for allowing explicit access to global scope, but other situations may certainly crop up. I have no dearth of symbols I could use, and have been considering using square braces for a global lookup.

Lastly, I've been considering an instruction that allows the programmer to access a member of the executing process, though due to the internal structure of the system, it would be limited to public members. This instruction would only be accessible from the kernel, and would end up calling "executor[token1](otherTokens)" in its implementation. Mostly, this would be used for drawing commands.

The latest script I have been using to demo the current (intended) syntax is this:

class "MyClass"s
class_member "string"s "clsString"s
class_method "setStringc"s
.set {clsString} "This is the class string."s
.return
instance_method "setStringi"s
.set {clsString} "This is an instance string."s
.return
end_class

call_cmethod "MyClass"s "setStringc"s
new "string"s "myStr"s
get_member "MyClass"s "clsString"s {myStr}
gcall "Output"s {myStr}
comment "gcall syntax likely to change"s

new "MyClass"s "myObj"s
call_imethod {myObj} "setStringi"s
get_member {myObj} "clsString"s {myStr}
gcall "Output"s {myStr}

comment "Program over."s

In other news, I started work on a C++ framework by the same name as the above, differentiated by having the destination language prefixed to the name. So the framework in AS3 is "AS3 Paradox", and the one for C++ is "C++ Paradox." I note that the two are virtually unrelated other than the name and programmer. While AS3 Paradox is a frame management framework, C++ Paradox is a system abstraction framework, primarily, at this point, for Windows and Linux. I still have no easy way to test on Mac OSX systems, due to the very prohibitive cost to entry (namely, the cost of a testing platform). I do intend to support that platform eventually, but it is not a priority for me.

C++ Paradox grew out of a distaste for another 3D game engine I researched, Irrlicht. My problems with this primarily focus around its lack of use of DirectX 11 (and 10) and OpenGL 4.0 and 4.1. Despite this distaste, of course, my video card supports OpenGL 3.3 at maximum, so any testing I could do with versions beyond this will have to wait. There is also a twinge of NIH (Not Invented Here) syndrome. Other systems besides rendering I intend to provide include networking, a more intuitive windowing system, and script management system. This last one probably won't have any built in implementation for any specific language, though I imagine I will use it for Python and compiled scripts (scripts written using the scripting device but compiled into the executable rather than loaded from a script file) most often.

I recently reviewed the code, and decided to begin again, changing the backend on most of the devices so that, for example, the console had its input and output functions built in, rather than realized as separate components. Also, the main objects are being programmed as static libraries, which will be linked together into the Paradox dynamic link library (Windows) or shared object (Linux).

During v1, I told myself to make the code for Windows first, but this philosophy has been scrapped. I intend to make it work on both Windows and Linux concurrently. What I am looking at is whether to use the X11 interface on Linux, or perhaps a toolkit, such as GTK or Qt. The problems arise because, due to my use of the Express edition of Visual Studio, I only have access to Windows' Win32 C API. I am unsure whether, due to this limitation, I should use Linux's C windowing API. While it makes a certain sense, I have yet to see certain functions that would make the concurrent production easy. For example, Windows provides an easy way to create a button (insofar as doing anything with the Win32 API is easy). All the tutorials I've seen for doing the same with X11 involve drawing the button programmatically. I have no problem with this, as I made a programmatically-created button class for Paradox. However, I would like to see if a simpler solution is available.

Also, I decided to get my fix of World of Warcrack yet again. My main, Locholovis, is, at time of writing, level 73. It is more than likely that I will never play end-game content when it is actually at the end of the game. As it stands, I will likely have to fight just to do Icecrown Citadel (though I really do want to do that at least once). My tank warrior, Rallam, recently ventured into Outland to get Fel Iron, so that he could make a Fel Iron Rod for Locholovis. His Enchanting moves faster than Rallam's Blacksmithing can keep up. It's pretty annoying.

I had some tentative plans to wait until my birthday to update this, due to the line of "Still Alive" that comes next. However, I figured no one really cared, since no one reads this blog. I quietly append the qualifier "yet" to my previous sentence.

YOU JUST KEEP ON TRYING 'TIL YOU RUN OUT OF CAKE.


'Sup

8/28/10 by lordio
Updated 8/28/10

College starts up for me on Monday. No classes in the AG (Animation/Gamemaking) line this time. Drawing 101, Photoshop, Physics, and English Composition.

Finally had my breakthrough on ASymmetric Script. I was overcomplicating the function concept. After doing some research on x86 assembly language, I figured out how to implement functions in a far simpler manner. What I'm working on now is laying down the necessary code to enable that.

Here's a snippet of sample code I wrote to demonstrate the idea:

FUNCTION "Append"s
.NEW "string"s "holder"s
.GET_MEMBER [aax] "text"s {holder}
.ADD {holder} [abx]
.SET_MEMBER [aax] "text"s {holder}
.POP "holder"s
.RETURN

NEW "text"s "Display"s
PUSHREG
SET [aax] {Display}
SET [abx] "Hello, World!"s
PUSHSTACK
CALL "Append"s
POPSTACK
SET {Display} [aax]
POPREG
DRAW {Sample} {Display}

As always, leading periods are meant to be tabs.

Technically, due to how AS3 operates, the "SET {Display} [aax]" instruction is redundant, since when [aax] was SET to {Display}, the reference to Display was placed in aax. Therefore, when aax was operated upon, Display was modified, as well.

I'm wondering if PUSHSTACK and POPSTACK should be incorporated into CALL, though if I want to emulate existing languages down the line (pipe dream, I know), C and C++ may require them.

Originally, I got the idea from a similar one for JUMP, which would have allowed the program to jump to any previously executed LABEL instruction. I decided this may be too restrictive, and have dropped it for now.

Basically, a program is run in an execution loop. Each instruction returns the location of the next instruction to run to the controlling variable. Usually, this is its own location plus the number of parameters it takes, plus one. The breakthrough was that this was not necessarily the required case. However, for safety reasons, I couldn't allow the program to simply jump wherever it wanted. FUNCTION, then, would store a property in the "functions" section of RAM with a given label, and it would hold the location of the first instruction of the function. The program would then skip to the first instruction after the function and continue execution from there. When a CALL instruction was reached, the program would store the location of the instruction after CALL in [aip] (more on that later), get the value stored in the functions segment for the given string, and return it to the execution loop. When a RETURN instruction was processed, the program would get the value in [aip] and return that to the execution loop, sending the program back to the instruction after the last CALL statement that had executed.

The aspect that enabled the breakthrough, to some extent, was the consideration of registers. After doing some reading up on assembly, I thought registers would be an easy way to pass variables into functions and thus avoid name collisions from one function to another. The problem I'm currently devoting brainpower to is how to allow instructions access to the registers. What I'm thinking is that the linker will create a Variable-like object that holds a reference to the Register object, and a string that indicates which register should be accessed.

However, the code is now in its third rewrite (that is, four different versions now, with the first rewrite being the most functional). I've made many updates to the framework I'm building it on, but refactoring old code to bring it up to date would probably create more headaches I don't need. Probably one of the better ideas was to minimize the visibility of the framework. Now, most variables are private, and most functions are protected. As a specific example, I used to have to build the event listener data arrays (used for event listener switching between different GameScreens) by directly accessing the main array. I had the bright idea of making a function to automate this. What once took up four or five lines now takes one. And for something that likely will need to be done many times for larger games, this is a self-delivered godsend.

One thing I've been trying to do recently is make SwitchBoard extend GameScreen, but sadly, it is not going well. The main difference has to do with AS3's odd lack of support for function overloading. Since GameScreen and SwitchBoard implement CreateEventListener() differently, it seems an impasse has been reached on that front. The reason overloading isn't supported, I think, is that AS3 is dynamically typed, unlike other languages that support function overloading, like Java, C++ and C#, all of which are statically typed.

In non-programming related news, I upgraded to Windows 7 64-bit recently, thanks to a student discount Microsoft offers. I received a copy of the Professional version for $30.

Also, I picked up StarCraft 2 shortly after launch, after having it on reserve from GameStop since Spore, I want to say. I have started favoring the Protoss, and can actually hold my own, far better than I ever could in the original game. Before I upgraded operating systems, SC2 would run so, so very slowly on max settings, but quite well on minimum. Afterward, it runs like a dream even on max settings. Which is awesome, since the graphics are such a leap up from previous titles.

My WoW subscription ran out recently, which was on purpose. I want to wait until school starts up so that I can figure out how busy I'm going to be between schoolwork and my job (note, I still have not fulfilled my resolution for the year). I am doing my best not to let WoW's addictive qualities hook me, while still being a quality dungeon-runner. I actually received praise from someone who claimed to have grouped with me once, saying I was a pretty good tank (this was my secondary, Rallam, a mid-thirties prot warrior). On that note, dear Christ, is there any other dungeon to do in the 30's-range besides Scarlet Monastery: Graveyard? The Dungeon Finder only seems to do that one. IT GETS OLD. I was so happy when I finally got a different one. But then, my tertiary, a low-30s mixed-spec healer priest named Roswena, entered the SMGY doldrums. There's just no winning. On a lark, I made a draenei paladin named Zmorix, and got her up to dungeon levels. It was really weird, my first time in RFC, with no quests to do. And yes, I play female characters in WoW. Oh wow, big surprise, a guy playing a girl in WoW.

In my blood elf's first or second run of RFC, one of my groupmates said a third one of us was wondering if I was really a girl. I had to laugh before dashing his hopes. I am not, nor do I particularly want to be, female. I'd much rather take genital vulnerability than all the biological and social issues women inherit. However, in a game where there is no difference besides your player model, what's the issue?

And I think that if the saying is true, that the less a woman's armor covers, the more protection it affords, then female death knights' starting armor affords basically no protection. The only thing you can see is her face, and that's because a death knight's starting helmet is actually a hood, of sorts. I say "of sorts," because it's apparently plate armor.

Anyway, I'm going to go back to work on one programming project or another, and probably mess up a bunch of times, like any good programmer should.

BUT THERE'S NO SENSE CRYING OVER EVERY MISTAKE


Huh.

6/24/10 by lordio
Updated 6/24/10

Okay, it looks like the ASymmetric script is going to severely hinder my ability to make a FPOS (Flash Pseudo-Operating System) so I think it's time for another rewrite, moving that to the back burner of functionality.

This time, I am going to focus on actually making a functional system, with some command-line programs and a simple GUI.

I intend to develop the ASymmetric Framework using this iteration of the project. As it stands, it uses a custom button and a ButtonData structure (called such as it contains no member functions, not even a constructor, despite AS3 not actually having a way to make structs), used very similarly to HWND and WNDCLASS, for those familiar with Windows programming. There are two versions of the main SwitchBoard class, and a GameScreen.

I also am experimenting with a custom preloader, and the required timeline coding that goes along with that. It feels really wrong to use timeline coding, if I may say so, but it is necessary because all classes must be exported at the same frame, and one would have to write a class, which would wait to be exported until the class export frame.

I guess it's kinda undermining my original plan for it, though as it was, I was really creating an interpreted language, not an operating system. However, I was getting fed up with the problems that functions were introducing, and decided to simplify the scope.

As for the strange person who commented on my previous entry, the only part you got right was that I was a virgin, which is entirely irrelevant. You were sorta close on the part where you said I live in my mother's basement, except that this seems to imply that my parents are divorced, or at the very least live separately. Neither case is true, my parents are paragons of unity, insofar as is humanly possible without being creepy. Furthermore, very little of my time is spent in the basement, as my computer is in my room (not in the basement). I have my gaming consoles down there, but they can only entertain for so long.

Furthermore, should things go well, I will be moving out within the next two months. Not from any strong desire to leave, evidenced by my glowing opinion of my parents (truly deserved praise, as even my friends prefer my parents to their own). There is an element of wanting to help my friends out of their current situation, but I also want to prove to myself that I can live independent of my parents.

I feel bad for you in that you feel the need to disparage me by attributing every undesirable trait you could imagine to me, despite the fact that you do not know who I am. However, I took a lighthearted, albeit sarcastic, approach to your comment, due to the sage advice of Anonymous, "Don't feed the trolls."

EXCEPT THE ONES WHO ARE DEAD.


Thoughts

6/11/10 by lordio

On a whim, I decided to search for details on how one goes about making a genuine operating system. What I have found is interesting, but generally confusing, outdated, or otherwise generally unhelpful.

I have, however, learned more about Intel-x86 Assembly Language as a result, and I am wondering if I should continue using ASymmetric as the scripting language for the Project of the same name, or if I should see if I can implement a slightly tweaked version of assembly. I say tweaked, of course, because ASM has no concept of classes, and AS3 is an object-oriented language.

Also, now that I think of it, ASM requires very low-level access to system components, which would need to be emulated on ASymmetric; this includes things like memory addressing, registers, and bitwise manipulation.

I think I'll stick with ASym for now.

In other news, the implementation of functions via CALL that I decided on is requiring rather extensive changes to the linker. As such, no version of ASym since I began has successfully run. I am starting to wonder if another rewrite is in order. Especially since the LoadingScreen redesign required a kludge of epic proportions.

However, I learned that AS3 natively supports Unicode strings. As such, if a language is included in Unicode, you may name variables using, and store strings containing, those characters in ASym.

In RL land, I'm looking to Barnes and Noble for new employment, as my current job is only paying enough for me to scrape by. Barely so, at that.

And I had one of those moments in life where fate beats you over the head with your own destiny. Some time ago, we received wedding invitations for my half-uncle's wedding. I had no particular interest in attending, and did not respond as requested. Come to find out, my mom took care of it for me. The day of, I made a big show of not wanting to go, but folded anyway.

The ceremony itself was uninteresting, but the reception (I believe is what it's called, it's only the second wedding I've attended that I still remember) was the interesting part.

My great-aunt and I, along with two of my cousins, my cousin's wife (the result of the other wedding I attended), my brother, and my aunt-once-removed (I think that's the title) were seated together. My great aunt and I got to talking, and it turns out she knows a lot about computers. Or, at least, at some point she did, as she admits her memory is failing. She offered to lend me some books on programming that she has, and said she would look around for a Mac OS X install disc she has. You might rightly ask why I would be interested at all in OS X, and I would respond that one must broaden one's horizons. Not all software will be developed strictly for Windows, and certainly not for Linux. Being able to support all three, and possibly even more, will allow things that I make to spread to all users, not just those who use Windows.

However, I will need to find new virtualization software, as VirtualBox (the software I currently use) does not support it. As a host, yes. As a guest, no.

Reader remember, that despite my use of ActionScript in my ASymmetric project, I feel more like a C++ coder at heart, mostly due to C++'s more expansive power. AS3 is a good prototyping language, as you can see results from your code quite quickly, whereas C++ requires much more code, development, and patience, to achieve the same results.

Recently, I decided to reread a large reference book I have regarding C++, to attempt to glean new information from it. As such, I have figured out one, admittedly obscure facet in the form of pointers-to-members. This was harassing me quite thoroughly when I attempted to make a C++ implementation of ASymmetric, possibly because I misunderstood how AS3 uses functions.

Oh well. About time I got to bed. I need to be alert for work tomorrow.

FOR THE GOOD OF ALL OF US.


Wow

5/21/10 by lordio

Pretty productive day.

I verified all of the ASymmetric commands I've implemented so far worked, and debugged a couple.

I think the biggest change today was the improvements on the whitespace recognition. Now, except for before the command's name, which has strict tabbing rules, you can put in spaces and tabs to your heart's content wherever you want. Also, extra newlines are read correctly.

Also had to add a TO_STRING function that... does exactly what you think it would do.

I started on the loading screen redesign, which will take advantage of the new folder layout I sorta stole from WoW's addon folder layout, with the exception that mine needs an XML file in the root program folder to point it to each of the folders that represent complete programs. In each of those, there is also an XML file describing how the different files interact. Another exception is that instead of .lua files, I have .SYSTEM files. Details.

However, that is still under construction.

Eventually, I figure I'll need to implement the filesystem segment of the ROM, but hopefully, perhaps that can wait until after the GUI has at least a simple design.

I also have been brainstorming ways to allow user-defined functions, other than event handler code. The only thing I've come up with so far would only work if the function did not need any arguments. Which isn't particularly useful. Okay for things like C++'s #include, but not an actual function.

Okay, after a little more thought, it's obvious I need sleep. Just wanted to log this day of odd productivity.

WE DO WHAT ME MUST, BECAUSE WE CAN.


Progress

5/8/10 by lordio

I decided to rewrite ASymmetric from scratch, and it has turned out to be a good thing so far. I've gotten it to load script files and run them, so I'm pretty ecstatic about that.

I have had to tweak the syntax a little to get it to this point, and I've had to learn quite a bit about how AS3 works.

It's pretty interesting how it's turned out so far, though. The main command prompt program works correctly, and I'm in the process of adding event scripts, which will require some more work. But all in all, it's actually coming together surprisingly well.

Eventually, I want to also add a GUI, and maybe some other doodads, but ultimately, I want to submit it to Newgrounds, which will entail putting a number of files up on the Internet.

Oh yeah, I also want to add a text/script editor, so that people can play around with the script system on their own. That, however, will take quite a bit of work.

Here's a snippet of code as a sample of what it looks like now. All the names in curly braces are variables, some defined earlier in the program, and all the names only in quotes, and with a letter after the closing quote are literals. Also, leading periods represent tabs. Damn HTML formatting.

..IF_EQUAL {"FirstToken"} "run"s
...ADD {"Loop"} "1"u
...NEW "string"s "SecondToken"s
...GET_MEMBER {"InputTokens"} {"Loop"} {"SecondToken"}
...IF_EXISTS {"SecondToken"}
....RUN {"SecondToken"}
...POP "SecondToken"s

This is in the command prompt's key down event script, where it handles what the user entered. Quite a bit more complex than how I originally wrote it, huh?

At the end of a flow control block, it's recommended that you POP all the variables you declared in that scope, as it will not take care of this for you. This action removes the variable with the given string literal as a name from RAM. You might think it should take the variable it should remove as the parameter, but the way it works out behind the scenes, you need the string literal.

APERTURE SCIENCE.

(Oh yeah, I went to Anime Boston last month, and picked up an Aperture Science shirt, mostly because they were out of everything else that looked interesting that was my size. Not that I like it any less, I was greatly pleased to find out they did have one.)


Update!

2/13/10 by lordio
Updated 2/19/10

So, I think I've pretty much sworn off any chances of ever making flash MOVIES, in preference for flash games. This is because I have little to no recognizable drawing talent past simple geometric objects, such as boxes.

I have another idea that was actually inspired by a game here on NG, in the Gadgets section, called EMU 1.4. Its creator, SamUK2005, has said in his blog that he is working on version 2.0, and it got me curious as to how one might go about making such a thing as a Flash-based Operating System.

So I spent a few days coming up with a programmatic backbone for it, something I have yet to name because I suck at giving things names. The current default code provided to the console to use for interpreting the user's input is as follows:

IF_EQUAL {CMD[1]} {"run"}
.IF_EXISTS {CMD[2]}
..RUN {CMD[2]}
.IF_NOTEXISTS {CMD[2]}
..OUTPUT{"I do not recognize that command."}
IF_EQUAL {CMD[1]} {"shutdown"}
.SHUTDOWN
IF_NOTEQUAL {CMD[1]} {"run"}
.IF_NOTEQUAL {CMD[1]} {"shutdown"}
..OUTPUT {"I do not recognize that command."}

(any periods that begin a line are supposed to be tabs, stupid HTML formatting, grumble, grumble...)

I tried to aim to make something easy for nonprogrammers to understand and perhaps even script with. Anyone have an opinion on my success at this task?

Note that this script uses an existing TextField as the source for the CMD[] references, and the OUTPUT command appends the string given as an argument to a TextArea. These would have to be set by would-be programmers in the game itself.

With any luck, the game itself would be a small download, mostly using cache files to store user-made (and if I'm really ambitious, user-downloaded) content.

One thing I am trying to do is to do it differently from EMU 1.4 / 2.0. For example, I don't want to limit myself to four-letter extensions. I've figured for a while now that OSes (Windows and Linux, from experience) don't really care how many letters are in the extension, though the extension itself does affect what program it tries to use to load the file when you double-click it. Try renaming a .exe to a .jpg and you'll see what I mean. (Don't do this in reverse, I can't guarantee that it will be harmless!)

As an example of the extensions I want to use, a user-made program should have the extension .user. In the console interface, trying to "run" this file will actually execute the instructions contained within. However, if you "run" a document viewer program, and then load the .user file from there, it will display the code without executing it, and allow the user to edit the code.

On the other hand, a .system (might change to .hard or .hardcode, or something like that) can only be run from the console, and any attempt to read it will fail, as it will be hardcoded using ActionScript, not written in my nameless script. If players would like to read the converted code perhaps a .info, .text or something could be included that contains the equivalent program.

Then there's the question of pictures, but that's outside my current scope right now. I want to get the console working reliably, then get some sort of simple program written in my script, to test the "run" command. At later points in the development, I want to develop a simple GUI, and I already have some script written for that (using many not-yet-implemented commands, of course, including a variable declaration "NEW {(type)} {(name)}" which, as may be inferred, creates a new variable of the type (type) and with the name (name), and passes it into RAM; a value assignment "SET {(name)} {(value)}"; an object variable assignment, and so on and so on).

I have big dreams for this one, I just have to work on it.

In other news, I have karate tomorrow, so I will go rest up for that.

IT'S HARD TO OVERSTATE MY SATISFACTION.

(EDIT: As an example of how much in flux ASymmetric is, I realize I probably have to upgrade to CS4 so that I can have access to some file writing functions, since CS3 only allows access to Flash Player 9, which doesn't allow them. Also, OUTPUT will probably either be replaced with a SET_MEMBER derivative, or implemented as a custom function, not a default one. Also, the initial command prompt is being replaced with an ASymmetric script file, and indeed, any nonessential parts of the code are going to be moved out to easily downloaded .SYSTEM script files. This is to keep the part that needs to be uploaded to NG down to a minimum, since the parser will have to grow every time a new function is implemented. Optimistically, users of ASymmetric will create their own functions as they are able, and will use it for things I can't even imagine yet.

However, I have homework to work on for now, so sadly, I can't work on this.

In other news, I've joined the SimGirls revival project, having been a longtime fan. Yes, I'm really trying to load myself down, aren't I?)


So.

1/9/10 by lordio

Turns out I didn't need to make the yearly blog-update rounds early this year, so here I am again. A week late but hey, who's perfect?

Been enjoying my new Sumo Omni.

Been playing World of Warcrack. (Locholovis, lv 39 undead warlock, US - Borean Tundra)

College starts up again on the 19th, and I have to retake two of the three courses I had last semester because I suck balls at punctuality. Not like anyone who checks this regularly would know what I'm talking about (Hi there, Google index bot!)

Been playing Borderlands, is fun. Started playing as the Siren, Lilith, but then realized my play style meshes far better with Mordecai.

In more relevant news, I have a Flash project that I'm trying to work on. And instead of stupidly trying to pursue an arty sort of flash, since I suck at drawing, I elected for a simpler, geometric art design for a game. Based on a series of scripts I wrote back in 7th through 10th grades that, in retrospect, I don't think were that compelling. Maybe this is why I'm not an idea guy. Then again, it may always be a condition I choose to call "Artist's Eye," an affliction that causes artists to so critically inspect their own work that they feel it always sucks, no matter its actual quality.

...But, the scripts, no matter how many times I combined them, still always felt too short.

ANYWAY.

That's that, and that's going slowly. One of the classes I'm retaking is basically an ActionScript 3.0 programming course, despite it being labeled as "Intro to Game Design," and tending to only mention Flash in its description.

Last semester, two of the friends I made were rather obvious frequenters of 4chan's -CENSORED PER RULE ONE OF THE INTERNET-, primarily due to their breaking of Rule 1 of the Internet in the first couple of days. But oh well, what are the consequences of breaking those rules anyway?

Well, I'm going to cut this off here, because I actually need to get to bed so I can get up tomorrow to go to karate. Black Belt Candidate Testing Cycle, Take Two. And... Inaction!

(And yes, every post from now on will end with another line from "Still Alive" in all caps, starting from two posts ago with "THIS WAS A TRIUMPH" and ending whenever I get to that point with a final "STILL ALIVE.")

HUGE SUCCESS!



Oh where, oh where can it be?

I am distracted as FUCK. I need a project to actually capture my attention for more than 10 minutes at a stretch.

It was pretty cool when I was listening to voice auditions for the Castlevania flash. Anyone need a casting director? Or are flashes too small of projects to need that?

Maybe I should make a flash game. I'm a coder at heart, and a game would be easier on my drawing skills than an animation would, because animations are all about... well, animation. Whereas the game has the interactivity behind it that can take your mind off the poor drawing skill. Unless someone would like to animate for me, and I'll do the heavy programming behind it?

If anything I make ends up needing voice actors/actresses, the first few flashes will follow the guidelines I set out a few posts down (no more than ten flash credits, and such). After that, preference will be given to those who have previously provided voices, then to newbies.

I'M MAKING A NOTE HERE.