Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411490 Posts in 69371 Topics- by 58428 Members - Latest Member: shelton786

April 24, 2024, 11:16:16 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsStone Story RPG - NOW AVAILABLE
Pages: 1 ... 20 21 [22] 23 24 ... 55
Print
Author Topic: Stone Story RPG - NOW AVAILABLE  (Read 219801 times)
standardcombo
Level 8
***


><)))°>


View Profile
« Reply #420 on: November 29, 2015, 12:30:00 PM »

After a week of coding it's great to take a break and do some animation work. This is part of a larger quality pass to get all current content and features in good enough shape to demo.

Redoing the mosquito:

Old

   /)  
_o°(_)  
  /(`-'
  ` ¯
  

Sketches

   |/)
 o.-._
´ /|\ \
  `' `-`
  
   |/)
 o.-._
´ /|\_\
  `'    

   |/)
 o.-._
´ /|\ `.
  `' `-'

   /)
 o.¯,_
´ /|\ \
  `' `-`
  
   /)
 o·.-.
´ /(`-`  
  ` ¯  


Attack

   /)
 o·.-.
´ /(`-`   
  ` ¯   

   /)
  o.-.
  /(`-`   
  ` ¯   

   /)
 o·.-.
/ /(`-`   
  ` ¯   
 
   /)
 o·.-.
´ /(`-`   
  ` ¯   
« Last Edit: November 29, 2015, 12:35:35 PM by standardcombo » Logged

standardcombo
Level 8
***


><)))°>


View Profile
« Reply #421 on: November 29, 2015, 01:26:12 PM »

« Last Edit: June 30, 2018, 11:54:17 PM by standardcombo » Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #422 on: November 29, 2015, 02:08:47 PM »

It make more sense in motion
Those damn mosquito have literally eat my feet.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #423 on: November 30, 2015, 08:38:34 AM »

Quote
     O
    /|\  _ 
-----\7-´ `-

Using a 7 as a knee Hand ClapGrin
Logged
standardcombo
Level 8
***


><)))°>


View Profile
« Reply #424 on: November 30, 2015, 08:41:35 AM »

It's nice when there's just the right symbol for the job Smiley not always the case.
Logged

nathy after dark
Level 8
***


Open Sourceress


View Profile WWW
« Reply #425 on: November 30, 2015, 09:23:27 AM »

I am inexpressibly impressed with your visual style. Just wow. Definitely following.

My game also uses unconventional ASCII visuals, but I think yours has done it better Smiley
Logged

standardcombo
Level 8
***


><)))°>


View Profile
« Reply #426 on: November 30, 2015, 11:51:01 AM »

As I approach conclusion of the demo milestone, the time is right to initiate audio pre-production. Any interested artists please send me a message. There is need for both music and sfx.
Logged

standardcombo
Level 8
***


><)))°>


View Profile
« Reply #427 on: December 02, 2015, 10:04:23 PM »

Doodle for a possible inventory item

  ______
 ´\     \
 '´\  A  \
  '´\_____\
   '(_____(


Within context:

%              ───────── ───────── ─────────   #
%             │         │         │ ______  │  #
%  .─LEFT──.  │    _    │         │´\     \ │  #
%  │       │  │   )o(   │     o   │'´\  A  \│  #
%  │  ┼──  │  │   `-´   │    /    │ '´\_____\  #
%  │       │  │         │         │  '(_____(  #
%  '───────'   ───────── ───────── ─────────   #


Developing an NPC that has also been on my mind

 _A_
 °c°    O
´(.)`  /|\
 d b   / \


       O    o
  o   /|\  ´O`
 ´O`  / \  ´ `
 ´ `

   o
  ´O`
   '`

 _Ô_
 (.)
 d b
« Last Edit: December 02, 2015, 11:17:12 PM by standardcombo » Logged

JobLeonard
Level 10
*****



View Profile
« Reply #428 on: December 03, 2015, 02:41:38 AM »

A WITCH! A WITCH! BURN HER! SHE TURNED ME INTO A NEWT!
Logged
standardcombo
Level 8
***


><)))°>


View Profile
« Reply #429 on: December 04, 2015, 09:33:54 PM »

Last week I sent out a preliminary/draft version of the demo to friends to gather feedback. Nobody had seen the game in over a year of development. This had built up concerns, to me, of fundamental conceptual failure, or simply, the game may be no fun at all.

I'm glad to say responses have been positive and everyone appears to understand the mechanics intuitively without a tutorial or instructions of any kind. A few bugs were uncovered, but nothing serious. The core mechanics are in place and the progression system is funneling players towards the end of the demo as intended. I'm stoked about this milestone, and I look forward to sharing the game with everyone as soon as it's ready!

When someone says your game is super addictive, and that X thing in the game really blew their mind, it's a huge relief. All that work hasn't gone to waste!

These results indicate that, the decision to slow down development was correct. Stone Story is a challenging game for me to design because the gameplay is so different. From a technical point of view this is a simple project. However, so much has gone into figuring out exactly how to stitch the mechanical concepts into a cohesive whole. I say this because in many projects the limitation seems to be engineering, whereas here I had a clear original idea in my mind, and yet, when I tried to put it together it just wasn't working. By getting busy with other projects I've had ample time to mull over design issues, approach problems with a clear perspective and even discover other games that solve some of the same challenges. Given what I have now learned, Stone Story's genre classification is an Incremental Western RPG.
Logged

standardcombo
Level 8
***


><)))°>


View Profile
« Reply #430 on: December 13, 2015, 12:38:44 AM »

The save-file system has been so incredibly useful for fixing bugs that I figured I'd post the code here in case someone is making a game in unity and would like to use it. I will certainly reuse this in my other games. It's not really componentized yet, as you can see, there are some specific references to the rest of the game, but hopefully it's clear where to trim (SaveCurrentState and LoadSaveFile, I'm looking at you).

SlimJson is referenced but not provided. It's similar to a regular Json parser and is easily interchangeable. The customization is to not require quotes on the keys and values, making the data easier to edit by hand.

Data is currently saved out to PlayerPrefs but could be written to actual files with some changes.

SaveFiles.cs

Code:
using UnityEngine;
using System.Collections.Generic;

public class SaveFiles
{
public class SaveFileMeta
{
public string saveId;
public System.DateTime timestamp;
public string displayName;
public string progressData;

public override string ToString ()
{
SlimJson.BeginSerialization();

SlimJson.AddProperty("save_id", saveId);
SlimJson.AddProperty("timestamp", timestamp.ToString());
SlimJson.AddProperty("display_name", displayName);
SlimJson.AddProperty("progress_data", progressData);

return SlimJson.EndSerialization();
}

public void FromString(string sjson)
{
saveId = SlimJson.Parse(sjson, "save_id");
timestamp = System.Convert.ToDateTime(SlimJson.Parse(sjson, "timestamp"));
displayName = SlimJson.Parse(sjson, "display_name");
progressData = SlimJson.Parse(sjson, "progress_data");
}
}

private Dictionary<string, SaveFileMeta> saveFilesDict = new Dictionary<string, SaveFileMeta>();
private List<SaveFileMeta> saveFiles = new List<SaveFileMeta>();

public static SaveFiles singleton
{
get {
if (_singleton == null)
{
_singleton = new SaveFiles();
}
return _singleton;
}
}
private static SaveFiles _singleton;


private SaveFiles()
{
_singleton = this;

int lastId = GetLastSaveId();
for (int i = 0; i <= lastId; i++)
{
SaveFileMeta saveFile = ReadFile(i.ToString());
if (saveFile != null)
{
AddSaveFile(saveFile);
}
}
}

public SaveFileMeta ReadFile(string saveId)
{
string key = "save_file_" + saveId;

if ( !PlayerPrefs.HasKey(key) ) return null;

string strSaveFile = PlayerPrefs.GetString(key);
SaveFileMeta saveFile = new SaveFileMeta();
saveFile.FromString(strSaveFile);

return saveFile;
}

public void WriteFile(SaveFileMeta saveFile)
{
string key = "save_file_" + saveFile.saveId;

string strSaveFile = saveFile.ToString();
PlayerPrefs.SetString(key, strSaveFile);
}

public SaveFileMeta SaveCurrentState(string name = null)
{
// Create game state progress data
SlimJson.BeginSerialization();

SlimJson.AddProperty("progress_flags", ProgressFlags.Serialize());
SlimJson.AddProperty("quest_data", GameStates.Singleton.questController.Serialize());
SlimJson.AddProperty("inventory_data", Inventory.Singleton.Serialize());
SlimJson.AddProperty("ui_state", UISaveState.Serialize());

string progressData = SlimJson.EndSerialization();

// Create the save file
SaveFileMeta saveFile = new SaveFileMeta();

saveFile.saveId = GetNewSaveId().ToString();
saveFile.timestamp = System.DateTime.Now;
saveFile.progressData = progressData;

if (string.IsNullOrEmpty(name))
{
saveFile.displayName = "Untitled " + saveFile.saveId;
}
else {
saveFile.displayName = name;
}

AddSaveFile(saveFile);

WriteFile(saveFile);

return saveFile;
}

private void AddSaveFile(SaveFileMeta saveFile)
{
if (saveFilesDict.ContainsKey(saveFile.saveId))
{
Debug.LogError("Cannot add save file with id " + saveFile.saveId + " because another save file with that id is already in memory. dump: " + saveFile.ToString());
}
else
{
saveFilesDict.Add(saveFile.saveId, saveFile);
saveFiles.Add(saveFile);
}
}

public bool LoadSaveFile(string saveId)
{
if (saveFilesDict.ContainsKey(saveId))
{
SaveFileMeta saveFile = saveFilesDict[saveId];

LoadSaveFile(saveFile);

return true;
}
else {
Debug.LogError("There is no save file with id " + saveId);
}
return false;
}

public void LoadSaveFile(SaveFileMeta saveFile)
{
string sjson = saveFile.progressData;

ProgressFlags.Parse(SlimJson.Parse(sjson, "progress_flags"));
GameStates.Singleton.questController.Parse(SlimJson.Parse(sjson, "quest_data"));
Inventory.Singleton.Parse(SlimJson.Parse(sjson, "inventory_data"));
UISaveState.Parse(SlimJson.Parse(sjson, "ui_state"));
}

public bool HasSaveFileWithId(string saveId)
{
return saveFilesDict.ContainsKey(saveId);
}

public SaveFileMeta GetSaveFileWithId(string saveId)
{
if (saveFilesDict.ContainsKey(saveId))
{
return saveFilesDict[saveId];
}

Debug.LogWarning("GetSaveFileWithId() could not find a Save File with id " + saveId);
return null;
}

public void Delete(string saveId)
{
if (saveFilesDict.ContainsKey(saveId))
{
SaveFileMeta saveFile = saveFilesDict[saveId];

saveFilesDict.Remove(saveId);
saveFiles.Remove(saveFile);

PlayerPrefs.DeleteKey("save_file_" + saveId);

int nId = int.Parse(saveId);
if (nId == GetLastSaveId())
{
do
{
nId--;

string key = "save_file_" + nId;

if (PlayerPrefs.HasKey(key)) break;
}
while (nId >= 0);

PlayerPrefs.SetInt("save_file_last_id", nId);
}

PlayerPrefs.Save();
}
}

public bool LoadSaveFileWithName(string fileName)
{
SaveFileMeta file = GetSaveFileWithName(fileName);
if (file != null)
{
LoadSaveFile(file);
return true;
}

Debug.LogWarning("LoadSaveFileWithName() could not load a Save File with name " + fileName);
return false;
}

public bool HasSaveFileWithName(string fileName)
{
for (int i = 0; i < saveFiles.Count; i++)
{
if (saveFiles[i].displayName == fileName)
{
return true;
}
}
return false;
}

public SaveFileMeta GetSaveFileWithName(string fileName)
{
for (int i = 0; i < saveFiles.Count; i++)
{
if (saveFiles[i].displayName == fileName)
{
return saveFiles[i];
}
}

Debug.LogWarning("GetSaveFileWithName() could not find a Save File with name " + fileName);
return null;
}

public void DeleteSaveFileWithName(string fileName)
{
SaveFileMeta file = GetSaveFileWithName(fileName);
if (file != null)
{
Delete(file.saveId);
}
else {
Debug.LogWarning("DeleteSaveFileWithName() could not delete a Save File with name " + fileName);
}
}

public void MoveUp(SaveFileMeta saveFile)
{
int indexOf = saveFiles.IndexOf(saveFile);
if (indexOf > 0)
{
SaveFileMeta otherFile = saveFiles[indexOf - 1];

saveFiles.Remove(saveFile);
saveFiles.Insert(indexOf - 1, saveFile);

string saveId = saveFile.saveId;
string otherId = otherFile.saveId;

saveFilesDict[saveId] = otherFile;
saveFilesDict[otherId] = saveFile;

saveFile.saveId = otherId;
otherFile.saveId = saveId;

WriteFile(saveFile);
WriteFile(otherFile);
}
}

public void MoveDown(SaveFileMeta saveFile)
{
int indexOf = saveFiles.IndexOf(saveFile);
if (indexOf >= 0 &&
indexOf < saveFiles.Count - 1)
{
SaveFileMeta otherFile = saveFiles[indexOf + 1];

saveFiles.Remove(saveFile);
saveFiles.Insert(indexOf + 1, saveFile);

string saveId = saveFile.saveId;
string otherId = otherFile.saveId;

saveFilesDict[saveId] = otherFile;
saveFilesDict[otherId] = saveFile;

saveFile.saveId = otherId;
otherFile.saveId = saveId;

WriteFile(saveFile);
WriteFile(otherFile);
}
}

public List<SaveFileMeta> GetDirectory()
{
return saveFiles;
}

private int GetNewSaveId()
{
int nId = PlayerPrefs.GetInt("save_file_last_id", -1);
nId++;
PlayerPrefs.SetInt("save_file_last_id", nId);
PlayerPrefs.Save();
return nId;
}

private int GetLastSaveId()
{
return PlayerPrefs.GetInt("save_file_last_id", -1);
}
}


And the GUI for creating, loading and managing save points

Code:
	void OnGUI()
{
List<SaveFiles.SaveFileMeta> saveFiles = SaveFiles.singleton.GetDirectory();

float x;
float y = 20f;
float w;
float h = 20f;

int deleteIndex = -1;

for (int i = 0; i < saveFiles.Count; i++)
{
SaveFiles.SaveFileMeta file = saveFiles[i];

// Name
x = 200f;
w = 150f;
string name = file.displayName;
string newName = GUI.TextField(new Rect(x, y, w, h), name);
if (newName != name)
{
confirmDeleteIndex = -1;

file.displayName = newName;
SaveFiles.singleton.WriteFile(file);
}

// Load
x += w + 10f;
w = 100f;
if (GUI.Button(new Rect(x, y, w, h), "Load"))
{
Debug.Log("[Load] " + file.ToString());

SaveFiles.singleton.LoadSaveFile(file.saveId);
}

// Up / Down arrows to sort
x += w + 10;
w = 20f;
if (GUI.Button(new Rect(x, y, w, h), "▲"))
{
confirmDeleteIndex = -1;

SaveFiles.singleton.MoveUp(file);
}
x += w;
w = 20f;
if (GUI.Button(new Rect(x, y, w, h), "▼"))
{
confirmDeleteIndex = -1;

SaveFiles.singleton.MoveDown(file);
}

// Delete
if (confirmDeleteIndex == i)
{
x += w + 10f;
w = 30f;
if (GUI.Button(new Rect(x, y, w, h), "No"))
{
confirmDeleteIndex = -1;
}
x += w;
w = 30f;
if (GUI.Button(new Rect(x, y, w, h), "Yes"))
{
deleteIndex = i;
confirmDeleteIndex = -1;
}
GUI.Label(new Rect(x + w + 10f, y, 100f, h), "Delete save file?");
}
else
{
x += w + 10f;
w = 20f;
if (GUI.Button(new Rect(x, y, w, h), "x"))
{
confirmDeleteIndex = i;
}
}

y += h + 15f;
}
if (deleteIndex >= 0)
{
SaveFiles.singleton.Delete(saveFiles[deleteIndex].saveId);
}

// Save Current Game State
if (GUI.Button(new Rect(200f, y + 20f, 150f, h), "Save Current Game"))
{
confirmDeleteIndex = -1;

SaveFiles.SaveFileMeta saveFile = SaveFiles.singleton.SaveCurrentState();

Debug.Log("[Save] " + saveFile.ToString());
}
}
private int confirmDeleteIndex = -1;


What a file looks like

Code:
{save_id:4,
timestamp:11/14/2015 20:21:10,
display_name:Caves of Fear,
progress_data:{progress_flags:{flags:[
show_stone,
show_wood,
show_tar,
fireplace_lv1,
rocky_plateau_1,
show_banner,
show_workstation,
show_items,
deadwood_valley_1,
reveal_bronze_gate,
reveal_waterfall
]},
quest_data:{available:[
caustic_caves,
deadwood_valley,
rocky_plateau,
craft_hatchet,
light_fire
],
star_levels:{},
has_played:[
rocky_plateau,
find_shelter,
build_door,
deadwood_valley,
build_workstation,
craft_sword,
craft_shovel,
prospect_cliff,
upgrade_workstation_2,
dig_cave
],
has_completed:[
rocky_plateau,
find_shelter,
build_door,
deadwood_valley,
build_workstation,
craft_sword,
craft_shovel,
prospect_cliff,
upgrade_workstation_2,
dig_cave
]},
inventory_data:{Stone:2,
Wood:3,
Tar:0,
items:[
{item_id:sight_stone,
count:1,
upgrades:{}},
{item_id:stones,
count:1,
upgrades:{}},
{item_id:sword_lv1,
count:1,
upgrades:{upgrade_ids:[
damage,
speed
],
upgrade_data:[
{level:0},
{level:0}
]}},
{item_id:shovel_lv1,
count:1,
upgrades:{upgrade_ids:[
damage
],
upgrade_data:[
{level:0}
]}}
],
right_hand_item_id:stones,
left_hand_item_id:sword_lv1},
ui_state:{screen:QuestScreen,
quest_scroll_y:0,
workstation_scroll_y:0,
items_scroll_y:1}}}


And in case you missed it, here's what the resulting GUI looks like

« Last Edit: June 30, 2018, 11:54:36 PM by standardcombo » Logged

Zorg
Level 9
****



View Profile
« Reply #431 on: December 13, 2015, 01:22:58 AM »

I guess its wip, but... you can't load a file which has not been saved before, so you could replace the load button with the save button in the first row:

Logged
standardcombo
Level 8
***


><)))°>


View Profile
« Reply #432 on: December 13, 2015, 11:15:05 AM »

Not sure what you mean. When you hit Save, it saves whatever the current game state is. Then you can rename if desired. I thought of putting Save in the first row but in the end it doesn't matter because 1) it's non-user-facing and 2) either way it's not following UX conventions. If this were user-facing I'd do it completely different, but then it would take more time.
Logged

standardcombo
Level 8
***


><)))°>


View Profile
« Reply #433 on: December 19, 2015, 08:28:52 PM »

Working on the introduction to the Undead Catacombs, the only missing level from the demo

  ____
 / , |
|`-´ |
|  ,´|
|] `-|
|,-. |
|\_´ |


 \______/
 [______]
  |\/\/|
  (`-._)
  (`-._)
  (`-._)
  (`-._)
  (`-._)
 /`-._ ¯\
[________]


.
))       \____/
|`-.___  {____}     \
|___ ._)  │  │   \__|
|___ `·   │  │   {__|
| | |`·.`.'  │    │ |
| | | | `.|] │    │ |
| | | | | |  │    │ |
| | | | | |]_│    │ |
|X|X|X|X|X|___\   │ |
                  │_|
                 /__\_\
                     \
                      \
                       \
                       
                     
                 ___
               .´.´ `. 
               | |    \   
               | |     | 
               | |     | 
               | |     | 
            `. | |     |
              `|_|     |
                `.     |
                  `.   |
                    `. |
                      `|
                        `.
                     
       .:.:.:.   ___
      /_│_│_│_\.´.´ `. 
      │ │ │ │ │| |    \   
      │ │ │ │ │] |     | 
      []│ │ │ │| |     | 
      │ │ │ │ │| |     | 
      │ │ │ │ │] |     |
      │X│X│X│X│|_|     |
                       |
                       |
                       |
                       |
                        `. 
                           
    ..   ·:.:.   ___
     ´\.- |_│_\.´.´ `. 
    _  \  │ │ │| |    \   
   ´ \  │ │ │ │] |     | 
      []│ │ │ │| |     | 
      │ │ │ │ │] |     |
      │X│X│X│X│|_|     |
                       |
                       |
                       |
                       |
                        `. 
                       
              .--.
             (o,o_)
              `"'
                   
                   
    .,   ·:.:.:.   ___     
     -\.- |_│_│_\.´.´ `.     
    _  \  │ │ │ │| |    \   [______]
   ´ \  \ │ │ │ │] |     |`. (`-._)
      | │ │ \ │ │| |     | |`(`-._)
      │ │ │ │ │ │] |     |`. (`-._)
      │X│X│X│X│X│|_|     |  `(`-._)
                         |`. (`-._)
                         | |`(`-._)
                         |`. (`-._)
                         |  `(`-._)
                          `. (`-._)
                            /`·..·´\
                            `·.__.·´
                             
 .,   ·:.:.:.
  -\.- |_│_│_\
 _  \  │ │ │ │
´ \  \ │ │ │ │
   | │ │ \ │ │
   │ │ │ │ │ │
   │X│X│X│X│X│
   
   
  `. |`.  `. |`.  `. |`.  `. |`.  `. |`.  `. |
`. |`.  `. |`.  `. |`.  `. |`.  `. |`.  `. |`.
 |`.  `. |`.  `. |`.  `. |`.  `. |`.  `. |`. 
`.  `. |`.  `. |`.  `. |`.  `. |`.  `. |`.  `.
  `. |`.  `. |`.  `. |`.  `. |`.  `. |`.  `. |
`. |`.  `. |`.  `. |`.  `. |`.  `. |`.  `. |`.
 |`.  `. |`.  `. |`.  `. |`.  `. |`.  `. |`. 
`.  `. |`.  `. |`.  `. |`.  `. |`.  `. |`.  `.
  `. |`.  `. |`.  \_.-`.  `. |`.  `. |`.  `. |
    .,  `·:.:.:.`´\_!_ /`. |`.  `. |`.  `. |`.
     -\.- |_│_│_\.´.´ `./ \.  `. |`.  `. |`. 
    _  \  │ │ │ │| |    \,´ `(`._)  `. |`.  `.
   ´ \  \ │ │ │ │] |     |`. (`._)`. |`.  `. |
      | │ │ \ │ │| |     | |`(`._) |`.  `. |`.
      │ │ │ │ │ │] |     |`. (`._)`.  `. |`. 
      │X│X│X│X│X│|_|     |  `(`._)  `. |`.  `.
                         |`. (`._)`. |`.  `. |
                         | |`(`._) |`.  `. |`.
                         |`. (`._)`.  `. |`. 
                         |  `(`._)  `. |`.  `.
                          `. (`._)`. |`.  `. |
                            `(`._) |`.  `. |`.
                            /`·.·:`.  `. |`. 
                            `.___.  `. |`.  `.
                                  `. |`.  `. |
                                    `.  `. |`.
Logged

standardcombo
Level 8
***


><)))°>


View Profile
« Reply #434 on: December 19, 2015, 09:12:48 PM »


  `. |`.  _____|  `. |`.  `. |`.  `. |`.  `. |
`. |`.  `|`.    `. |`.  `. |`.  `. |`.  `. |`.
 |`.  `.  `.`.    `.  `. |`.  `. |`.  `. |`. 
`.  `. |`.(``.`.    `. |`.  `. |`.  `. |`.  `.
  `. |`.  (`._`.`.    `.  `. |`.  `. |`.  `. |
`. |`.  `.(`._) `.`.    `. |`.  `. |`.  `. |`.
 |`.  `.  (`._). |`.`.    `.  `. |`.  `. |`. 
`.  `. |`.(`._)|`.  `.`.    `. |`.  `. |`.  `.
  `. |`.  (`._).  \_.-`.`.    `.  `. |`.  `. |
    .,  `·:.:.:.`´\_!_ /`.`.    `. |`.  `. |`.
     -\.- |_│_│_\.´.´ `./ \.`.____`.  `. |`. 
    _  \  │ │ │ │| |    \,´ `|_____|`. |`.  `.
   ´ \  \ │ │ │ │] |     |`. (`._)`. |`.  `. |
      | │ │ \ │ │| |     | |`(`._) |`.  `. |`.
      │ │ │ │ │ │] |     |`. (`._)`.  `. |`. 
      │X│X│X│X│X│|_|     |  `(`._)  `. |`.  `.
                         |`. (`._)`. |`.  `. |
                         | |`(`._) |`.  `. |`.
                         |`. (`._)`.  `. |`. 
                         |  `(`._)  `. |`.  `.
                          `. (`._)`. |`.  `. |
                            `(`._) |`.  `. |`.
                            /`·.·:`.  `. |`. 
                            `.___.  `. |`.  `.
                                  `. |`.  `. |
                                    `.  `. |`.
       .--.
      (o,o_)
       `"'
       
   ,)
 (,´   
 \__/
  ||,
  ][´
  ||
  `´
 
  `. |`.  _____|  `. |`.  `. |`.  `. |`.  `. |
`. |`. ,)|`.  ,--. |`.  `. |`.  `. |`.  `. |`.
 |`.  (,´ `.`(o,o_).  `. |`.  `. |`.  `. |`. 
`.  `.\__/(``.`"    `. |`.  `. |`.  `. |`.  `.
  `. |`|| (`._`.`.  /, _¯\`. |`.  `. |`.  `. |
`. |`. ][.(`._) `.`.)o o(/ |`.  `. |`.  `. |`.
 |`.  `|| (`._). |`.`,",´ `.  `. |`.  `. |`. 
`.  `. `´.(`._)|`.  `.`.    `.  `.  `. |`.  `.
  `. |`.  (`._).  \-.-`.`.  ,--.  `. |`.  `. |
    `. `·:.:.:. \´\_!_ /`.`(o,o_). |`.  `. |`.
   `-\.- |_│_│_\ ;´.´ `./ \.`"____`.  `. |`. 
   _  \  │ │ │ │ | |    \,´ `|_____|`. |`.  `.
  ´ \  \ │ │ │ │]| |     |`. (`._)`. |`.  `. |
     | │ │ \ │ │ | |     | |`(`._)  ,)  `. |`.
     │ │ │ │ │ │]| |     |`. (`._)(,´ `. |`. 
     │X│X│X│X│X│`|_|     |  `(`._)\__/ |`.  `.
                    O    |`. (`._)`||,`.  `. |
                   /|\   | |`(`._) ][´  `. |`.
                   / \   |`. (`._)`|| `. |`. 
                         |  `(`._) `´. |`.  `.
                          `. (`._)`. |`.  `. |
                            `(`._) |`.  `. |`.
                            /`·.·:`.  `. |`. 
                            `.___.  `. |`.  `.
                                  `. |`.  `. |
                                    `.  `. |`.
« Last Edit: December 19, 2015, 09:18:34 PM by standardcombo » Logged

standardcombo
Level 8
***


><)))°>


View Profile
« Reply #435 on: December 20, 2015, 12:18:04 AM »

« Last Edit: June 30, 2018, 11:54:51 PM by standardcombo » Logged

Jalapenosbud
Level 1
*


View Profile
« Reply #436 on: December 20, 2015, 12:30:43 AM »

this is awesome dude
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #437 on: December 20, 2015, 02:20:26 PM »

I had this crazy idea of normal map ascii : Epileptic :
Logged

standardcombo
Level 8
***


><)))°>


View Profile
« Reply #438 on: December 20, 2015, 02:37:22 PM »

It's not that crazy. This game actually exists in 3d space although all characters are flat, but they don't have to be. Just needs better tools.

Stone Story II ?
Logged

gimymblert
Level 10
*****


The archivest master, leader of all documents


View Profile
« Reply #439 on: December 20, 2015, 02:48:40 PM »

 Crazy
Logged

Pages: 1 ... 20 21 [22] 23 24 ... 55
Print
Jump to:  

Theme orange-lt created by panic