Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Josh @ Dreamland

Proposals / Re: Custom Widgets
« on: May 05, 2010, 12:13:04 pm »
Ism: I mean, can you create a bitmap containing a rendered font glyph? GM stores an array of bitmaps for each glyph. Fortunately, they are monochrome, and maybe monotone. I'm not sure how many colors they actually require; score_under, do you know? Also, I don't want platforms hardcoded in one file.

Proposals / Custom Widgets
« on: May 04, 2010, 09:26:23 pm »
If ENIGMA had its own, draw_*()-drawn widgets library, made of primitives, it would, for one thing, make some users' lives easier (Remember Roach's GMWidgets? I think that was his. It's been a while). More importantly, it would make build mode cross platform automatically. For this to work, ENIGMA requires a well-working draw_text(). Ism and I, as usual, need to talk about that...

I guess I'd write the library, though it's not a difficult task, really. Just tedious-ish, especially if it is to support any platform-specific features... I guess widgets_get_selected_text() could return last selected in-window text on Windows, and do what it's told on Linux, and that's the main difference between the two platforms. That and scroll bars.

Ism, when you see this; does Java have the ability to render a glyph to an image? Otherwise, I need to include some cross-platform glyph renderer in the compiler...

Proposals / On Settings and Dependencies
« on: May 04, 2010, 09:22:18 pm »
It may behoove me to write a makefile generator based off of my C parser; specifically, its preprocessor (rather, the segment of code that preprocesses, since a distinct pass is not made for the matter). The modification would be relatively simple; it seems I can just add anything #include""ed (note the "", not <>)  to the list of dependencies for a file. Automake is another option. A uniform or empty dependency list is a third and final ugly option that would yield pain.
Either way, the proposal is this: Along with a config file to identify the system, each system should have a settings file outlined either in the config file or a settingsOutline file. Basically, the former will read

Code: [Select]

And the latter will contain

Code: [Select]
option "Require VBO Extension" defines "SETTING_PRIMITIVES_REQUIRE_VBO" as boolean defaults to "false"
option "Require FBO Extension" defines "SETTING_PRIMITIVES_REQUIRE_FBO" as boolean defaults to "false"

From that, LGM will generate a checkbox (boolean) with the English string above. Other options than boolean can be discussed later; XML would be a pain but is a consideration for combo boxes, etc.
From the same, ENIGMA will check a settings header, settings.h, to make sure it matches up (yes, perfectly; it should be entirely generated) with the data from LGM. If it doesn't, it will be opened for write and reconstructed.

The reason is quite simple. Make will not rebuild a file as long as nothing it includes has been modified. This means that ENIGMA shouldn't touch the settings file in write mode if it doesn't intend to change something in particular, or stuff will rebuild all the time (This is not what is causing the current problems, as this idea has just been thought up).

Ism's is basically the only opinion that counts here. This means work for both of us, but will greatly increase extensibility and avoid hard-coded options. Problem for Ism is calculated the size of the window and placement of the options; a simple process in Win32 may not be easy with Java.


Announcements / Re: Finals
« on: May 04, 2010, 09:05:33 pm »
As usual I'm feeling slightly more religious after today's turn of events.

I'm glad Ism fixed that problem.

Tomorrow holds calculus.

Thursday holds the worst test of all... Political science... God have mercy on my soul, &c.

Announcements / Re: Finals
« on: May 04, 2010, 09:26:02 am »
Hah, no one ever tells me anything. But yes, I won't be doing that. I'm about to proof the paper with my partner and possibly rehearse something.

I never explicitly told you to do so, as the thought never occurred to me until its anti-consequences made me want to rip out my hair. Rev 203 should work for people who do not need to include stdio explicitly to use it. If not, then yes, wait or revert. Or add #include <stdio.h> and if that doesn't fix it, I give up for now.

I hopped buildings, but am still far from home...

Announcements / Finals
« on: May 04, 2010, 07:59:26 am »
Yes, yes, I know ENIGMA has problems. Stop checking out before Ism posts a compatible revision number (which you can look up at any time on the IRC... Maybe I can have a2h keep one here and IsmBot can check it as well).

ANYWAY. I am in the belly of finals week. Right now, I can't whimsically fix things. Ism recommended I update to Lucid. To do that, I'd have to go through Karmic. Well, now my box won't boot. So even when finals week is over (Thursday I either sink or float), I can't immediately fix ENIGMA as my box is dead. (It can heal while I work from a lap top, though).

- Hey, how are finals going so far?
Great, thanks for asking! (No, no one asked.)
So far, I am done with Computer Architecture. My professor may be the kindest on the planet, I'm thinking. I finished off with a 101% or so, which may be enough to help counter the 10% I'm about to be awarded in Political Science by a professor I can only describe as a typical politician. There's a sort of metaphysical wind blowing between the two buildings housing the aforementioned professors. If that sentence doesn't make sense to you, go study how wind and convection work and get back to me later.

And speaking of metaphysical whatever, today (in seven hours as of the posting of this message) I give a lecture (for 5-15 minutes) on Xenu. In front of 300 people or more. If I don't edit this by 9:00 that night, assume that I have either been shot on the stage or suffered some sort of conniption.

I also turn in a fifteen page paper at that time, which I will spend the rest of the meantime proofing.


I will see you all ASAP.
And no, I can't commit changes from here.

The presentation went great, except that, as stated below, I was shot and killed. Shame, really. I may continue to work on ENIGMA as a ghost if conditions permit.

Issues Help Desk / Re: STUPID IRC
« on: April 26, 2010, 10:32:56 pm »
*breaks everything*

Issues Help Desk / Re: STUPID IRC
« on: April 26, 2010, 10:25:30 pm »
This the fuck.
The usual.
Why not?
All I did was ban and kick you after you said the forums were dying and you left.
I did as soon as you were done being banned and kicked.

Announcements / Re: Remember when I said...
« on: April 26, 2010, 07:06:54 am »
That's what I like to hear.
I'll look into specifying dependencies... as soon as possible.

Proposals / Adding systems
« on: April 25, 2010, 10:54:18 pm »
I'm too tired to elaborate on this now, and am posting here mostly for Ism.

Key directories for swappable systems and otherwise (All under ENIGMAsystem/SHELL/):
/Universal_System/ Contains things that should work on any OS (Cross platform and C standard wrappers and functions).
/Platforms/ Contains directories for each available windowing/OS-dependent system. (windows [TO BE RENAMED to win32], xlib, [SOON?]cocoa, [SOON]wii)
/Graphics_Systems/ Contains directories for any available drawing systems. (OpenGL,[SOME DAY]DirectX,[SOON]GX)

Something to fix: the cases don't match between Platforms and Graphics_Systems, which is annoying-ish.

Anyway, of the system-specific folders, I have it currently set up so that each has a makefile. Right now, all the makefiles are the same. That will soon change.

From the scope of each directory, ENIGMA of course calls the makefile. LGM does not need to even acknowledge said file's existence. What LGM and ENIGMA will both need, however, is a settings/config file. For now, the file has not been named; I was considering "info" for the name. This file will be a simple one, similar to LGM's *.properties files (perhaps "properties" is a good name for this file). It reads something like this:
Code: [Select]
Description="An open source graphics library."
Platforms="windows, xlib"

Notice that Link- is always proceeded by the name of an element in `Platforms', each of which is the same as a directory name.

If need be, the Platforms property can apply as a special case to folders under Platforms/ (for cases such as, just for example, using xlib in both Linux and in Mac OS X). This will probably be unnecessary, but consider that part of the purpose of the file until such is actually needed. What may be needed is a special variable for those called `Compiler', so developers can specify (especially in cases such as the Wii) that a different version of make will need to be called. This can get really messy, really fast (such as when conflicting binaries are specified by the Path variable; one for MinGW because it make ENIGMA easy, and one for Devkit's GCC, because it makes calling that easy), and so will need proper attention down the road.

Until then, this is the plan.

Announcements / Remember when I said...
« on: April 25, 2010, 10:34:02 pm »
...That I knew enough Make? Well, I Lied.

I've committed revision 200, which contains some very simple makefiles that do exactly what I wanted. Except one little tidbit: I forgot that I'd need to outline for Make what every file depends upon, or it would rebuild the entire project. Every. Single. Time. As in, exactly what I spent hours and hours avoiding happening.

So yes, if you were to check out ENIGMA right now and click Run, LGM wouldn't display a damn thing, but (at least on Linux; haven't tested on Windows) it will build and run your game. I have not added sprites to the output; making it compile fast gets precedence.

However, above that precedent comes my homework. This is going to be the busiest two weeks of my life, and I need to account for that. I graduate from high school soon, but am taking all college classes. Most of which are upper-level. And I have exams coming up very quickly. One is, as I've mentioned, a fifteen page report on Scientology. What I may have neglected to mention is that I will be highlighting this report in front of an estimated three hundred people. This is a new sort of WHAT THE... BUT HOW... RATHER, WHY? for me, as I'm sure you all can understand... Public speaking is easy when you know exactly what the hell it is you are talking about. I'm going to be up there explaining space planes and aliens and frozen souls to the mindless. ...Computer science final will be a take-home cakewalk. Political science final, on the other hand, will be my fourth grade in that class, and will make me suffer. I haven't exactly done superbly on any of that man's four other assignments, either. ...Calculus would be great if it wasn't an AP high school course. I'm stuck, with one other, among a group of people that can't grasp the AB material, and I'll be taking the BC. Bother, a couple questions of the AB are harder than the BC anyway. My utter success on the BC portion hinges on my memorization of some dozen different series. Not exactly fun... And I've got a huge number of memory quizzes coming up, for which I've not studied...
Anyway; point is, I've got a lot on my plate for these next couple weeks, and will probably put ENIGMA on the back burner until I'm done. It won't be long.

So, to do: Optimize makefiles, replace var and instance system, fix up syntax check more, reinstall sprite system, move some code up a directory, replace timer on Linux, carry out some in-code to-dos.

Less immediate to-do: Modify sprite system into parallel background system, add tiles to room, add cross platform widget functions to enable build mode.
Further to-dos: Comment generated code for easy error indexing.
Distant to-dos: Hook up GDB for some really neat debugger kicks.

Until then, ciao.

Announcements / Re: WHAT IS THIS I DON'T EVEN
« on: April 25, 2010, 10:21:05 pm »
Luda lost the entirety of Colligma in a hard drive crash. He has someone trying to recover it. ...Think I better get his code versioned so things like this don't keep happening. <_<

Announcements / WHAT IS THIS I DON'T EVEN
« on: April 25, 2010, 12:06:21 pm »
Most of the progress reports have been going on at ENIGMA's composed-due-to-popular-opinion IRC channel on Freenode, #enigma-dev.
However, I figure it's a good idea to post what's been happening here as well.

Several bugs between platforms have been found, isolated, and corrected. ENIGMA now operates correctly on every Windows version and Linux distro on which it has been tested thus far. That includes mostly Ubuntu 9.xx and Windows XP, Vista, and 7. I could not test on 98 due to Code::Blocks not starting and me being too lazy to do anything about that. :P

Further, the fixed bugs include the following:
- Some string fixes (waiting for Ism's confirmation)
- x() being randomly defined as a function due to ## mishandling
- Freezing on XP if sprite load fails (which it always does for now)
- Variable overlap on systems where sizeof(size_t) != sizeof(unsigned)
- Failure to load function names for syntax check due to any of the above
- Many smaller things that just needed dealt with

Things that still need to be fixed:
- Minuscule memory leak during C parsing: I will run Valgrind when this is the most pressing of my concerns

Things that need done in general:
- Makeflies need written: I've learned enough make (it was surprisingly easy) and will do this next
- Sprites need added to exe after build: This couldn't be done without the makefile
- Pieces of R3 need salvaged now that the rest seems stable; these include script "linking" and build mode.
- Some pieces of individual graphics systems and window systems need moved to a parent file in ../ to simplify further implementation
- There are at least ten "TODO:" notes lying around the project.

I'm content to leave ENIGMA in the SVN for a while longer, but can probably put out the zip file for those who for some reason do not like operating on a direct line to updates.
Perhaps Ism can implement something to call a quick makefile in CompilerSource in order to allow for easy distribution... I will discuss that with her shortly.

I believe I did. Though it was a little after my time...

"I just clicked the Buid and Run button, Enigma compiled and LGM run."
I "..."'d for a moment before I remembered I set it up to do that. XD

"Found it, the bastard was named ENIGMAengine for some reasons. It works, but it's not fun.

The dot doesn't move until I mouse over it, unlike the gm clown which kept movin."
Didn't realize that constituted fun... :P