The Daily Click ::. Forums ::. Daily Click ::. Obfuscation Contest
 

Post Reply  Post Oekaki 
 

Posted By Message

ChrisB

Crazy?

Registered
  16/08/2002
Points
  5457
21st June, 2004 at 07:26:32 -

I've done mine, shall I post a link here?

 
n/a

Shen

Possibly Insane

Registered
  14/05/2002
Points
  3497
21st June, 2004 at 07:37:48 -

Joshtek: What?
Tigs: It would be, as it hasn't been released yet.
Chris: I don't have PRO, so not sure
JD: If you want, it might not get many points though
Kris: broken link
Muggus: It's the events and layout that must be obfuscated, not their output
Chris again: Yes (and a description)

 
gone fishin'

Kris

Possibly Insane

Registered
  17/05/2002
Points
  2017
21st June, 2004 at 07:46:11 -

unbroked

 
"Say you're hanging from a huge cliff at the top of mt. everest and a guy comes along and says he'll save you, and proceeds to throw religious pamphlets at you while simultaniously giving a sermon." - Dustin G

Shen

Possibly Insane

Registered
  14/05/2002
Points
  3497
21st June, 2004 at 08:01:47 -

And can you unlock the gam file plz

 
gone fishin'

Kris

Possibly Insane

Registered
  17/05/2002
Points
  2017
21st June, 2004 at 08:05:33 -

It's not much to look at. Luckily I didnt have to any extra work because programs made in TGF are already obfuscated by anyone's standard.

http://kris.acsv.net/brainfuck_source.zip

 
"Say you're hanging from a huge cliff at the top of mt. everest and a guy comes along and says he'll save you, and proceeds to throw religious pamphlets at you while simultaniously giving a sermon." - Dustin G

ChrisB

Crazy?

Registered
  16/08/2002
Points
  5457
21st June, 2004 at 12:24:00 -

haha

http://sfgames.clicksplat.com/download/obfuscation.cca
because MMF compresses its images far better than it compresses text

Image Edited by the Author.

 
n/a

Kramy



Registered
  08/06/2002
Points
  1888
21st June, 2004 at 14:23:39 -

Does this Jamascript, Simplified Map Loading/Scrolling Method count?

Function Op2Map()
{
// Make Binary
This.myBinary = New Binary();
// FileName
This.FileName = "";
// Map Grid
This.Map[0,0] = 0;

// Map Speed Bits
This.SpeedMap[2012] = 0;
Program.FillArray(This.SpeedMap,0);
// Make Binary
This.TempBin = New Binary(1);
// Copy Data to Array
For(SpeedBitLoop = 2012;SpeedBitLoop > 0;SpeedBitLoop--) This.SpeedMap[SpeedBitLoop] = This.TempBin.GetByte(SpeedBitLoop);
// Clear up Memmory
Delete This.TempBin;

// Map Stats
This.MapWidth = 0;
This.MapHeight = 0;
This.ByteSize = 0;

// Scroll Distance
This.XScroll = 0;
This.YScroll = 0;
// Grid Position
This.GridPosX = 0;
This.GridPosY = 0;
// Grid Offset
This.GridOffsetX = 0;
This.GridOffsetY = 0;

// Define Functions
This.Load = Op2Map_Load;
This.Save = Op2Map_Save;
This.ScrollMap = Map_ScrollMap;
This.Update = Op2Map_Update;
}

Function Op2Map_Load(pLoadPath)
{
// Load File
myBinary.LoadData(pLoadPath);
// Get Byte-Size
ByteSize = myBinary.GetDataSize();

This.Bytes[4] = 0;
Program.FillArray(This.Bytes,0);

// Check if MapFile
For(Op2MapLoop = 4;Op2MapLoop > 0;Op2MapLoop--) This.Bytes[Op2MapLoop] = myBinary.GetByte(Op2MapLoop-1);
If(Bytes[1] == 17 && Bytes[2] == 16 && Bytes[3] == 0 && Bytes[4] == 0)
{
// Get Map-Width
MapWidth = 2;
For(This.Bytes[1] = myBinary.GetByte(-1;This.Bytes[1] > 0;This.Bytes[1]--)
{
MapWidth *= 2;
}

// Get Map-Height
This.Bytes[1] = myBinary.GetByte(12);
// Get Height
If(This.Bytes[1] != 0) MapHeight = This.Bytes[1];
Else MapHeight = 256;

// Fill Map
Map[MapWidth+1,MapHeight+1] = 0;
Program.FillArray(Map,0);

// Write Positions and Blocks
This.XPos = 0;
This.XBlock = 0;
This.YPos = 0;
// Bits of Bytes
This.Bits[4] = 0;
Program.FillArray(This.Bits,0);
This.LoopTimes = MapWidth*MapHeight;
For(Op2MapLoop = 0;Op2MapLoop < LoopTimes;Op2MapLoop++)
{
// Get Map Tile
This.Bytes[1] = myBinary.GetByte(20+Op2MapLoop*4);
This.Bytes[2] = myBinary.GetByte(21+Op2MapLoop*4);

This.Bits[1] = Bytes[1]/16;
This.Bits[2] = Bytes[1]%16;
This.Bits[3] = Bytes[2]/16;
This.Bits[4] = Bytes[2]%16;
// Set Tile Reference
Map[This.XPos,This.YPos] = This.Bits[3]*128+This.Bits[4]*8+This.Bits[1]/2;
// BitMapper.Array[This.Bits[3]*128+This.Bits[4]*8+This.Bits[1]/2] = This.Bits[2];
// Map Decryption
This.XPos++;
If(This.XPos >= This.XBlock+32)
{
This.XPos = This.XBlock;
This.YPos++;
}
If(This.YPos >= MapHeight)
{
This.XBlock += 32;
This.YPos = 0;
This.XPos = This.XBlock;
}
}
// // Save BitMapper
// BitMapper.Save();
Return TRUE;
}
// Not Outpost2 MapFile
Else
{
// Make Message Box
This.myMessage = New MessageBox(Main);
This.myMessage.SetIcon(MessageBox.ICONEXCLAMATION);
// Display Meesage Box
This.myMessage.OkBox("The file can not be read by this editor.","Wrong Format",MessageBox.ICONEXCLAMATION,Main);
// Clear up Message
Delete This.myMessage;
Return FALSE;
}
}

Function Op2Map_Save(pSavePath)
{
// Get End of MapFile
EndMap = New Binary(0);
// Resize Binary
myBinary.ReSizeData(20+MapWidth*MapHeight*4+EndMap.GetDataSize());
// Wipe Binary
For(BinaryWipe = myBinary.GetDataSize();BinaryWipe > 0;BinaryWipe--) myBinary.SetByte(BinaryWipe-1,0);

// Byte Array
This.Bytes[4] = 0;
Program.FillArray(This.Bytes,0);

// Set File ID
myBinary.SetByte(0,17);
myBinary.SetByte(1,16);
myBinary.SetByte(16,2);

// Add Map-Width to Binary
For(This.Bytes[1] = MapWidth;This.Bytes[1] > 1;This.Bytes[1] /= 2) This.Bytes[2]++;
myBinary.SetByte(8,This.Bytes[2]);

// Add Map-Height to Binary
If(MapHeight == 256) myBinary.SetByte(13,1);
Else myBinary.SetByte(12,MapHeight);

// Write Positions and Blocks
This.XPos = 0;
This.XBlock = 0;
This.YPos = 0;

// Bits of Bytes
This.Bits[4] = 0;
Program.FillArray(This.Bits,0);

// Run Loop ### Times
This.LoopTimes = MapWidth*MapHeight;
For(Op2MapLoop = 0;Op2MapLoop < LoopTimes;Op2MapLoop++)
{
// Get Map Tile
This.Bytes[1] = Map[This.XPos,This.YPos]*2;
// Break Into Bits
For(This.Bytes[1] = Map[This.XPos,This.YPos];This.Bytes[1] >= 128;This.Bytes[1] -= 12 This.Bits[3]++;
For(;This.Bytes[1] >= 8;This.Bytes[1] -= This.Bits[4]++;
For(;This.Bytes[1] >= 1;This.Bytes[1] -= 1) This.Bits[1]++;
// Speed Bit
This.Bits[2] = SpeedMap[Map[This.XPos,This.YPos]];
// Main.SetText(This.Bits[2]+" "+TempBin.GetByte(Map[This.XPos,This.YPos]-1));DebugBreak;

// Set Bytes
myBinary.SetByte(20+Op2MapLoop*4,This.Bits[1]*32+This.Bits[2]);
myBinary.SetByte(21+Op2MapLoop*4,This.Bits[3]*16+This.Bits[4]);

// Reset Bits
Program.FillArray(This.Bits,0);

// Map Encryption
This.XPos++;
If(This.XPos >= This.XBlock+32)
{
This.XPos = This.XBlock;
This.YPos++;
}
If(This.YPos >= MapHeight)
{
This.XBlock += 32;
This.YPos = 0;
This.XPos = This.XBlock;
}
}
// Append End of Map File
Success = EndMap.CopyData(myBinary,0,20+This.LoopTimes*4,EndMap.GetDataSize());
// Save Map File
Saved = myBinary.SaveData(pSavePath,TRUE);

// Return Whether Save is Ok
If(Success && Saved) Return TRUE;
Else Return FALSE;

// Clear up Memmory
Delete EndMap;
}

Function Op2Map_Update()
{
// Scroll Distance
XScroll = 0;
YScroll = 0;
// Grid Position
GridPosX = 0;
GridPosY = 0;
// Grid Offset
GridOffsetX = 0;
GridOffsetY = 0;

// X and Y Offsets
Var XCopy = 0;
Var YCopy = 0;
// Clear Sprites
myWindow.ClearSprites();

// Get First 16 Tiles
For(y = 0;y < DGridSizeY+1;y++)
{
For(x = 0;x < DGridSizeX+1;x++)
{
// Copy Tile
myWindow.Copy(myTileSet.Image,x*32,y*32,(myMap.Map[x,y]%6)*32,(myMap.Map[x,y]/6)*32,32,32);
}
}
// Refresh Window
myWindow.Refresh();
}

Function Map_ScrollMap()
{
If(FileName != "")
{
// Scroll Distance
XScroll = 0;
YScroll = 0;
// Scroll Map in Directions
If(LeftPressed) XScroll = 8;
If(RightPressed) XScroll = -8;
If(UpPressed) YScroll = 8;
If(DownPressed) YScroll = -8;

// Add Offset
GridOffsetX -= XScroll;
GridOffsetY -= YScroll;

// Check Offset
If(GridOffsetX >= 32)
{
// Lower Grid Offset
GridOffsetX -= 32;
// Raise Grid Position
GridPosX++;
}
If(GridOffsetX <= -
{
// Raise Grid Offset
GridOffsetX += 32;
// Lower Grid Position
GridPosX--;
}
If(GridOffsetY >= 32)
{
// Lower Grid Offset
GridOffsetY -= 32;
// Raise Grid Position
GridPosY++;
}
If(GridOffsetY <= -
{
// Raise Grid Offset
GridOffsetY += 32;
// Lower Grid Position
GridPosY--;
}

// Check if Within Map Bounds
If(GridPosX <= -1)
{
GridPosX = 0;
GridOffsetX = 0;
// Disable Scrolling
This.XScroll = 0;
}
If(GridPosY <= -1)
{
GridPosY = 0;
GridOffsetY = 0;
// Disable Scrolling
This.YScroll = 0;
}
If(RightPressed)
{
If(GridPosX >= MapWidth-DGridSizeX)
{
If(GridOffsetX >=
{
GridPosX = MapWidth-DGridSizeX;
GridOffsetX = 0;
// Disable Scrolling
This.XScroll = 0;
}
}
}
//GridOffsetX >= 8
If(DownPressed)
{
If(GridPosY >= MapHeight-DGridSizeY)
{
If(GridOffsetY >=
{
GridPosY = MapHeight-DGridSizeY;
GridOffsetY = 0;
// Disable Scrolling
This.YScroll = 0;
}
}
}

// Scroll Window
myWindow.SCROLL(This.XScroll,This.YScroll);
// Copy Tiles to Window
// Horizontal(Left)
If(This.XScroll > 0)
{
For(ScrollMapY = 0;ScrollMapY <= DGridSizeY;ScrollMapY++)
{
This.XCopy = (myMap.Map[GridPosX,GridPosY+ScrollMapY]%6)*32+GridOffsetX;
This.YCopy = (myMap.Map[GridPosX,GridPosY+ScrollMapY]/6)*32;
myWindow.Copy(myTileSet.Image,0,ScrollMapY*32-GridOffsetY,This.XCopy,This.YCopy,This.XScroll,32);
// myWindow.Copy(myTileSet.Tiles[myMap.Grid[GridPosX,GridPosY+ScrollMapY]],0,ScrollMapY*32+GridOffsetY,GridOffsetX,0,8,32);
}
}
// Horizontal(Right)
Else If(This.XScroll < 0)
{
For(ScrollMapY = 0;ScrollMapY <= DGridSizeY;ScrollMapY++)
{
This.XCopy = (myMap.Map[GridPosX+DGridSizeX,GridPosY+ScrollMapY]%6)*32+GridOffsetX;
This.YCopy = (myMap.Map[GridPosX+DGridSizeX,GridPosY+ScrollMapY]/6)*32;
myWindow.Copy(myTileSet.Image,DisplaySizeX,ScrollMapY*32-GridOffsetY,This.XCopy,This.YCopy,-This.XScroll,32);
// myWindow.Copy(myTileSet.Tiles[myMap.Grid[GridPosX+15,GridPosY+ScrollMapY]],472,ScrollMapY*32+GridOffsetY,GridOffsetX,0,8,32);
}
}
// Copy Tiles to Window
// Vertical(Up)
If(This.YScroll > 0)
{
For(ScrollMapX = 0;ScrollMapX <= DGridSizeX;ScrollMapX++)
{
This.XCopy = (myMap.Map[GridPosX+ScrollMapX,GridPosY]%6)*32;
This.YCopy = (myMap.Map[GridPosX+ScrollMapX,GridPosY]/6)*32+GridOffsetY;
myWindow.Copy(myTileSet.Image,ScrollMapX*32-GridOffsetX,0,This.XCopy,This.YCopy,32,This.YScroll);
// myWindow.Copy(myTileSet.Tiles[myMap.Grid[GridPosX+ScrollMapX,GridPosY]],ScrollMapX*32+GridOffsetX,0,0,GridOffsetY,32,;
}
}
// Vertical(Down)
Else If(This.YScroll < 0)
{
For(ScrollMapX = 0;ScrollMapX <= DGridSizeX;ScrollMapX++)
{
This.XCopy = (myMap.Map[GridPosX+ScrollMapX,GridPosY+DGridSizeY]%6)*32;
This.YCopy = (myMap.Map[GridPosX+ScrollMapX,GridPosY+DGridSizeY]/6)*32+GridOffsetY;
myWindow.Copy(myTileSet.Image,(ScrollMapX)*32-GridOffsetX,DisplaySizeY,This.XCopy,This.YCopy,32,-This.YScroll);
// myWindow.Copy(myTileSet.Tiles[myMap.Grid[GridPosX+ScrollMapX,GridPosY+15]],ScrollMapX*32+GridOffsetX,472,0,GridOffsetY,32,;
}
}
// Modify Displayed Coordinates
Main.SetText("Outpost 2 Editor - XPos: "+GridPosX+" YPos: "+GridPosY);
// Update Tile Displayer
If(MouseWin == 1) TileDisplayer.Move((((MouseX+myMap.GridOffsetX)/32)*32-myMap.GridOffsetX),(((MouseY+myMap.GridOffsetY)/32)*32-myMap.GridOffsetY));
}
}

I sure hope so!

Image Edited by the Author.

 
Kramy

Cazra

Crazy?

Registered
  24/07/2002
Points
  4472

Game of the Week WinnerVIP Member
21st June, 2004 at 15:19:13 -

So...we have to make something useful out of some really confusing events?

 
n/a

Shen

Possibly Insane

Registered
  14/05/2002
Points
  3497
21st June, 2004 at 16:09:46 -

Kramy: No. It isn't MMF, and even if it was, your variable names are understandable, there's comments, and the layout is vaguely good.

Snerlin: You have to make really confusing events that do something useful.

 
gone fishin'

Tigerworks

Klik Legend

Registered
  15/01/2002
Points
  3882
21st June, 2004 at 16:26:23 -

I made an obfuscated game called Obfus. It's basically breakout.
10p for whoever can find where the events are*
http://www.gullen.pwp.blueyonder.co.uk/files/obfus.cca

*postage and packaging: £5

 
- Tigerworks

Tigerworks

Klik Legend

Registered
  15/01/2002
Points
  3882
21st June, 2004 at 16:27:38 -

Haha, I just noticed it has loads of 'Bad objects', but it still works.

 
- Tigerworks

ChrisB

Crazy?

Registered
  16/08/2002
Points
  5457
21st June, 2004 at 16:55:58 -

Open up the Project Explorer, it makes it a lot easier to find ;P

 
n/a

Cazra

Crazy?

Registered
  24/07/2002
Points
  4472

Game of the Week WinnerVIP Member
22nd June, 2004 at 08:24:35 -

Useful as in benefitting all of mankind or useful as in neat programming tricks and game engines?

 
n/a

Shen

Possibly Insane

Registered
  14/05/2002
Points
  3497
22nd June, 2004 at 09:59:46 -

Useful as in does something, like playing tetris or finding vampire numbers or something. You can't just put together some events and call it working

 
gone fishin'

Kramy



Registered
  08/06/2002
Points
  1888
22nd June, 2004 at 11:37:57 -

In other words, a really complex way of doing something really easy.

If you want a headstart on that, build your game in knp, then import it to MMF.

Dear Shen:

I was wondering why you won't accept Jamagic code. It seems to me that Jamagic code would be way more confusing and obfuscated than anything the other click products could do.
There's also a plus to Jamascript and Jamagic's engine. It's faster than MMF. The simplified code I listed above is used in a lovely editor that scrolls great at 1280x1024, on a 333mhz. It's closer to allegro than MMF, really.
Anyway, I hope you'll reconsider not letting Jamascript into your obfuscation compo.
-Kramy




 
Kramy
   

Post Reply



 



Advertisement

Worth A Click