inspecten dem source demo files
inspecten dem source demo files
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)
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.
I can't speak for everyone but I did mine purely for the enjoyment of it. Is there something wrong with that? :)
Because very few of us program for reasons other than "just because".
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.
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:
![]()
I like how Ricochet currently has the same amount op players as CS:GO.
Ricochet 2: Global Offensive
???
Edited:
also, welcome back fp, i missed you
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 :
![]()
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).![]()
Not every game which has cubes in is a minecraft clone.
Fancy drawing some space-related stuff for me? :3
they all look the same, which is literally all it takes to establish the connection in an "lol ima gamer xddd" end-user audience
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.
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. :)
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.
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:
![]()
Wow, how does this work? Doesn't the server decide whether you crit or not?
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.
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.
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:
They do scan IBaseClientDLL::CreateMove IIRC so you need to use VMT hooks (or other alternatives) to hook them.
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.
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.
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"
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)
Has anyone been able to get Gwen working with SFML RenderTextures?
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.
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.
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
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.
certainly a nice mix of state-based undo and action-based undo
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
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
Added a wordwrapped (well, per character for now) multiline textbox!
uguu~
gotta start porting over valve's fucktarded bitbuffer bullshit before parsing usercmds/packets
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.
yes, exactly. i don't even understand what you were on about before
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![]()
It says "trrailing" at the end of the video.