1. Post #481
    Gold Member
    synthiac's Avatar
    June 2007
    1,090 Posts


    inspecten dem source demo files
    Reply With Quote Edit / Delete Windows 7 United States Show Events Programming King Programming King x 3Informative Informative x 1 (list)

  2. Post #482
    Gold Member
    VoiDeD's Avatar
    August 2005
    860 Posts
    I figured I'd sit down and play around with ASP.NET MVC3 and see what neat things I could make. About a day later, I've come up with this: http://games.opensteamworks.org/

    The website has a service that polls Steam every ~10 mins for player counts, and it's only been running for about 3 hours, so some graphs don't have much useful information at the moment.

    Neat examples:
    Dota 2 vs Garry's Mod
    Steam
    CS:GO Beta (aka Ghost Town)
    Reply With Quote Edit / Delete Windows 7 United States Show Events Programming King Programming King x 6Useful Useful x 1 (list)

  3. Post #483
    RUBY OVERLORD
    swift and shift's Avatar
    November 2011
    2,115 Posts
    Rewrote Twostroke's parser from scratch because the old one was shit. The old one was written when I was still figuring out how parsers worked so it was a hacky, kludgy pile of crap that didn't work properly in tricky edge cases.

    Here's the new parser in all its beauty:

    https://github.com/charliesome/twost...roke/parser.rb

    All operator precedences are handled by the parser grammar itself, which is how things should be done (before I was parsing everything into an UnsortedBinop and then shunting that shit around after the fact)

    Edited:

    For example, here's how the 5 main arithmetic operators are parsed at the moment:



    I could probably afford to DRY up that code a bit because there are some other precedence levels that have pretty similar code, but I'm reasonably happy with it for the moment.
    Reply With Quote Edit / Delete Mac Australia Show Events Programming King Programming King x 2 (list)

  4. Post #484
    Gold Member
    BackwardSpy's Avatar
    May 2008
    6,403 Posts
    Why is almost everyone making a minecraft clone?
    Ok it's a nice gimmick, but useless without some special features.
    I can't speak for everyone but I did mine purely for the enjoyment of it. Is there something wrong with that? :)
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Agree Agree x 5 (list)

  5. Post #485
    Gold Member
    BlkDucky's Avatar
    May 2008
    6,484 Posts
    Why is almost everyone making a minecraft clone?
    Ok it's a nice gimmick, but useless without some special features.
    Because very few of us program for reasons other than "just because".
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Agree Agree x 11 (list)

  6. Post #486
    Gold Member
    dvondrake's Avatar
    August 2006
    2,331 Posts
    Working on the very early stages of a deferred renderer with OpenGL. Just finally got my shader working properly with viewspace normals.



    Also just realized this is my first post here. Been lurking for ages until now.

    Edit: Doh, lighting's still borked somehow.
    Reply With Quote Edit / Delete Windows 7 United States Show Events Artistic Artistic x 3Programming King Programming King x 1 (list)

  7. Post #487
    RUBY OVERLORD
    swift and shift's Avatar
    November 2011
    2,115 Posts


    This is a significant milestone. Twostroke (my Javascript interpreter) is now solid enough such that it can parse, compile and execute the CoffeeScript compiler and get it to compile actual coffeescript into javascript.

    This is me right now (imagine the chick is a dude and the cups are code):


    Edited:

    benchmarks:

    Reply With Quote Edit / Delete Mac Australia Show Events Funny Funny x 10Winner Winner x 4Dumb Dumb x 1 (list)

  8. Post #488
    DeadKiller987's Avatar
    September 2010
    1,070 Posts
    I figured I'd sit down and play around with ASP.NET MVC3 and see what neat things I could make. About a day later, I've come up with this: http://games.opensteamworks.org/

    The website has a service that polls Steam every ~10 mins for player counts, and it's only been running for about 3 hours, so some graphs don't have much useful information at the moment.

    Neat examples:
    Dota 2 vs Garry's Mod
    Steam
    CS:GO Beta (aka Ghost Town)
    I like how Ricochet currently has the same amount op players as CS:GO.
    Reply With Quote Edit / Delete Windows 7 Lithuania Show Events Funny Funny x 8 (list)

  9. Post #489
    Andrew McWatters
    Dennab
    March 2011
    4,658 Posts
    Ricochet 2: Global Offensive

    ???

    Edited:

    also, welcome back fp, i missed you
    Reply With Quote Edit / Delete Windows 7 United States Show Events Agree Agree x 4Disagree Disagree x 1Dumb Dumb x 1 (list)

  10. Post #490
    seandewar5's Avatar
    November 2010
    24 Posts
    Finished rewriting the old code and made it a lot cleaner. The game also uses spritesheets for some things now too, FPS has generally increased, big bugs have been squashed, worldgen time is faster, worlds look better with new world features such as vines, and finally, lighting!



    And for the giggles, a image of failed lighting when I was writing it :

    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Funny Funny x 6Artistic Artistic x 1 (list)

  11. Post #491
    Gold Member
    Chandler's Avatar
    February 2006
    1,406 Posts


    This is a significant milestone. Twostroke (my Javascript interpreter) is now solid enough such that it can parse, compile and execute the CoffeeScript compiler and get it to compile actual coffeescript into javascript.

    Edited:

    benchmarks:

    I really like how you keep working on this simply for the hackability factor. Also, I totally want to see twostroke be able to run that javascript implementation of the JVM, which is then used to run JRuby, which is then used to run twostroke again (repeat ad infinitum).
    Reply With Quote Edit / Delete Mac United States Show Events Funny Funny x 4 (list)

  12. Post #492
    Gold Member
    thomasfn's Avatar
    July 2008
    2,955 Posts
    Why is almost everyone making a minecraft clone?
    Ok it's a nice gimmick, but useless without some special features.
    Not every game which has cubes in is a minecraft clone.
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Agree Agree x 5 (list)

  13. Post #493
    Nigey Nige's Avatar
    June 2010
    1,338 Posts
    Sometimes I come onto this thread just to aid with art assets...

    take it, my friend won't use it in anything so here you all go.





    Each frame is 128x64
    Fancy drawing some space-related stuff for me? :3
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events

  14. Post #494
    Andrew McWatters
    Dennab
    March 2011
    4,658 Posts
    Not every game which has cubes in is a minecraft clone.
    they all look the same, which is literally all it takes to establish the connection in an "lol ima gamer xddd" end-user audience
    Reply With Quote Edit / Delete Windows 7 United States Show Events Agree Agree x 5Funny Funny x 1Dumb Dumb x 1 (list)

  15. Post #495
    a-k-t-w's Avatar
    March 2008
    3,187 Posts
    So, in this code:
    #include <iostream>
    
    void aFunc(bool print);
    
    int main() {
    	while (true) {
    		aFunc(false);
    	}
    }
    
    void aFunc(bool print) {
    	if (print) {
    		std::cout << "It works Facepunch!";
    	}
    }
    The program should never output "It works Facepunch!"
    Knowing the code structure, how would I be able to call "aFunc(true)" from another program?
    No, its more like this

    int main()
    {
    	while (true)
    	{
    		aFunc("Your mum lol");
    	}
    }
    
    void aFunc(string print)
    {
    	std::cout << print << std::endl;
    }

    You can call aFunc from a dll you inject and pass your own parameters to it.
    Reply With Quote Edit / Delete Windows 7 Australia Show Events Agree Agree x 2Optimistic Optimistic x 1 (list)

  16. Post #496
    Programming King and Most Patient Member 2013
    r0b0tsquid's Avatar
    December 2008
    1,192 Posts
    Fixed window resizing:

    (Sorry if it's a bit big, consider that a feature )
    Also added parametrics:

    The "from", "to" and "plot" keywords are optional - they will default to -1, 1 and a value based on the current detail and the interval width, so you can just say "par t end" or something if you want to. :)
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Programming King Programming King x 3Winner Winner x 1 (list)

  17. Post #497

    January 2012
    414 Posts
    Can you change the line colours? Cause I've always seen you post in red lines haha. But it would be useful to differentiate between things like imaginary plots.
    Reply With Quote Edit / Delete Windows 7 Canada Show Events Agree Agree x 1Late Late x 1 (list)

  18. Post #498
    Programming King and Most Patient Member 2013
    r0b0tsquid's Avatar
    December 2008
    1,192 Posts
    There's a cyclical list of colours (I think it goes red->green->blue->orange->magenta->cyan->) - each graph that gets plotted uses the next colour on that list; so, in that first picture, the wobbly thing is plotted first and is red, and the circular bit is plotted second, so it's green. I plan to let the user edit/add/remove colours, but that won't be until I add a settings dialogue, which probably won't be until I've got the actual grapher working

    Edited:

    Like this:
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Optimistic Optimistic x 8Programming King Programming King x 1 (list)

  19. Post #499
    a-k-t-w's Avatar
    March 2008
    3,187 Posts
    Okey, so I was working on TF2 again over the past couple days.
    Projectile Bot, CritHack and all the fancy stuff. Then I realized one thing: Waiting for Crits isn't cool!

    Outcome:

    I don't sell this whatsoever, don't complain!

    Ps: For those who don't know what they are watching: Constant Crits (aka. whenever I want them).
    Wow, how does this work? Doesn't the server decide whether you crit or not?
    Reply With Quote Edit / Delete Windows 7 Australia Show Events Disagree Disagree x 1 (list)

  20. Post #500
    Gold Member
    farmatyr's Avatar
    June 2007
    4,211 Posts
    Oh the content posted in this thread makes me jizz. In a year I'm starting on Simulation and Game Development at the university, so hopefully I will be able to post content worthy of this thread.
    Reply With Quote Edit / Delete Windows 7 Norway Show Events Friendly Friendly x 10Funny Funny x 3Optimistic Optimistic x 1 (list)

  21. Post #501
    Andrew McWatters
    Dennab
    March 2011
    4,658 Posts
    Wow, how does this work? Doesn't the server decide whether you crit or not?
    It does, but considering this is based on a shared seed, you can essentially force your usercmd data to use (what I assume to be) existing crit seeds.
    Reply With Quote Edit / Delete Windows 7 United States Show Events Dumb Dumb x 1 (list)

  22. Post #502
    Kate Adams
    COBRAa's Avatar
    June 2009
    975 Posts

    The same concept as with the TF2 Const Crit thing.
    What you basically do is loop through all available spread seeds (trace each one) and if one hits the right hitbox, use this seed.

    €dit: Oh yeah, this is a recoded demo. All the movement is done by hand. (and you don't see any screen shake or whatever).
    Can you explain what the "available seeds" are? I assumed that there was only one and it can't be changed by the client.

    Edited:

    Last time I checked, VAC doesn't detect vtable hooks.
    They do scan IBaseClientDLL::CreateMove IIRC so you need to use VMT hooks (or other alternatives) to hook them.
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Agree Agree x 1 (list)

  23. Post #503
    ASK ME ABOUT MY PLAYBOOK INSTEAD OF COLLEGE
    icantread49's Avatar
    April 2011
    1,616 Posts
    any of you guys ever done undo/redo functionality?
    [...]
    devbug/turb/chris could you please explain how this is dumb?
    Reply With Quote Edit / Delete Windows XP United States Show Events Dumb Dumb x 2Funny Funny x 2 (list)

  24. Post #504
    Follow me on GitHub!
    Ziks's Avatar
    June 2011
    2,017 Posts
    devbug/turb/chris could you please explain how this is dumb?
    Isn't it much more efficient in terms of both speed and memory to only store the changes made, like you were planning to previously? I would assume that is what they rated you for.

    Edited:

    Unless the file sizes are really small in which case it is probably not worth the effort, and you'll be fine doing it with save files.
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Agree Agree x 3Disagree Disagree x 1 (list)

  25. Post #505
    Gold Member
    Darwin226's Avatar
    January 2009
    4,056 Posts
    devbug/turb/chris could you please explain how this is dumb?
    Couldn't you instead just use one Action class with a type enum and an array of objects as parameters to the constructor?
    Type would describe what action it's representing and additional data about the action would be stored in the object array.
    Reply With Quote Edit / Delete Croatia Show Events

  26. Post #506
    ASK ME ABOUT MY PLAYBOOK INSTEAD OF COLLEGE
    icantread49's Avatar
    April 2011
    1,616 Posts
    Isn't it much more efficient in terms of both speed and memory to only store the changes made, like you were planning to previously?
    sure it is. but then i end up with code like this:

    	class UndoDelete : public IUndo
    	{
    	private:
    		SHIFT_ARRAY<std::string> Tags;
    		SHIFT_ARRAY<SHIFT_ARRAY<uint8_t> > Arrs;
    	public:
    		void Include(GameObject* obj);
    		virtual void Go(GameWorld* world);
    	};
    
    	class RedoDelete : public IRedo, public GameObjectListener
    	{
    	private:
    		std::set<GameObject*> Objects;
    	public:
    		~RedoDelete();
    		void Include(GameObject* obj);
    		virtual void Go(GameWorld* world);
    		virtual void OnDestroy(GameObject* obj);
    	};
    
    	void UndoDelete::Include(GameObject* obj)
    	{
    		GameTaggable* tag = obj->Get<GameTaggable>();
    		GameModdable* mod = obj->Get<GameModdable>();
    		Tags.push_back(tag->Tag);
    		Arrs.push_back(SHIFT_ARRAY<uint8_t>());
    		mod->Save(Arrs[Arrs.size() - 1]);
    	}
    
    	void UndoDelete::Go(GameWorld* world)
    	{
    		RedoDelete* redo = new RedoDelete();
    		for (uint32_t i = 0; i < Tags.size(); ++i)
    		{
    			GameObject* obj = new GameObject(world);
    			world->Add(obj);
    			GameFactory::CreateFromTag(obj, Tags[i]);
    
    			GameModdable* mod = obj->Get<GameModdable>();
    			mod->Load(Arrs[i]);
    
    			redo->Include(obj);
    		}
    		UndoRedo* undoRedo = world->GetService<UndoRedo>();
    		undoRedo->PushRedo(redo);
    	}
    
    	RedoDelete::~RedoDelete()
    	{
    		for (std::set<GameObject*>::iterator i = Objects.begin(); i != Objects.end(); ++i)
    		{
    			GameObject* obj = *i;
    			obj->Listeners.erase(this);
    		}
    		Objects.clear();
    	}
    
    	void RedoDelete::Include(GameObject* obj)
    	{
    		Objects.insert(obj);
    		obj->Listeners.insert(this);
    	}
    
    	void RedoDelete::Go(GameWorld* world)
    	{
    		UndoDelete* undo = new UndoDelete();
    		for (std::set<GameObject*>::iterator i = Objects.begin(); i != Objects.end(); ++i)
    		{
    			GameObject* obj = *i;
    			undo->Include(obj);
    			obj->Listeners.erase(this);
    			world->Remove(obj);
    		}
    		UndoRedo* undoRedo = world->GetService<UndoRedo>();
    		undoRedo->PushUndo(undo);
    		Objects.clear();
    	}
    
    	void RedoDelete::OnDestroy(GameObject* obj)
    	{
    		Objects.erase(obj);
    	}
    
    	// later
    	UndoRedo* undoRedo = world->GetService<UndoRedo>();
    	undoRedo->PushUndo(new UndoDelete(...));
    

    instead of simply this:

    	// doesn't matter what action the user did here
    	UndoRedo* undoRedo = world->GetService<UndoRedo>();
    	undoRedo->Push();
    

    not to mention possible bugs regarding object creation/deletion outside of the undo/redo actions themselves

    ... now imagine this mess applying to every action the user could possibly perform

    regardless of the speed and/or memory overhead of the save-files, the experience is seamless to the user ... and if it wasn't, it can be easily optimized by saving to in-memory "files"
    Reply With Quote Edit / Delete Windows XP United States Show Events

  27. Post #507
    Gold Member
    jaybuz's Avatar
    May 2006
    5,516 Posts
    Stop being lazy and learn how to use a video converter. These programs were written to record raw video footage of your screen, not facilitate your video editing needs.
    I thought it would be a cool project for somebody who cared. No need to call my lazy since I don't even make videos.

    Useful webm stuff: http://webmproject.org/code/#webm-repositories

    Unsupported video conferencing application: http://git.chromium.org/gitweb/?p=we...6189b94;sf=tgz (cpp)
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events

  28. Post #508
    This title has been removed due to a copyright claim from Viacom Inc.
    neos300's Avatar
    July 2008
    3,482 Posts
    Has anyone been able to get Gwen working with SFML RenderTextures?
    Reply With Quote Edit / Delete Windows 7 United States Show Events

  29. Post #509
    Programming King and Most Patient Member 2013
    r0b0tsquid's Avatar
    December 2008
    1,192 Posts
    Hi guys, I could do with some advice:
    I think I've got the 3D stuff figured out, but there needs to be some way for the user to switch between 2D and 3D "modes" - there is some stuff that can have different interpretations based on that context, e.g. 2D implicit relations will be prismatic surfaces in 3D - there's no way to tell which it should be based on what the user plots. Which means I'm going to have to add some stuff to the UI. Which I suck at.
    So far, I've got these two ideas for a layout:

    Either have the output box as a tab at the bottom, and put a checkbox on a different tab, or...

    ...put two different canvases in tabs, let the user switch between them, and draw based on the currently selected tab (which I am slightly averse too, not just because of the way it looks but also because of a grapher made by a certain other forum member that behaved in the same way.)
    I'm at a bit of a loss here. Which would you guys choose, if you were to use it? One's a little more streamlined, but it also adds extra clutter to the UI. The other looks a little neater (to me), but it also adds an extra step to switching. Or would you guys do it completely differently?
    (Also, showing off the error system )
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events

  30. Post #510
    This title has been removed due to a copyright claim from Viacom Inc.
    neos300's Avatar
    July 2008
    3,482 Posts
    Hi guys, I could do with some advice:
    I think I've got the 3D stuff figured out, but there needs to be some way for the user to switch between 2D and 3D "modes" - there is some stuff that can have different interpretations based on that context, e.g. 2D implicit relations will be prismatic surfaces in 3D - there's no way to tell which it should be based on what the user plots. Which means I'm going to have to add some stuff to the UI. Which I suck at.
    So far, I've got these two ideas for a layout:

    Either have the output box as a tab at the bottom, and put a checkbox on a different tab, or

    Put two different canvases in tabs, let the user switch between them, and draw based on the currently selected tab (which I am slightly averse too, not just because of the way it looks but also because of a grapher made by a certain other forum member that behaved in the same way.)
    I'm at a bit of a loss here. Which would you guys choose, if you were to use it? One's a little more streamlined, but it also adds extra clutter to the UI. The other looks a little neater (to me), but it also adds an extra step to switching. Or would you guys do it completely differently?
    (Also, showing off the error system )
    You could just put the checkbox in the blank space between the output and the input.
    Reply With Quote Edit / Delete Windows 7 United States Show Events Agree Agree x 2 (list)

  31. Post #511
    RUBY OVERLORD
    swift and shift's Avatar
    November 2011
    2,115 Posts
    devbug/turb/chris could you please explain how this is dumb?
    Using save files for undo is rather inefficient and won't scale well.

    You're far better off having a stack of Actions that can be done and undone.

    You could write a whole book on how to implement undo though, it's not a simple problem.
    Reply With Quote Edit / Delete Australia Show Events

  32. Post #512
    ASK ME ABOUT MY PLAYBOOK INSTEAD OF COLLEGE
    icantread49's Avatar
    April 2011
    1,616 Posts
    Using save files for undo is rather inefficient and won't scale well.
    1) what is your definition of "inefficient" ?
    - slow? it's seamless to the user, so it's clearly not slow
    - takes up too much space? around 1000 complete undo's would take up 1-2 MB - a small enough footprint to keep entirely in RAM (if needed)

    2) what is your definition of "scaling well"?
    - to me, "scaling well" means that no matter what i allow the user to do, undo/redo functionality is available for that action with 1 line of code
    - to me, if i had to implement an Action for every possible user modifcation, THAT wouldn't "scale well"

    turb, please elaborate more. sometimes you're friendly and constructive and other times your posts consist of "A is inefficient so B is better" with no justification whatsoever
    Reply With Quote Edit / Delete Windows XP United States Show Events Agree Agree x 4 (list)

  33. Post #513
    garry's Avatar
    September 2001
    12,364 Posts
    This is my strategy with Undo.

    First of all you make a BaseRUndo class. It basically saves the entire project. You create it in any place you need an undo. You code it clever so it works as a redo too.

    Obviously this is slow, so you make subclasses to speed it up.

    So you'd make a RUndo::Move- for when objects are moved. It takes the movement vectors. You implement an undo and redo function for both.

    You'd make a RUndo::Delete for when objects are deleted.

    The idea behind this is that for now you'd have working undo within the hour - but it would be slow and less than ideal. But you can make it better progressively.
    Reply With Quote Edit / Delete Windows 7 Show Events

  34. Post #514
    ASK ME ABOUT MY PLAYBOOK INSTEAD OF COLLEGE
    icantread49's Avatar
    April 2011
    1,616 Posts
    This is my strategy with Undo.
    [...]
    certainly a nice mix of state-based undo and action-based undo

    So you'd make a RUndo::Move- for when objects are moved. It takes the movement vectors. You implement an undo and redo function for both.
    let's say the user moves two objects, then deletes the first one. this would quickly turn into a big mess unless you either serialize/deserialize objects with a unique ID or you keep deleted objects in memory.

    oh, and here's another benefit of my (and any) state-based undo: persistent undo. the user can continue working on a scene and undo/redo from wherever they left off, which would be particularly useful for mobile devices where the app could be terminated at any moment
    Reply With Quote Edit / Delete Windows XP United States Show Events

  35. Post #515
    This title has been removed due to a copyright claim from Viacom Inc.
    neos300's Avatar
    July 2008
    3,482 Posts
    So Gwen wasn't working in sf::View's properly so I decided to check what was going on.
    Fixing the text drawing was easy, simply commented out the save and restore opengl state commands.

    Checked out the textured boxes, and I see that garry(or someone) has written some opengl code to draw the rectangles (because it took UV coords for the texture) instead of using a SetSubRect command.
    I attempted to code a replacement but that didn't really work, is there some kind of glViewport trickery or something I could use to put the texture in my view?
    I don't really know that much about OpenGL.

    Garry's code, for those who are wondering: http://pastebin.com/T46rnBwe
    Reply With Quote Edit / Delete Windows 7 United States Show Events

  36. Post #516
    Gold Member
    FoohyAB's Avatar
    July 2009
    937 Posts
    Added a wordwrapped (well, per character for now) multiline textbox!
    Reply With Quote Edit / Delete Windows 7 United States Show Events Programming King Programming King x 2Useful Useful x 2Funny Funny x 1 (list)

  37. Post #517
    Gold Member
    synthiac's Avatar
    June 2007
    1,090 Posts


    uguu~
    gotta start porting over valve's fucktarded bitbuffer bullshit before parsing usercmds/packets
    Reply With Quote Edit / Delete Windows 7 United States Show Events Programming King Programming King x 10 (list)

  38. Post #518
    RUBY OVERLORD
    swift and shift's Avatar
    November 2011
    2,115 Posts
    1) what is your definition of "inefficient" ?
    - slow? it's seamless to the user, so it's clearly not slow
    - takes up too much space? around 1000 complete undo's would take up 1-2 MB - a small enough footprint to keep entirely in RAM (if needed)

    2) what is your definition of "scaling well"?
    - to me, "scaling well" means that no matter what i allow the user to do, undo/redo functionality is available for that action with 1 line of code
    - to me, if i had to implement an Action for every possible user modifcation, THAT wouldn't "scale well"

    turb, please elaborate more. sometimes you're friendly and constructive and other times your posts consist of "A is inefficient so B is better" with no justification whatsoever
    So what undo strategy you use really depends on what you're trying to do and how big your data is going to get.

    Notepad's undo would be vastly different to Hammer or Blender's undo.

    Edited:

    Also 'undo' doesn't have to be perfect. It's ok to have some actions that aren't undoable.
    Reply With Quote Edit / Delete Mac Australia Show Events Agree Agree x 4 (list)

  39. Post #519
    ASK ME ABOUT MY PLAYBOOK INSTEAD OF COLLEGE
    icantread49's Avatar
    April 2011
    1,616 Posts
    So what undo strategy you use really depends on what you're trying to do and how big your data is going to get.

    Notepad's undo would be vastly different to Hammer or Blender's undo.
    yes, exactly. i don't even understand what you were on about before

    Also 'undo' doesn't have to be perfect. It's ok to have some actions that aren't undoable.
    that becomes really, really annoying. i hate when i'm doing something and i accidentally delete it, then i hit ctrl-y and everything appears to come back except for some tiny little piece that is not undo-able
    Reply With Quote Edit / Delete Windows XP United States Show Events Agree Agree x 2 (list)

  40. Post #520
    Paid for a title.
    Maurice's Avatar
    June 2005
    6,175 Posts
    Added a wordwrapped (well, per character for now) multiline textbox!
    It says "trrailing" at the end of the video.
    Reply With Quote Edit / Delete Windows 7 Germany Show Events Agree Agree x 9Funny Funny x 4Disagree Disagree x 1 (list)