Zdzisław Beksiński – Surreal Art

“I wish to paint in such a manner as if I were photographing dreams.”

Zdzisław Beksiński was one of the most visionary surrealists in the 20th century. He lived in Europe during World War II and the Holocaust, which must have inspired many of his paintings.

Beksiński’s last years were not the best. In the late 1990′s his wife died, and the following year his son committed suicide, which he was never able to fully accept. Several years later he was stabbed to death in his flat in Warsaw. By the time these hardships occurred, he was mostly involved in graphic art.

There is another artist with a very similar style by the name of Dariusz Zawadzki. Some have compared Beksiński to H.R. Giger, which I can see (especially the bones), however Giger’s work is more in the bio-mechanical realm.

He was not interested in finding interpretations for his paintings. He rarely gave them titles, and admitted that even he did not know the true meaning of his work. He always listened to classical music while painting.

To view the gallery with 40+ paintings, go here: http://novelthought.org/zdzislaw-beksinski-gallery/

Dark Star and Phenomenology

There’s an old, cult classic sci-fi film called Dark Star, written by John Carpenter and Dan O’Bannon (who later wrote Alien). For a $60,000 student film in 1974, it’s very impressive. This is probably where John Carpenter became accustomed to composing his own music for the movies he directed. And O’Bannon acted as one of the main characters, due to the lack of actors.

This is the only sci-fi film I’ve seen that suggests space travel could be miserable and boring. Just like working a horrible day job, they are sick of each other and being stuck on the ship. They get their satisfaction by blowing up unstable planets when they can. One of the crew members has gone a bit looney and sits by himself in a glass chamber, viewing space.

The film has its moments, that’s for sure. They have brought an alien on board, which must be fed and taken care of. The alien is actually a painted beach ball, with some rubber feet.

The ferocious beast that later inspired the Alien franchise.

The squeaks and remarks of the alien are great as O’Bannon’s character tries to capture it after its escape. Their sense of humor is unique. There are a few good laughs to be had from Dark Star.

Near the end of the film, there is a memorable philosophical conversation between one of the ship pilots and a bomb. The bomb is controlled by an AI, which is stubborn about disarming itself, even though it’s stuck in the bomb bay. The bomb is intended to destroy an unstable planet, however there is a malfunction and it must be persuaded not to detonate.

So the lieutenant goes out on a space walk to have a little chat with the bomb. He starts provoking the bomb to consider if its perception of reality is reliable. There are several phenomenology related discussions with the bomb, and it is persuaded to think more about its existence. Later the bomb reaches an epiphany and makes a decision. Below is the scene with the bomb discussion. However, I’d recommend watching the entire movie first; it can be found on YouTube.

It’s interesting how some of the terms used, such as “computing center,” are interchangeable with human related terms, such as “brain.” I appreciate how this film puts a satirical twist on the existential crisis-inducing aspect of questioning reality.

The bomb conversation brings up the issue of objective reality. The world as you see it could only exist inside your mind. Linking together experiences, people, and places does not provide any evidence for an objective reality. Think of how difficult it is to differentiate between dreams and “reality” sometimes. I’ve had dreams in which I’ve lived an entirely different life, full of history, and I’m unable to realize it’s a dream while I’m in it. Personally, I believe there is an objective reality that we have here, but it’s just one form of being.

So how can you be sure that you exist? There is no way to tell that everything happening is real and objective. The argument is irrefutable. It’s a fun thought experiment, and I advise participating in small doses.

Although phenomenology is not the main subject of the film, it’s what the film is well-known for. Anyway, I’d recommend Dark Star to any sci-fi fan with an open-minded sense of humor.

Saving and Loading Games With C/C++

I realize I haven’t written anything about programming yet, so I thought I’d break it in with a simple post about saving a game state and loading it with C/C++. I’ll cover the basic functions needed, and you can build on that.

It doesn’t matter if you are using C or C++, they’ll both work just the same. For this example, I’ll write in C++ style. So you should have a basic understanding of game programming methodology and C++.

Here’s an example game class I’ll be using:

class Game{
	public:
        enum{  // save/load function return values
            SUCCESS = 0,
            OPEN_FAILED,
            INVALID_MAGIC
        };

		Game();
		~Game();

		int load(const char* file);
		int save(const char* file);

	protected:
		int m_lives;
        int m_importantThings[10][10];
		int m_level;
		int m_strength;
};

Then you’ll want to set up your file save structure:


#define MAGIC_SIZE 12
#define MAGIC_STR  "(=_MAGIC_=)"

typedef struct{
	char magic[MAGIC_SIZE]; // magic header

	int lives; // game data
    int importantThings[10][10];
	int level;
	int strength;
} GAMESAVE, *PGAMESAVE;

This structure is the binary data you’ll be writing to and loading from the game file. The “magic” string represents the file header, and provides a method to check if the game file is valid, by comparing the strings when loading the file, which I’ll cover shortly.

Now you’ll want to create a function to save the game to a file (you might need to add the proper headers, look up the function names on Google to find the include file):

int Game::save(const char* file)
{
	FILE* fp = 0;
	GAMESAVE save;

	memset(&save, 0, sizeof(save)); 	// fill struct with zeroes

	strcpy(save.magic, MAGIC_STR); 		// set the magic string for later
	memcpy(save.importantThings, m_importantThings, sizeof(m_importantThings)); // copy the important things
	save.lives = m_lives;				// copy the rest of the data
	save.level = m_level;
	save.strength = m_strength;

	if((fp = fopen(file, "wb")) != NULL){ // open save file in write-binary mode
		fwrite(&save, sizeof(save), 1, fp); // write the game save data
		fclose(fp);
		return SUCCESS;
	}

	return OPEN_FAILED;
}

And now for the slightly more complex loading function:

int Game::load(const char* file)
{
	FILE* fp = 0;
	GAMESAVE save;

	memset(&save, 0, sizeof(save));

	if((fp = fopen(file, "rb")) == NULL){ // open file in read-binary mode
		return OPEN_FAILED;
	}

	fread(&save, sizeof(save), 1, fp); // load the game save data
	fclose(fp);

	/* now test if the file's header is correct */
	if(strncmp(save.magic, MAGIC_STR, MAGIC_SIZE) != 0){
		return INVALID_MAGIC;
	}

	/* we're good, load the game data */
	memcpy(m_importantThings, save.importantThings, sizeof(save.importantThings));
	m_lives = save.lives;
	m_level = save.level;
	m_strength = save.strength;

	return SUCCESS;
}

And here’s an example of using these new functions (game is assumed to be global):

int someFunction(void){
	char file[256] = {0};
	int x = -1;

	/* save the file first */

	// get file save location from user...
        // etc...

	if(game.save(file) == Game::SUCCESS){
		printf("File saved!\n");
	}
	else{
		printf("File not saved :(\n");
	}

	/* now load the file */
	switch((x = game.load(file))){
		case Game::SUCCESS:
			printf("There was great success.\n");
			break;

		case Game::OPEN_FAILED:
			printf("Failed to open the file :(\n");
			break;

		case Game::INVALID_MAGIC:
			printf("Your magic is invalid.\n");
			break;

		default:
			break;
	}

	return 0;
}

You’ll want to create a special extension for your file, so it won’t be confused with other file types. If you want to automate the save function, so that it writes to a new save file each time, simply search the directory for files that have your custom extension, find the highest number, and increment the number.

If done correctly, when you try to view the saved file in notepad, it should look something like this:

I’ll write a tutorial later on directory searching in Windows for those that want to learn.