Hola,
Hace un tiempo hablamos sobre los "comments" en smalltalk.
Hoy, por casualidad, visité a una página en la que hay algo
escrito con forma de artículo (con comentarios de lectores)
en el que se propone abordar el tema desde el título
"What´s in a Comment?".
Desde el título, y el lugar (es una página hosteada en
"The Weekly Squeak") parece tratarse de lo que
en Smalltalk se usa (define? podría decir)
como "Comment"... pero luego de leer la página
y los comentarios queda claro que no lo es.
Se trata (una vez mas) el tema de los comentarios en el código :-(
(un viaje mas hacia el pasado, en donde uno hablaba
de escribir codigo... "auto"documentacion,
diagramas 'pa ver mejor, etc...)
Tanto quien escribe como quienes comentan no conocen
que el comment es un comentario del mensaje y no
de "la implementacion"...
Es más, no se plantean el rol del mensaje en un esquema
de objetos. A duras penas hablan de métodos!
Me sorprende (aun hoy) encontrar en contextos donde uno
debería obtener contenido apropiado para alguien relacionado
con smalltalk (o empezando), encontrar contenido y
cuestionamientos fuera de lugar.
Es esto positivo para quienes usamos smalltalk?
Seguramente si uno pone todo en la balanza debería serlo,
sino no tendría sentido algo como The Weekly Squeak...
o será que no importa? que nadie mide los efectos
y solo se miden los recursos necesarios para hacer algo?
(se necesita espacio y varias notas)
Dónde se pueden encontrar las conclusiones sobre el
estudio de los efectos/concecuencias?
Estamos condenados a sufrir/sentir las consecuencias
y tratar de reparar lo que otros "hacen sin darse cuenta" ?
Porqué pregunto esto? (y cual es el motivante de escribirlo).
En la reunión pasada hablabamos de escribir algún
contenido sobre nuestros temas...
Ok... ya lo acordamos y no es sobre esto que quiero
volver, pero...
Qué hacer frente a esta facilidad de escribir que tenemos todos
(incluso quien no tiene experiencia en algo tan puntual como Smalltalk)
y los efectos que se producen ? (no mesurables de forma adecuada
en la mayoría de los casos)
Es correcto ponerse a escribir para que quede escrito en algun lado...
Es suficiente escribir para que se escuche "la otra campana"?
No es patetico?
Es suficiente escribir un comentario en la nota y dar una opinion
desde ese infimo punto (irrelevante para quien ya leyo la nota)
de quien "piensa/entiende distinto"?
Se entiende lo que pregunto?
Es positivo hacer cada vez que algun otro haga?
No es así como llegamos a esta situacion?
He escuchado en el pasado opiniones y propuestas de qué hacer...
y eso me motiva a volverlo a preguntar esperando los inquiete
a ustedes tanto como a mi y los motive a dar su opinión al respecto.
Un link a la página que motivo esa sensación incomoda en mi
y luego motivo este mensaje:
http://news.squeak.org/2007/04/16/whats-in-a-comment/#more-191
hasta pronto,
Ale.
Hola alejandro, pudimos encontrar el problema. Se estaba rompiendo la conexión al pasarse de una ventana a otra. Sabemos ésto porque "harcodeamos" las conexiones por todos lados y anduvo.
En nuestra aplicación, se instancia una ventana(1) que permite elegir el jugador. Una vez elegido, se instancia otra ventana(2) que es la de juego en sí. En (1) se crea la conexión, y cuando se crea la (2) se le pasa como parámetro la conexión.
Sólo falta ver cómo hacer bien eso, para que se deje de romper en la creación.
Ahora tengo otra pregunta:
Una vez que pudimos probar el jueguito nos dimos cuenta de que era muy lento(las pruebas las realizamos corriendo todo en la misma pc). Es decir, el tiempo desde que se hace una acción hasta que se muestran (verse reflejado el cambio en el cliente de forma gráfica) es muchísimo.
¿Alguien sabe qué se puede toquetear en OpenTalk para que ande más rápido? O si existen ciertas cosas en el diseño que suelen ser las causantes de que ande lento.
Bueno finalmente descubrí que estaba pasando con el tema de que se notaban pequeños saltos en el movimiento.
No era la cámara, ni la
aceleracióndel vehiculo lo que causaba este problema.
El tema esta en como actualizo NGD y Genesis3d en el mainLoop por decirlo así.
Lo descubríde casualidad y después de renegarbastante.
Ahoralo implemente deuna manera que funciona, pero parece no ser la mas adecuada. Ya que el movimiento del vehiculo es demasiado lento.
Afortunadamente encontré un artículo que explica con detalle cual es lamanera de trabajar con un sistema de integración como lo es la física y un sistema de render.
El punto es que en la parte final el autor explica un detalle que no entiendo y quería ver si alguien lo entiendo y puede aclararlo.
Este es el artículo entero por si alguien lo quiere completo:
So it seems that all is well. Our simulation is stable and framerate independent but there is still one last thing to do before it is
perfect. Consider what will happen if the display framerate is 55fps and the physics is running at 60fps. Basically the time accumulator will have to alternate between taking one and two physics steps each display update to make sure that it keeps up. This irregular amount of physics steps taken per update causes a subtle but visually unpleasant stuttering of the physics simulation on the screen.
Even worse, if you have an oversampling case, say in slow motion mode (1/10th speed) your effective display framerate would be 600fps if your display is actually updating at 60fps. Assuming the physics is also running at 60fps the accumulator would only do one physics step every 10 display updates. This means that objects animate in discrete jarring steps every 1/6th of a
second. This looks pretty dodgy but the good news is that there is a way to make sure that everything runs smoothly all of the time.
The solution is to interpolate between the previous physics state and the current state based on how much time is left in the accumulator. This will add a latency of up to dt to your physics simulation, but the visual results are definitely worth it. Here is how to implement it:
struct State
{
float x;
float v;
};
State interpolate(const State &previous, const State ¤t, float alpha)
State state = currentState*alpha + previousState*(1.0f-alpha);
render(state);//Esto es en seudo-codigo como esta en el artículo
"State state = interpolate(previous, current, accumulator/dt);
glBegin(GL_POINTS);
glColor3f(1,1,1);
glVertex3f(state.x, 0, 0);
glEnd();
updateDisplay();"
}
This looks pretty complicated but here is a simple way to think about it. After the deltaTime has been added to the accumulator and the physics steps of size dt have been performed, if the physics and display fps are not integer multiples of each other, then some time will remain in the accumulator. This remainder is effectively a measure of just how much more time is required before another whole physics step can be taken. For example, a remainder of dt/2 means that we are currently halfway between the current physics step and the next one. A remainder of dt*0.1 means that the update is 1/10th of the way between the previous and current states.
En mi renderLoop tengo un cálculo del tiempo que paso, para que el render se lleve a cabo siempre en un intervalo de tiempo fijo.
El hace una interpolación no se de que y lo usa para el render y es hay donde no me queda claro como esta usando ese STATE para el render.
Ya que el render lo estoy controlando en el calculo que tengo para fijar el frameRate.
Genesis hace el renderbasicamente así.
(engine beginFrame: self camera)
ifTrue: [
render: aWorld with: self camera time:
0"seconds".
engine endFrame. ].
El tema es que time:0en la demo de genesis3D siempre es 0.
Es decir no puedousarel valor de la interpolación para pasarlo a time:
No se
si se alcanza a entender lo que estoy preguntando.
Saludos kiko
Preguntá. Respondé. Descubrí. Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta). ¡Probalo ya!
Alejandro hace tiempo que viene con el ejemplo del cardumen, para mostrar que a veces objetos no alcanza.
Estracto una charla con titulo "
Re: Re[4]: [objetos] Re: Herencia Multiple" del 10 de nov del 2005
Alejandro decia:
"Los objetos son cosas, pero hay cosas que no son objetos.
Un ejemplo: un cardumen.
Si queres podes decir que "ves" un objeto. Pero no es un objeto."
Nicolas:
"Qué es lo que le faltaría para que sea considerado un objeto?"
Alejandro:
"El primer principio :-) Preservar su identidad."
Nicolas:
" Tal vez dependa del contexto o del nivel de abstracción con el cual
estemos viendo al cardumen."
Alejandro:
"
Con lo que un objeto solo sería un punto de vista... Si seguis ese razonamiento, solo es posible la OO."
Nicolas:
"Esta claro que el cardumen emerge del comportamiento de los peces en su conjunto, pero por qué no podemos ver al cardumen como un todo, prescindiendo de los peces, es decir sintetizando en lugar de
aplicar reducción."
Alejandro:
"
1 cardumen de sardinas + 1 cardumen de sardinas = 1 cardumen de sardinas
Cual de los dos no existe mas?
Si se separa en dos... son los mismos que antes?
(aunque no tengan los mismos peces? y si los tienen?)
Distingamos entre "cosas" y "objetos".
Los objetos preservan su identidad, estan encapsulados.
Las cosas que son "abiertas" no son objetos (presentan emergentes)."
Subject: Re: [objetos] Opentalk en arquitectura cliente-servidor
Hola Alejandro, adjunto el stack report porque es extenso.
El error, "Must be running to send remote messages!" se produce en la ventana del cliente ni bien se levanta la aplicación (son las tres opciones que dimos en el primer e-mail de como se cuelga) y hasta ayer las únicas pruebas que habíamos hecho eran sobre la misma computadora. Hoy lo probamos en una LAN de dos máquinas pero es peor, tarda demasiado en llevar y traer la información; y una vez que se ve levanta la ventana de la aplicación, se cuelga como antes.
Es decir, no solo que se cuelga sino que además hay un tráfico terrible en la red, por lo que tarda en traer los objetos al cliente. Mucho. Pero esto es para más adelante, por lo menos hasta que ande la aplicación localmente.
Otra suposición es que debido, por ejemplo, a un error en la noticicación de cambios ocurre una situación recursiva de change/updates... y eso hace que se genere un pingpong de mensajes... (deberías sentir que ambos equipos zapatean y/o se les consume memoria) que al no resolverse, termina dando un error por falta de respuesta. (quizás no esta cerrda la conexión, sino que solo no se recibió una respuesta en el tiempo esperado)
Mirá, entre el cliente y el servidor hay muchísimas dependencias, pero a pesar de eso, lo único que se cuelga es el cliente. Es decir, en la ventana del servidor no pareciera que hubiera mucho tráfico, pero sí parece que hay mucho tráfico en la ventana del cliente(por el retardo en dibujarse y demás)
Gracias Alejandro Saludos Lautaro -- Luke LAut SkyFernadezWalker
Re envio del mensaje, porque aparentemente no llegó("---------- Forwarded message ----------"):
Hola Alejandro, adjunto el stack report porque es extenso.
El error, "Must be running to send remote messages!" se produce en la ventana del cliente ni bien se levanta la aplicación (son las tres opciones que dimos en el primer e-mail de como se cuelga) y hasta ayer las únicas pruebas que habíamos hecho eran sobre la misma computadora.
Hoy lo probamos en una LAN de dos máquinas pero es peor, tarda demasiado en llevar y traer la información; y una vez que se ve levanta la ventana de la aplicación, se cuelga como antes.
Es decir, no solo que se cuelga sino que además hay un tráfico terrible en la red, por lo que tarda en traer los objetos al cliente. Mucho. Pero esto es para más adelante, por lo menos hasta que ande la aplicación localmente.
Otra suposición es que debido, por ejemplo, a un error
en la noticicación de cambios ocurre una situación
recursiva de change/updates... y eso hace que
se genere un pingpong de mensajes... (deberías sentir
que ambos equipos zapatean y/o se les consume memoria)
que al no resolverse, termina dando un error por falta
de respuesta.
(quizás no esta cerrda la conexión, sino que solo no se
recibió una respuesta en el tiempo esperado)
Mirá, entre el cliente y el servidor hay muchísimas dependencias, pero a pesar de eso, lo único que se cuelga es el cliente. Es decir, en la ventana del servidor no pareciera que hubiera mucho tráfico, pero sí parece que hay mucho tráfico en la ventana del cliente(por el retardo en dibujarse y demás)
Gracias Alejandro Saludos Lautaro -- Luke LAut SkyFernadezWalker
Unhandled exception: Must be running to send remote messages!
Opentalk.ConnectionAdaptor(Opentalk.BasicObjectAdaptor)>>sendRequest:
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendRequest:
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendMessage:to:timeout:
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendMessage:to:
Opentalk.RemoteObject>>_sendMessage:
Opentalk.RemoteObject>>doesNotUnderstand:
CeldaView>>imagenADibujar
CeldaView>>displayOn:
optimized [] in MapaView>>displayOn:
OrderedCollection>>do:
MapaView>>displayOn:
BorderedWrapper>>displayOn:
SpecWrapper(Wrapper)>>displayOn:
SpecWrapper(WidgetWrapper)>>displayOn:
CompositePart>>displayOn:
WindowDisplayPolicy>>displayDamageList:in:
ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
ApplicationWindow(ScheduledWindow)>>checkForEvents
optimized [] in [] in WindowManager>>repairDamagesExcept:
OrderedCollection>>do:
optimized [] in WindowManager>>repairDamagesExcept:
BlockClosure>>on:do:
WindowManager>>repairDamagesExcept:
WindowManager>>repairDamages
WindowManager>>processNextEvent
optimized [] in [] in WindowManager>>newProcess
BlockClosure>>on:do:
optimized [] in WindowManager>>newProcess
BlockClosure>>on:do:
optimized [] in Process class>>forBlock:priority:
----------------------------------------------------------------------
Opentalk.ConnectionAdaptor(Opentalk.BasicObjectAdaptor)>>sendRequest:
Receiver:
a Opentalk.ConnectionAdaptor
Instance Variables:
handlers = nil
state = #stopped
configuration = ConnectionAdaptorConfiguration new
accessPoint: IPSocketAddress(port#5001 at:mturing.CAQUITA)
transport: (TCPTransportConfiguration new
marshaler: (STSTMarshalerConfiguration new))
requestDispatcher: (StandardRequestDispatcherConfiguration new)
id = nil
accessPoint = IPSocketAddress(port#5001 at:mturing.CAQUITA)
localAccessPoint = IPSocketAddress(port#5001 at:localhost)
accessAddress = a ByteArray[4]
objectTable = an Opentalk.ObjectTable
orb = Broker<tcp/192.168.2.100:5001>
requestDispatcher = an Opentalk.StandardRequestDispatcher
processingPolicy = an Opentalk.ProcessingPolicy
localityTest = BlockClosure [] in Opentalk.BasicObjectAdaptor
class>>defaultLocalityTestValue
connections = a Protocols.SharedRegistry
clientConnections = a Protocols.SharedRegistry
listener = an Opentalk.ConnectionListener
connectionTimeout = nil
connectingTimeout = nil
upperConnectionLimit = nil
lowerConnectionLimit = nil
maxAcceptDelay = nil
isBiDirectional = nil
useDistinctServerEvents = nil
Arguments:
aRequest = STSTRequest[nil]{ObjRef<105@...:3000> contenido}
Context PC = 20
----------------------------------------------------------------------
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendRequest:
Receiver:
a Opentalk.RequestBroker
Instance Variables:
handlers = nil
state = #stopped
configuration = StandardBrokerConfiguration new
adaptor: (ConnectionAdaptorConfiguration new
accessPoint: IPSocketAddress(port#5001 at:mturing.CAQUITA)
transport: (TCPTransportConfiguration new
marshaler: (STSTMarshalerConfiguration new))
requestDispatcher: (StandardRequestDispatcherConfiguration new))
id = #'RequestBroker 3358765412677'
remoteObjectRegistry = an Opentalk.OtWeakValueDictionary
objectAdaptor = Adaptor<tcp/192.168.2.100:5001>
requestType = Opentalk.STSTRequest
requestTimeout = nil
serviceDictionary = a Dictionary[0]
openSelectors = an Array[5]
Arguments:
aRequest = STSTRequest[nil]{ObjRef<105@...:3000> contenido}
Context PC = 6
----------------------------------------------------------------------
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendMessage:to:timeout:
Receiver:
a Opentalk.RequestBroker
Instance Variables:
handlers = nil
state = #stopped
configuration = StandardBrokerConfiguration new
adaptor: (ConnectionAdaptorConfiguration new
accessPoint: IPSocketAddress(port#5001 at:mturing.CAQUITA)
transport: (TCPTransportConfiguration new
marshaler: (STSTMarshalerConfiguration new))
requestDispatcher: (StandardRequestDispatcherConfiguration new))
id = #'RequestBroker 3358765412677'
remoteObjectRegistry = an Opentalk.OtWeakValueDictionary
objectAdaptor = Adaptor<tcp/192.168.2.100:5001>
requestType = Opentalk.STSTRequest
requestTimeout = nil
serviceDictionary = a Dictionary[0]
openSelectors = an Array[5]
Arguments:
msg = a Message with selector: #contenido and arguments: #()
objRef = ObjRef<105@...:3000>
ms = 60000
Context PC = 21
----------------------------------------------------------------------
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendMessage:to:
Receiver:
a Opentalk.RequestBroker
Instance Variables:
handlers = nil
state = #stopped
configuration = StandardBrokerConfiguration new
adaptor: (ConnectionAdaptorConfiguration new
accessPoint: IPSocketAddress(port#5001 at:mturing.CAQUITA)
transport: (TCPTransportConfiguration new
marshaler: (STSTMarshalerConfiguration new))
requestDispatcher: (StandardRequestDispatcherConfiguration new))
id = #'RequestBroker 3358765412677'
remoteObjectRegistry = an Opentalk.OtWeakValueDictionary
objectAdaptor = Adaptor<tcp/192.168.2.100:5001>
requestType = Opentalk.STSTRequest
requestTimeout = nil
serviceDictionary = a Dictionary[0]
openSelectors = an Array[5]
Arguments:
msg = a Message with selector: #contenido and arguments: #()
objRef = ObjRef<105@...:3000>
Context PC = 9
----------------------------------------------------------------------
Opentalk.RemoteObject>>_sendMessage:
Receiver:
a Opentalk.RemoteObject
Instance Variables:
objRef = ObjRef<105@...:3000>
requestBroker = Broker<tcp/192.168.2.100:5001>
dependents = a Opentalk.LocalDependents[1]
Arguments:
aMessage = a Message with selector: #contenido and arguments: #()
Context PC = 5
----------------------------------------------------------------------
Opentalk.RemoteObject>>doesNotUnderstand:
Receiver:
a Opentalk.RemoteObject
Instance Variables:
objRef = ObjRef<105@...:3000>
requestBroker = Broker<tcp/192.168.2.100:5001>
dependents = a Opentalk.LocalDependents[1]
Arguments:
aMessage = a Message with selector: #contenido and arguments: #()
Context PC = 5
----------------------------------------------------------------------
CeldaView>>imagenADibujar
Receiver:
a CeldaView
Instance Variables:
container = nil
eventHandlers = nil
model = a Opentalk.RemoteObject
controller = nil
properties = nil
posicionRelativa = 1@1
contenedorDeImagenes = an ImageContenedor
Temporaries:
visitorContenido = nil
contenido = nil
Context PC = 5
----------------------------------------------------------------------
CeldaView>>displayOn:
Receiver:
a CeldaView
Instance Variables:
container = nil
eventHandlers = nil
model = a Opentalk.RemoteObject
controller = nil
properties = nil
posicionRelativa = 1@1
contenedorDeImagenes = an ImageContenedor
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Temporaries:
pos = 1@1
columna = 1
fila = 1
Context PC = 22
----------------------------------------------------------------------
optimized [] in MapaView>>displayOn:
Receiver:
an UndefinedObject
Arguments:
each = a CeldaView
Temporaries:
.aGraphicsContext = a ScreenGraphicsContext
Context PC = 7
----------------------------------------------------------------------
OrderedCollection>>do:
Receiver:
an OrderedCollection
Instance Variables:
firstIndex = 1
lastIndex = 49
Arguments:
aBlock = BlockClosure [] in MapaView>>displayOn:
Temporaries:
index = 1
Context PC = 17
----------------------------------------------------------------------
MapaView>>displayOn:
Receiver:
a MapaView
Instance Variables:
container = a BorderedWrapper on: a MapaView
eventHandlers = nil
model = a Opentalk.RemoteObject
controller = a MapaController
properties = nil
celdasView = an OrderedCollection[49]
contenedorDeImagenes = an ImageContenedor
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Context PC = 10
----------------------------------------------------------------------
BorderedWrapper>>displayOn:
Receiver:
a BorderedWrapper
Instance Variables:
container = a SpecWrapper on: a BorderedWrapper on: a MapaView
eventHandlers = nil
component = a MapaView
origin = 10@10
layout = nil
extent = 351@351
insetDisplayBox = 11@11 corner: 360@360
border = a WinXPBorder
inset = nil
insideColor = nil
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Temporaries:
bx = 10@10 corner: 361@361
clipBox = 203@124 corner: 361@129
insetClipBox = 203@124 corner: 360@129
Context PC = 64
----------------------------------------------------------------------
SpecWrapper(Wrapper)>>displayOn:
Receiver:
a SpecWrapper
Instance Variables:
container = a CompositePart
eventHandlers = nil
component = a BorderedWrapper on: a MapaView
widget = a MapaView
widgetState = a WidgetState
effectivelyVisible = true
decorator = nil
dependents = nil
dropTarget = nil
spec = an ArbitraryComponentSpec
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Context PC = 7
----------------------------------------------------------------------
SpecWrapper(WidgetWrapper)>>displayOn:
Receiver:
a SpecWrapper
Instance Variables:
container = a CompositePart
eventHandlers = nil
component = a BorderedWrapper on: a MapaView
widget = a MapaView
widgetState = a WidgetState
effectivelyVisible = true
decorator = nil
dependents = nil
dropTarget = nil
spec = an ArbitraryComponentSpec
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Temporaries:
lp = nil
Context PC = 26
----------------------------------------------------------------------
CompositePart>>displayOn:
Receiver:
a CompositePart
Instance Variables:
container = an ApplicationWindow 740
eventHandlers = nil
components = an OrderedCollection[27]
preferredBounds = 0@0 corner: 741@531
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Temporaries:
clipBox = 203@124 corner: 547@129
i = 2
component = a SpecWrapper on: a BorderedWrapper on: a MapaView
Context PC = 30
----------------------------------------------------------------------
WindowDisplayPolicy>>displayDamageList:in:
Receiver:
a WindowDisplayPolicy
Arguments:
aDamageList = an Array[1]
aWindow = an ApplicationWindow 740
Temporaries:
windowGraphicsContext = a ScreenGraphicsContext
windowVisual = a CompositePart
i = 2
i = 1
Context PC = 73
----------------------------------------------------------------------
ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
Receiver:
an ApplicationWindow
Instance Variables:
handle = a GraphicsHandle(740)
width = 750
height = 550
background = (ColorValue brightness: 0.984007)
inputOrigin = 137@94
creationOrigin = 137@94
sensor = an EventSensor
iconic = false
windowType = #normal
effectiveWindowType = nil
statusLineHeight = 0
allowsStatusLine = true
mapped = true
eventHandlers = nil
windowManager = a WindowManager
label = 'RPG - juegazo - mturing.CAQUITA::tr'
icon = an Icon
minimumSize = 750@550
maximumSize = 750@550
component = a CompositePart
lookPreferences = a LookPreferences[7]
paintPreferences = nil
edgeDecorationPolicy = a WinXPBorderDecorationPolicy
widgetPolicy = a WinXPWidgetPolicy
controller = an ApplicationStandardSystemController
model = a JuegoAplicacion
damageRepairPolicy = a WindowDisplayPolicy
masterWindow = nil
keyboardProcessor = a KeyboardProcessor
application = nil
sendWindowEvents = nil
receiveWindowEvents = nil
windowEventBlock = nil
damageRepairIsLazy = true
activationNotification = true
isEventDriven = nil
toolbarVisible = true
dropTarget = nil
dragDropInProgress = nil
dragDropTracker = nil
Arguments:
aDamageList = an Array[1]
Context PC = 7
----------------------------------------------------------------------
ApplicationWindow(ScheduledWindow)>>checkForEvents
Receiver:
an ApplicationWindow
Instance Variables:
handle = a GraphicsHandle(740)
width = 750
height = 550
background = (ColorValue brightness: 0.984007)
inputOrigin = 137@94
creationOrigin = 137@94
sensor = an EventSensor
iconic = false
windowType = #normal
effectiveWindowType = nil
statusLineHeight = 0
allowsStatusLine = true
mapped = true
eventHandlers = nil
windowManager = a WindowManager
label = 'RPG - juegazo - mturing.CAQUITA::tr'
icon = an Icon
minimumSize = 750@550
maximumSize = 750@550
component = a CompositePart
lookPreferences = a LookPreferences[7]
paintPreferences = nil
edgeDecorationPolicy = a WinXPBorderDecorationPolicy
widgetPolicy = a WinXPWidgetPolicy
controller = an ApplicationStandardSystemController
model = a JuegoAplicacion
damageRepairPolicy = a WindowDisplayPolicy
masterWindow = nil
keyboardProcessor = a KeyboardProcessor
application = nil
sendWindowEvents = nil
receiveWindowEvents = nil
windowEventBlock = nil
damageRepairIsLazy = true
activationNotification = true
isEventDriven = nil
toolbarVisible = true
dropTarget = nil
dragDropInProgress = nil
dragDropTracker = nil
Temporaries:
damage = an Array[1]
Context PC = 33
----------------------------------------------------------------------
optimized [] in [] in WindowManager>>repairDamagesExcept:
Receiver:
an UndefinedObject
Arguments:
w = an ApplicationWindow 740
Temporaries:
.obj = nil
Context PC = 10
----------------------------------------------------------------------
OrderedCollection>>do:
Receiver:
an OrderedCollection
Instance Variables:
firstIndex = 3
lastIndex = 5
Arguments:
aBlock = BlockClosure [] in [] in WindowManager>>repairDamagesExcept:
Temporaries:
index = 3
Context PC = 17
----------------------------------------------------------------------
optimized [] in WindowManager>>repairDamagesExcept:
Receiver:
an UndefinedObject
Temporaries:
.self = a WindowManager
.obj = nil
Context PC = 13
----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
a BlockClosure
Instance Variables:
method = CompiledBlock [] in WindowManager>>repairDamagesExcept:
outerContext = nil
copiedValues = an Array[2]
Arguments:
anExceptionSelector = ClosedWindowNotification
handlerBlock = BlockClosure [] in WindowManager>>repairDamagesExcept:
Context PC = 18
----------------------------------------------------------------------
WindowManager>>repairDamagesExcept:
Receiver:
a WindowManager
Instance Variables:
windows = an OrderedCollection[3]
activeController = nil
interruptLock = false
outstandingMetaOrDamage = false
openInProgress = false
eventQueue = an EventQueue
baseProcess = a Process in Semaphore>>wait
dontFilterEvents = false
Arguments:
obj = nil
Context PC = 16
----------------------------------------------------------------------
WindowManager>>repairDamages
Receiver:
a WindowManager
Instance Variables:
windows = an OrderedCollection[3]
activeController = nil
interruptLock = false
outstandingMetaOrDamage = false
openInProgress = false
eventQueue = an EventQueue
baseProcess = a Process in Semaphore>>wait
dontFilterEvents = false
Context PC = 5
----------------------------------------------------------------------
WindowManager>>processNextEvent
Receiver:
a WindowManager
Instance Variables:
windows = an OrderedCollection[3]
activeController = nil
interruptLock = false
outstandingMetaOrDamage = false
openInProgress = false
eventQueue = an EventQueue
baseProcess = a Process in Semaphore>>wait
dontFilterEvents = false
Temporaries:
event = an ExposeEvent
Context PC = 12
----------------------------------------------------------------------
optimized [] in [] in WindowManager>>newProcess
Receiver:
an UndefinedObject
Temporaries:
.self = a WindowManager
Context PC = 13
----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
a BlockClosure
Instance Variables:
method = CompiledBlock [] in [] in WindowManager>>newProcess
outerContext = nil
copiedValues = a WindowManager
Arguments:
anExceptionSelector = TerminateException
handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess
Context PC = 18
----------------------------------------------------------------------
optimized [] in WindowManager>>newProcess
Receiver:
an UndefinedObject
Temporaries:
.self = a WindowManager
Context PC = 15
----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
a BlockClosure
Instance Variables:
method = CompiledBlock [] in WindowManager>>newProcess
outerContext = nil
copiedValues = a WindowManager
Arguments:
anExceptionSelector = TerminateException
handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority:
Context PC = 18
----------------------------------------------------------------------
optimized [] in Process class>>forBlock:priority:
Receiver:
an UndefinedObject
Temporaries:
.aBlock = BlockClosure [] in WindowManager>>newProcess
Context PC = 9
Hola Alejandro, adjunto el stack report porque es extenso.
El error, "Must be running to send remote messages!" se produce en la ventana del cliente ni bien se levanta la aplicación (son las tres opciones que dimos en el primer e-mail de como se cuelga) y hasta ayer las únicas pruebas que habíamos hecho eran sobre la misma computadora.
Hoy lo probamos en una LAN de dos máquinas pero es peor, tarda demasiado en llevar y traer la información; y una vez que se ve levanta la ventana de la aplicación, se cuelga como antes.
Es decir, no solo que se cuelga sino que además hay un tráfico terrible en la red, por lo que tarda en traer los objetos al cliente. Mucho. Pero esto es para más adelante, por lo menos hasta que ande la aplicación localmente.
Otra suposición es que debido, por ejemplo, a un error
en la noticicación de cambios ocurre una situación
recursiva de change/updates... y eso hace que
se genere un pingpong de mensajes... (deberías sentir
que ambos equipos zapatean y/o se les consume memoria)
que al no resolverse, termina dando un error por falta
de respuesta.
(quizás no esta cerrda la conexión, sino que solo no se
recibió una respuesta en el tiempo esperado)
Mirá, entre el cliente y el servidor hay muchísimas dependencias, pero a pesar de eso, lo único que se cuelga es el cliente. Es decir, en la ventana del servidor no pareciera que hubiera mucho tráfico, pero sí parece que hay mucho tráfico en la ventana del cliente(por el retardo en dibujarse y demás)
Gracias Alejandro Saludos Lautaro -- Luke LAut SkyFernadezWalker
Unhandled exception: Must be running to send remote messages!
Opentalk.ConnectionAdaptor(Opentalk.BasicObjectAdaptor)>>sendRequest:
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendRequest:
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendMessage:to:timeout:
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendMessage:to:
Opentalk.RemoteObject>>_sendMessage:
Opentalk.RemoteObject>>doesNotUnderstand:
CeldaView>>imagenADibujar
CeldaView>>displayOn:
optimized [] in MapaView>>displayOn:
OrderedCollection>>do:
MapaView>>displayOn:
BorderedWrapper>>displayOn:
SpecWrapper(Wrapper)>>displayOn:
SpecWrapper(WidgetWrapper)>>displayOn:
CompositePart>>displayOn:
WindowDisplayPolicy>>displayDamageList:in:
ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
ApplicationWindow(ScheduledWindow)>>checkForEvents
optimized [] in [] in WindowManager>>repairDamagesExcept:
OrderedCollection>>do:
optimized [] in WindowManager>>repairDamagesExcept:
BlockClosure>>on:do:
WindowManager>>repairDamagesExcept:
WindowManager>>repairDamages
WindowManager>>processNextEvent
optimized [] in [] in WindowManager>>newProcess
BlockClosure>>on:do:
optimized [] in WindowManager>>newProcess
BlockClosure>>on:do:
optimized [] in Process class>>forBlock:priority:
----------------------------------------------------------------------
Opentalk.ConnectionAdaptor(Opentalk.BasicObjectAdaptor)>>sendRequest:
Receiver:
a Opentalk.ConnectionAdaptor
Instance Variables:
handlers = nil
state = #stopped
configuration = ConnectionAdaptorConfiguration new
accessPoint: IPSocketAddress(port#5001 at:mturing.CAQUITA)
transport: (TCPTransportConfiguration new
marshaler: (STSTMarshalerConfiguration new))
requestDispatcher: (StandardRequestDispatcherConfiguration new)
id = nil
accessPoint = IPSocketAddress(port#5001 at:mturing.CAQUITA)
localAccessPoint = IPSocketAddress(port#5001 at:localhost)
accessAddress = a ByteArray[4]
objectTable = an Opentalk.ObjectTable
orb = Broker<tcp/192.168.2.100:5001>
requestDispatcher = an Opentalk.StandardRequestDispatcher
processingPolicy = an Opentalk.ProcessingPolicy
localityTest = BlockClosure [] in Opentalk.BasicObjectAdaptor
class>>defaultLocalityTestValue
connections = a Protocols.SharedRegistry
clientConnections = a Protocols.SharedRegistry
listener = an Opentalk.ConnectionListener
connectionTimeout = nil
connectingTimeout = nil
upperConnectionLimit = nil
lowerConnectionLimit = nil
maxAcceptDelay = nil
isBiDirectional = nil
useDistinctServerEvents = nil
Arguments:
aRequest = STSTRequest[nil]{ObjRef<105@...:3000> contenido}
Context PC = 20
----------------------------------------------------------------------
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendRequest:
Receiver:
a Opentalk.RequestBroker
Instance Variables:
handlers = nil
state = #stopped
configuration = StandardBrokerConfiguration new
adaptor: (ConnectionAdaptorConfiguration new
accessPoint: IPSocketAddress(port#5001 at:mturing.CAQUITA)
transport: (TCPTransportConfiguration new
marshaler: (STSTMarshalerConfiguration new))
requestDispatcher: (StandardRequestDispatcherConfiguration new))
id = #'RequestBroker 3358765412677'
remoteObjectRegistry = an Opentalk.OtWeakValueDictionary
objectAdaptor = Adaptor<tcp/192.168.2.100:5001>
requestType = Opentalk.STSTRequest
requestTimeout = nil
serviceDictionary = a Dictionary[0]
openSelectors = an Array[5]
Arguments:
aRequest = STSTRequest[nil]{ObjRef<105@...:3000> contenido}
Context PC = 6
----------------------------------------------------------------------
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendMessage:to:timeout:
Receiver:
a Opentalk.RequestBroker
Instance Variables:
handlers = nil
state = #stopped
configuration = StandardBrokerConfiguration new
adaptor: (ConnectionAdaptorConfiguration new
accessPoint: IPSocketAddress(port#5001 at:mturing.CAQUITA)
transport: (TCPTransportConfiguration new
marshaler: (STSTMarshalerConfiguration new))
requestDispatcher: (StandardRequestDispatcherConfiguration new))
id = #'RequestBroker 3358765412677'
remoteObjectRegistry = an Opentalk.OtWeakValueDictionary
objectAdaptor = Adaptor<tcp/192.168.2.100:5001>
requestType = Opentalk.STSTRequest
requestTimeout = nil
serviceDictionary = a Dictionary[0]
openSelectors = an Array[5]
Arguments:
msg = a Message with selector: #contenido and arguments: #()
objRef = ObjRef<105@...:3000>
ms = 60000
Context PC = 21
----------------------------------------------------------------------
Opentalk.RequestBroker(Opentalk.BasicRequestBroker)>>sendMessage:to:
Receiver:
a Opentalk.RequestBroker
Instance Variables:
handlers = nil
state = #stopped
configuration = StandardBrokerConfiguration new
adaptor: (ConnectionAdaptorConfiguration new
accessPoint: IPSocketAddress(port#5001 at:mturing.CAQUITA)
transport: (TCPTransportConfiguration new
marshaler: (STSTMarshalerConfiguration new))
requestDispatcher: (StandardRequestDispatcherConfiguration new))
id = #'RequestBroker 3358765412677'
remoteObjectRegistry = an Opentalk.OtWeakValueDictionary
objectAdaptor = Adaptor<tcp/192.168.2.100:5001>
requestType = Opentalk.STSTRequest
requestTimeout = nil
serviceDictionary = a Dictionary[0]
openSelectors = an Array[5]
Arguments:
msg = a Message with selector: #contenido and arguments: #()
objRef = ObjRef<105@...:3000>
Context PC = 9
----------------------------------------------------------------------
Opentalk.RemoteObject>>_sendMessage:
Receiver:
a Opentalk.RemoteObject
Instance Variables:
objRef = ObjRef<105@...:3000>
requestBroker = Broker<tcp/192.168.2.100:5001>
dependents = a Opentalk.LocalDependents[1]
Arguments:
aMessage = a Message with selector: #contenido and arguments: #()
Context PC = 5
----------------------------------------------------------------------
Opentalk.RemoteObject>>doesNotUnderstand:
Receiver:
a Opentalk.RemoteObject
Instance Variables:
objRef = ObjRef<105@...:3000>
requestBroker = Broker<tcp/192.168.2.100:5001>
dependents = a Opentalk.LocalDependents[1]
Arguments:
aMessage = a Message with selector: #contenido and arguments: #()
Context PC = 5
----------------------------------------------------------------------
CeldaView>>imagenADibujar
Receiver:
a CeldaView
Instance Variables:
container = nil
eventHandlers = nil
model = a Opentalk.RemoteObject
controller = nil
properties = nil
posicionRelativa = 1@1
contenedorDeImagenes = an ImageContenedor
Temporaries:
visitorContenido = nil
contenido = nil
Context PC = 5
----------------------------------------------------------------------
CeldaView>>displayOn:
Receiver:
a CeldaView
Instance Variables:
container = nil
eventHandlers = nil
model = a Opentalk.RemoteObject
controller = nil
properties = nil
posicionRelativa = 1@1
contenedorDeImagenes = an ImageContenedor
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Temporaries:
pos = 1@1
columna = 1
fila = 1
Context PC = 22
----------------------------------------------------------------------
optimized [] in MapaView>>displayOn:
Receiver:
an UndefinedObject
Arguments:
each = a CeldaView
Temporaries:
.aGraphicsContext = a ScreenGraphicsContext
Context PC = 7
----------------------------------------------------------------------
OrderedCollection>>do:
Receiver:
an OrderedCollection
Instance Variables:
firstIndex = 1
lastIndex = 49
Arguments:
aBlock = BlockClosure [] in MapaView>>displayOn:
Temporaries:
index = 1
Context PC = 17
----------------------------------------------------------------------
MapaView>>displayOn:
Receiver:
a MapaView
Instance Variables:
container = a BorderedWrapper on: a MapaView
eventHandlers = nil
model = a Opentalk.RemoteObject
controller = a MapaController
properties = nil
celdasView = an OrderedCollection[49]
contenedorDeImagenes = an ImageContenedor
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Context PC = 10
----------------------------------------------------------------------
BorderedWrapper>>displayOn:
Receiver:
a BorderedWrapper
Instance Variables:
container = a SpecWrapper on: a BorderedWrapper on: a MapaView
eventHandlers = nil
component = a MapaView
origin = 10@10
layout = nil
extent = 351@351
insetDisplayBox = 11@11 corner: 360@360
border = a WinXPBorder
inset = nil
insideColor = nil
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Temporaries:
bx = 10@10 corner: 361@361
clipBox = 203@124 corner: 361@129
insetClipBox = 203@124 corner: 360@129
Context PC = 64
----------------------------------------------------------------------
SpecWrapper(Wrapper)>>displayOn:
Receiver:
a SpecWrapper
Instance Variables:
container = a CompositePart
eventHandlers = nil
component = a BorderedWrapper on: a MapaView
widget = a MapaView
widgetState = a WidgetState
effectivelyVisible = true
decorator = nil
dependents = nil
dropTarget = nil
spec = an ArbitraryComponentSpec
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Context PC = 7
----------------------------------------------------------------------
SpecWrapper(WidgetWrapper)>>displayOn:
Receiver:
a SpecWrapper
Instance Variables:
container = a CompositePart
eventHandlers = nil
component = a BorderedWrapper on: a MapaView
widget = a MapaView
widgetState = a WidgetState
effectivelyVisible = true
decorator = nil
dependents = nil
dropTarget = nil
spec = an ArbitraryComponentSpec
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Temporaries:
lp = nil
Context PC = 26
----------------------------------------------------------------------
CompositePart>>displayOn:
Receiver:
a CompositePart
Instance Variables:
container = an ApplicationWindow 740
eventHandlers = nil
components = an OrderedCollection[27]
preferredBounds = 0@0 corner: 741@531
Arguments:
aGraphicsContext = a ScreenGraphicsContext
Temporaries:
clipBox = 203@124 corner: 547@129
i = 2
component = a SpecWrapper on: a BorderedWrapper on: a MapaView
Context PC = 30
----------------------------------------------------------------------
WindowDisplayPolicy>>displayDamageList:in:
Receiver:
a WindowDisplayPolicy
Arguments:
aDamageList = an Array[1]
aWindow = an ApplicationWindow 740
Temporaries:
windowGraphicsContext = a ScreenGraphicsContext
windowVisual = a CompositePart
i = 2
i = 1
Context PC = 73
----------------------------------------------------------------------
ApplicationWindow(ScheduledWindow)>>displayDamageEvent:
Receiver:
an ApplicationWindow
Instance Variables:
handle = a GraphicsHandle(740)
width = 750
height = 550
background = (ColorValue brightness: 0.984007)
inputOrigin = 137@94
creationOrigin = 137@94
sensor = an EventSensor
iconic = false
windowType = #normal
effectiveWindowType = nil
statusLineHeight = 0
allowsStatusLine = true
mapped = true
eventHandlers = nil
windowManager = a WindowManager
label = 'RPG - juegazo - mturing.CAQUITA::tr'
icon = an Icon
minimumSize = 750@550
maximumSize = 750@550
component = a CompositePart
lookPreferences = a LookPreferences[7]
paintPreferences = nil
edgeDecorationPolicy = a WinXPBorderDecorationPolicy
widgetPolicy = a WinXPWidgetPolicy
controller = an ApplicationStandardSystemController
model = a JuegoAplicacion
damageRepairPolicy = a WindowDisplayPolicy
masterWindow = nil
keyboardProcessor = a KeyboardProcessor
application = nil
sendWindowEvents = nil
receiveWindowEvents = nil
windowEventBlock = nil
damageRepairIsLazy = true
activationNotification = true
isEventDriven = nil
toolbarVisible = true
dropTarget = nil
dragDropInProgress = nil
dragDropTracker = nil
Arguments:
aDamageList = an Array[1]
Context PC = 7
----------------------------------------------------------------------
ApplicationWindow(ScheduledWindow)>>checkForEvents
Receiver:
an ApplicationWindow
Instance Variables:
handle = a GraphicsHandle(740)
width = 750
height = 550
background = (ColorValue brightness: 0.984007)
inputOrigin = 137@94
creationOrigin = 137@94
sensor = an EventSensor
iconic = false
windowType = #normal
effectiveWindowType = nil
statusLineHeight = 0
allowsStatusLine = true
mapped = true
eventHandlers = nil
windowManager = a WindowManager
label = 'RPG - juegazo - mturing.CAQUITA::tr'
icon = an Icon
minimumSize = 750@550
maximumSize = 750@550
component = a CompositePart
lookPreferences = a LookPreferences[7]
paintPreferences = nil
edgeDecorationPolicy = a WinXPBorderDecorationPolicy
widgetPolicy = a WinXPWidgetPolicy
controller = an ApplicationStandardSystemController
model = a JuegoAplicacion
damageRepairPolicy = a WindowDisplayPolicy
masterWindow = nil
keyboardProcessor = a KeyboardProcessor
application = nil
sendWindowEvents = nil
receiveWindowEvents = nil
windowEventBlock = nil
damageRepairIsLazy = true
activationNotification = true
isEventDriven = nil
toolbarVisible = true
dropTarget = nil
dragDropInProgress = nil
dragDropTracker = nil
Temporaries:
damage = an Array[1]
Context PC = 33
----------------------------------------------------------------------
optimized [] in [] in WindowManager>>repairDamagesExcept:
Receiver:
an UndefinedObject
Arguments:
w = an ApplicationWindow 740
Temporaries:
.obj = nil
Context PC = 10
----------------------------------------------------------------------
OrderedCollection>>do:
Receiver:
an OrderedCollection
Instance Variables:
firstIndex = 3
lastIndex = 5
Arguments:
aBlock = BlockClosure [] in [] in WindowManager>>repairDamagesExcept:
Temporaries:
index = 3
Context PC = 17
----------------------------------------------------------------------
optimized [] in WindowManager>>repairDamagesExcept:
Receiver:
an UndefinedObject
Temporaries:
.self = a WindowManager
.obj = nil
Context PC = 13
----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
a BlockClosure
Instance Variables:
method = CompiledBlock [] in WindowManager>>repairDamagesExcept:
outerContext = nil
copiedValues = an Array[2]
Arguments:
anExceptionSelector = ClosedWindowNotification
handlerBlock = BlockClosure [] in WindowManager>>repairDamagesExcept:
Context PC = 18
----------------------------------------------------------------------
WindowManager>>repairDamagesExcept:
Receiver:
a WindowManager
Instance Variables:
windows = an OrderedCollection[3]
activeController = nil
interruptLock = false
outstandingMetaOrDamage = false
openInProgress = false
eventQueue = an EventQueue
baseProcess = a Process in Semaphore>>wait
dontFilterEvents = false
Arguments:
obj = nil
Context PC = 16
----------------------------------------------------------------------
WindowManager>>repairDamages
Receiver:
a WindowManager
Instance Variables:
windows = an OrderedCollection[3]
activeController = nil
interruptLock = false
outstandingMetaOrDamage = false
openInProgress = false
eventQueue = an EventQueue
baseProcess = a Process in Semaphore>>wait
dontFilterEvents = false
Context PC = 5
----------------------------------------------------------------------
WindowManager>>processNextEvent
Receiver:
a WindowManager
Instance Variables:
windows = an OrderedCollection[3]
activeController = nil
interruptLock = false
outstandingMetaOrDamage = false
openInProgress = false
eventQueue = an EventQueue
baseProcess = a Process in Semaphore>>wait
dontFilterEvents = false
Temporaries:
event = an ExposeEvent
Context PC = 12
----------------------------------------------------------------------
optimized [] in [] in WindowManager>>newProcess
Receiver:
an UndefinedObject
Temporaries:
.self = a WindowManager
Context PC = 13
----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
a BlockClosure
Instance Variables:
method = CompiledBlock [] in [] in WindowManager>>newProcess
outerContext = nil
copiedValues = a WindowManager
Arguments:
anExceptionSelector = TerminateException
handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess
Context PC = 18
----------------------------------------------------------------------
optimized [] in WindowManager>>newProcess
Receiver:
an UndefinedObject
Temporaries:
.self = a WindowManager
Context PC = 15
----------------------------------------------------------------------
BlockClosure>>on:do:
Receiver:
a BlockClosure
Instance Variables:
method = CompiledBlock [] in WindowManager>>newProcess
outerContext = nil
copiedValues = a WindowManager
Arguments:
anExceptionSelector = TerminateException
handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority:
Context PC = 18
----------------------------------------------------------------------
optimized [] in Process class>>forBlock:priority:
Receiver:
an UndefinedObject
Temporaries:
.aBlock = BlockClosure [] in WindowManager>>newProcess
Context PC = 9
Gente, yo me quedé con ganas de ir a la reunión,
espero poder asistir a la próxmima.
Elvio, ¿me recordás como era el tema del cardúmen?
Saludos
Matías
--- Elvio Fernandez <elvio.fernandez@...>
escribió:
> Hola gente,
>
> Despues de todo lo que se charlo en la reunion y
> refrescar el caso de el
> famoso cardumen, me hizo recordar algo que hace
> mucho tiempo queria
> desarrollar (a manera de hobie) pero no lo hice
> porque porque asumi que
> tenia que tener una una compu grossa para hacer
> corre el tema.
> La idea era (nada nuevo, nada que no se haya hecho
> ya) intentar desarrollar
> una simulacion para ver como afecta la gravedad a
> los cuerpos en el espacio.
> La intencion no era modelar lo que sucede (de esto
> tambien se charlo en la
> reunion), sino que los objetos en el espacio
> interactuen solos y ver que
> pasaba.
>
> Existe una teoria acerca de como fue el origen del
> sistema solar, y enuncia
> que en los primeros estadios solo habia una gran
> nube de gas y polvo. Gran
> parte de esa materia se fue atrayendo por la
> gravedad misma hasta conformar
> como un especie de planeta que iba creciendo. A
> medida que esto crecia,
> ejercia mas atraccion de la materia circundante
> chupandosela. Este proceso
> continuaba (es un poco mas complejo pero me detengo
> aca porque me desvia de
> la idea) hasta que colapsaba gravitatoriamente y se
> generaba una fusion
> nuclear: el sol. Con toda la materia lejana a este,
> que no era absorvida,
> sucedia lo mismo, se formaron planetoides que por
> tener una masa bastante
> menor al sol no se dio la fusion.
>
> Segun parece en el momento de atraccion de las
> particulas en la formacion
> del planetoide se debia ver un efecto tipo remolino
> algo parecido a la forma
> de la Via Lactea.
>
> Por supuesto que mi idea no era hacer algo tan
> grande. Solo era poner
> alrededor 10000 corpusculos en el espacio y ver que
> pasaba con la accion de
> la gravedad. Supuestamente los corpusculos deberian
> ir aglutinandose en mas
> grandes y, estos macro corpusculos ir atrayendo a
> otros de menor masa y todo
> asi hasta conformar un planetoide.
>
> Al margen de que mi idea es bastante fantasma y que
> probablemente requeria
> de una maquina con bastante procesamiento. Y, que
> ademas abandoné mi ilusion
> de llevarla a cabo, el tema del cardumen aparecio de
> nuevo con otra forma.
>
> ¿Que pasa con un micro corpusculo una vez que se
> pega con otro y pasa a ser
> un corpusculo mas grande?
> Un cardumen es un conjunto de peces pero, un
> cardumen "es" solo si esta
> compuesto de peces. Cosa distinta que se convirtiera
> en un mega pez. ¿Se
> entiende a donde voy?
> Cuando un micro corpusculo se aglutina con otro y
> sucesivamente otros se van
> pegando, la fuerza de gravedad los comprime para
> fusionarlos (no en el
> sentido de fusion nuclear sino en el sentido de
> amalgamiento) se convierten
> en algo mas grande para ser un solo corpusculo.
>
> Aunque no vaya a implementar esto, me parece
> interesante el tema: ¿Estoy
> viendo un fantasma?
>
> Saludos
>
> Elvio
>
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
Aqui va la foto de la reunion, espero la disfruten...
Elvio te pasaste con los ravioles J EXCELENTES!
Hago un resumen de los puntos que quedaron pendientes:
-Reunion para el refactoring del sitio
--Entregables y/o info que podemos subir en la pagina: con esto me refiero a que los entregables que dice Angel es un poco la info que deberiamos discutir y subir a la pagina.
--Seccion “¿De que estamos hablando?” (asi era?)
-Carnets de smalltalking! (para la semana entrante se los envio)
-Creo que nos olvidamos de ver el tema de la asociacion, hay que cubrir algunos cargos que hoy no estan cubiertos...
Saludos a todos!
Leo
De: smalltalking@... [mailto:smalltalking@...] En nombre de Elvio Fernandez Enviado el: Lunes, 11 de Junio de 2007 10:00 Para: smalltalking@... Asunto: Re: [objetos] Reunion smalltalking - AGRADECIMIENTO
jejeje!!!
Ocho horas duro la reunion!!! Ocho horas!!! Qué predisposicion Alejandro! (de todos). Lo destruimos a preguntas. La proxima reunion sachet de suero y jornada de 12 hrs. :-)
Hola gente.
La reunión estuvo muy interesante por cierto, se tocaron solo algunos
temas y como era de esperar quedaron muchas cosas por seguir hablando
sobre lo visto, es que hay tanto para ver y mas si lo tenés a Alejandro
enfrente que es un libro abierto!!! Concuerdo en que le metió unas pilas
bárbaras a pesar de su estado gripal. Y Elvio un anfitrión de 10!
Saludoss
Leonardo De Marco escribió:
>
> Gente!
>
> Primera reunion de muchas esperemos!
>
> Aqui va la foto de la reunion, espero la disfruten...
>
> Elvio te pasaste con los ravioles J EXCELENTES!
>
> Hago un resumen de los puntos que quedaron pendientes:
>
> -Reunion para el refactoring del sitio
>
> --Entregables y/o info que podemos subir en la pagina: con esto me
> refiero a que los entregables que dice Angel es un poco la info que
> deberiamos discutir y subir a la pagina.
>
> --Seccion “¿De que estamos hablando?” (asi era?)
>
> -Carnets de smalltalking! (para la semana entrante se los envio)
>
> -Creo que nos olvidamos de ver el tema de la asociacion, hay que
> cubrir algunos cargos que hoy no estan cubiertos...
>
> Saludos a todos!
>
> Leo
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
Despues de todo lo que se charlo en la reunion y refrescar el caso de el famoso cardumen, me hizo recordar algo que hace mucho tiempo queria desarrollar (a manera de hobie) pero no lo hice porque porque asumi que tenia que tener una una compu grossa para hacer corre el tema.
La idea era (nada nuevo, nada que no se haya hecho ya) intentar desarrollar una simulacion para ver como afecta la gravedad a los cuerpos en el espacio. La intencion no era modelar lo que sucede (de esto tambien se charlo en la reunion), sino que los objetos en el espacio interactuen solos y ver que pasaba.
Existe una teoria acerca de como fue el origen del sistema solar, y enuncia que en los primeros estadios solo habia una gran nube de gas y polvo. Gran parte de esa materia se fue atrayendo por la gravedad misma hasta conformar como un especie de planeta que iba creciendo. A medida que esto crecia, ejercia mas atraccion de la materia circundante chupandosela. Este proceso continuaba (es un poco mas complejo pero me detengo aca porque me desvia de la idea) hasta que colapsaba gravitatoriamente y se generaba una fusion nuclear: el sol. Con toda la materia lejana a este, que no era absorvida, sucedia lo mismo, se formaron planetoides que por tener una masa bastante menor al sol no se dio la fusion.
Segun parece en el momento de atraccion de las particulas en la formacion del planetoide se debia ver un efecto tipo remolino algo parecido a la forma de la Via Lactea.
Por supuesto que mi idea no era hacer algo tan grande. Solo era poner alrededor 10000 corpusculos en el espacio y ver que pasaba con la accion de la gravedad. Supuestamente los corpusculos deberian ir aglutinandose en mas grandes y, estos macro corpusculos ir atrayendo a otros de menor masa y todo asi hasta conformar un planetoide.
Al margen de que mi idea es bastante fantasma y que probablemente requeria de una maquina con bastante procesamiento. Y, que ademas abandoné mi ilusion de llevarla a cabo, el tema del cardumen aparecio de nuevo con otra forma.
¿Que pasa con un micro corpusculo una vez que se pega con otro y pasa a ser un corpusculo mas grande? Un cardumen es un conjunto de peces pero, un cardumen "es" solo si esta compuesto de peces. Cosa distinta que se convirtiera en un mega pez. ¿Se entiende a donde voy?
Cuando un micro corpusculo se aglutina con otro y sucesivamente otros se van pegando, la fuerza de gravedad los comprime para fusionarlos (no en el sentido de fusion nuclear sino en el sentido de amalgamiento) se convierten en algo mas grande para ser un solo corpusculo.
Aunque no vaya a implementar esto, me parece interesante el tema: ¿Estoy viendo un fantasma?
Aqui va la foto de la reunion, espero la
disfruten...
Elvio te pasaste con los ravioles J EXCELENTES!
Hago un resumen de los puntos que quedaron
pendientes:
-Reunion para el refactoring del sitio
--Entregables y/o info que podemos subir
en la pagina: con esto me refiero a que los entregables que dice Angel es un
poco la info que deberiamos discutir y subir a la pagina.
--Seccion “¿De que estamos hablando?”
(asi era?)
-Carnets de smalltalking! (para la semana
entrante se los envio)
-Creo que nos olvidamos de ver el tema de
la asociacion, hay que cubrir algunos cargos que hoy no estan cubiertos...
Saludos a todos!
Leo
De:
smalltalking@... [mailto:smalltalking@...] En nombre de Elvio Fernandez Enviado el: Lunes, 11 de Junio de
2007 10:00 Para:
smalltalking@... Asunto: Re: [objetos] Reunion
smalltalking - AGRADECIMIENTO
jejeje!!!
Ocho horas duro la reunion!!! Ocho horas!!!
Qué predisposicion Alejandro! (de todos). Lo destruimos a preguntas.
La proxima reunion sachet de suero y jornada de 12 hrs. :-)
Ocho horas duro la reunion!!! Ocho horas!!! Qué predisposicion Alejandro! (de todos). Lo destruimos a preguntas. La proxima reunion sachet de suero y jornada de 12 hrs. :-)
Ayer se realizo la reunion de Smalltalking. Desde aca, un agracimiento a Elvio, que nos dio de comer, tomar, y el lugar para la reunion. Grande la reunion, muy interesante, abusamos un poco de un Alejandro, engripadisimo, gracias a el tambien por habernos "soportado" por horas.
Creo que en la proxima reunion va a poder ir emergiendo algun entregable, ya sea texto, puntos a discutir, lineas a investigar. Algo ya fue surgiendo ayer, pero nos falta bajarlo a un entregable.
Pido confirmacion de la gente que va a concurrir asi calculo el volumen de comida. Hasta el momento de votacion conte a:
Gaston Dall'Oglio Angle Java Lopez Leo De Marco Esteban Robles Luna Alejandro Reimondo Juan (????? avisame si venis)
Ale y/o Leo
No se olviden de traer los fuentes del sitio de smalltalking asi me comentan que es lo necesario para agregar/reestructurar, etc.
Ademas hace mas o menos dos meses un chico de aca de La Plata (Sebastian Scribano creo que era) estuvo preguntando por algunas implementaciones de Ale sobre el googleearth (creo) y andaba necesitando una copia de VS, se acuerdan?? traiganse una porque estoy tratando de contactarlo para que venga aunque sea a recibirla, y por que no, me hago yo tambien con una copia.
Bueno chicos desde ya feliz viaje y los espero con una raviolada.
Un abrazo
Elvio
No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.472 / Virus Database: 269.8.11/838 - Release Date: 07/06/2007 02:21 p.m.
No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.472 / Virus Database: 269.8.13/842 - Release Date: 09/06/2007 10:46 a.m.
Pido confirmacion de la gente que va a concurrir asi calculo el volumen de comida. Hasta el momento de votacion conte a:
Gaston Dall'Oglio Angle Java Lopez Leo De Marco Esteban Robles Luna Alejandro Reimondo Juan (????? avisame si venis)
Ale y/o Leo
No se olviden de traer los fuentes del sitio de smalltalking asi me comentan que es lo necesario para agregar/reestructurar, etc.
Ademas hace mas o menos dos meses un chico de aca de La Plata (Sebastian Scribano creo que era) estuvo preguntando por algunas implementaciones de Ale sobre el googleearth (creo) y andaba necesitando una copia de VS, se acuerdan?? traiganse una porque estoy tratando de contactarlo para que venga aunque sea a recibirla, y por que no, me hago yo tambien con una copia.
Bueno chicos desde ya feliz viaje y los espero con una raviolada.
Un abrazo
Elvio
No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.472 / Virus Database: 269.8.11/838 - Release Date: 07/06/2007 02:21 p.m.
La idea de la reunion es que comienece con un almuerzo, digamos entre las 12 y la 13 hs. El viaje en los bondis que van por autopista demoran alrededor de 50 min.
Pido confirmacion de la gente que va a concurrir asi calculo el volumen de comida. Hasta el momento de votacion conte a:
Gaston Dall'Oglio Angle Java Lopez Leo De Marco Esteban Robles Luna Alejandro Reimondo Juan (????? avisame si venis)
Ale y/o Leo
No se olviden de traer los fuentes del sitio de smalltalking asi me comentan que es lo necesario para agregar/reestructurar, etc.
Ademas hace mas o menos dos meses un chico de aca de La Plata (Sebastian Scribano creo que era) estuvo preguntando por algunas implementaciones de Ale sobre el googleearth (creo) y andaba necesitando una copia de VS, se acuerdan?? traiganse una porque estoy tratando de contactarlo para que venga aunque sea a recibirla, y por que no, me hago yo tambien con una copia.
Bueno chicos desde ya feliz viaje y los espero con una raviolada.
Un abrazo
Elvio
No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.472 / Virus Database: 269.8.11/838 - Release Date: 07/06/2007 02:21 p.m.
Pido confirmacion de la gente que va a concurrir asi calculo el volumen de comida. Hasta el momento de votacion conte a:
Gaston Dall'Oglio Angle Java Lopez Leo De Marco Esteban Robles Luna Alejandro Reimondo Juan (????? avisame si venis)
Ale y/o Leo
No se olviden de traer los fuentes del sitio de smalltalking asi me comentan que es lo necesario para agregar/reestructurar, etc.
Ademas hace mas o menos dos meses un chico de aca de La Plata (Sebastian Scribano creo que era) estuvo preguntando por algunas implementaciones de Ale sobre el googleearth (creo) y andaba necesitando una copia de VS, se acuerdan?? traiganse una porque estoy tratando de contactarlo para que venga aunque sea a recibirla, y por que no, me hago yo tambien con una copia.
Bueno chicos desde ya feliz viaje y los espero con una raviolada.
Pido confirmacion de la gente que va a concurrir asi calculo el volumen de comida. Hasta el momento de votacion conte a:
Gaston Dall'Oglio Angle Java Lopez Leo De Marco Esteban Robles Luna Alejandro Reimondo Juan (????? avisame si venis)
Ale y/o Leo
No se olviden de traer los fuentes del sitio de smalltalking asi me comentan que es lo necesario para agregar/reestructurar, etc.
Ademas hace mas o menos dos meses un chico de aca de La Plata (Sebastian Scribano creo que era) estuvo preguntando por algunas implementaciones de Ale sobre el googleearth (creo) y andaba necesitando una copia de VS, se acuerdan?? traiganse una porque estoy tratando de contactarlo para que venga aunque sea a recibirla, y por que no, me hago yo tambien con una copia.
Bueno chicos desde ya feliz viaje y los espero con una raviolada.
Un abrazo
Elvio
No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.472 / Virus Database: 269.8.11/838 - Release Date: 07/06/2007 02:21 p.m.
Elvio Fernandez escribió:
> Muchachos,
>
> Pido confirmacion de la gente que va a concurrir asi calculo el
> volumen de comida.
> Hasta el momento de votacion conte a:
>
> Gaston Dall'Oglio
> Angle Java Lopez
> Leo De Marco
> Esteban Robles Luna
> Alejandro Reimondo
> Juan (????? avisame si venis)
>
>
Presente! Yo voy, ya estudié toda la implementación de la máquina
virtual por si me tiras una pregunta :-P
>
> Ale y/o Leo
>
> No se olviden de traer los fuentes del sitio de smalltalking asi me
> comentan que es lo necesario para agregar/reestructurar, etc.
Si puedo doy una mano.
>
> Ademas hace mas o menos dos meses un chico de aca de La Plata
> (Sebastian Scribano creo que era) estuvo preguntando por algunas
> implementaciones de Ale sobre el googleearth (creo) y andaba
> necesitando una copia de VS, se acuerdan?? traiganse una porque estoy
> tratando de contactarlo para que venga aunque sea a recibirla, y por
> que no, me hago yo tambien con una copia.
>
Si se puede, yo también quisiera una copia, he tratado de bajarlo en
internet y no lo consigo. Tengo entendido que Cincom lo adquirió y lo
hizo desaparecer....
>
> Bueno chicos desde ya feliz viaje y los espero con una raviolada.
>
> Un abrazo
>
> Elvio
>
Un abrazo Elvio, nos vemos el domingo.
PD: yo llevo un grabador por si se quiere grabar la reunión.
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
Pido confirmacion de la gente que va a concurrir asi calculo el volumen de comida. Hasta el momento de votacion conte a:
Gaston Dall'Oglio Angle Java Lopez Leo De Marco Esteban Robles Luna
Alejandro Reimondo Juan (????? avisame si venis)
Ale y/o Leo
No se olviden de traer los fuentes del
sitio de smalltalking asi me comentan que es lo necesario para
agregar/reestructurar, etc.
Ademas hace mas o menos dos meses
un chico de aca de La Plata (Sebastian Scribano creo que era) estuvo
preguntando por algunas implementaciones de Ale sobre el googleearth
(creo) y andaba necesitando una copia de VS, se acuerdan?? traiganse
una porque estoy tratando de contactarlo para que venga aunque sea a
recibirla, y por que no, me hago yo tambien con una copia.
Bueno chicos desde ya feliz viaje y los espero con una raviolada.
Lo que trato de hacer, es la típica cámara en tercera persona de todo juego de carreras de autos.
Todo lo que tengas o puedas comentar sobre el tema será bienvenido, sobre si hacerlo publico o privado, creo que eso debería
decidirlo Ale o Leo que son los moderadores de la lista.
Yo tampoco deseo abusar de la lista, es por eso que lo puese como OFFTOPIC, además de las pocas ganas de colaborar del foro de Games
Saludos kiko
Elvio Fernandez <elvio.fernandez@...> escribió:
Hola kiko,
Lo que no entiendo es como funciona tu camara. Es decir, imaginate que tenes una nave que se mueve libremente en el espacio y tengo una camara enganchada a la cola. Cada vez que la nave rote o se desplase la camara deberia calcular el delta del desplazamiento y luego el delta (por decirlo de alguna manera) de la rotacion y actualizarlo en la camara.
Otra cosa seria que tu camara este enganchada a la nave pero que ademas de seguirla pueda rotar libremente alrededor de la nave. Ver por encima, por los costados, por debajo, etc. Te comento esto porque la implementacion que pegaste de Ogre utliza Quaternions y generalmente, estos, se usan para eso (tambien se pueden utilizar para otras cosas), para realizar rotaciones suaves. Intuyo era esto a lo que se referian los del foro.
Para no abusar de la lista voy a cortar aca. Si interesa puedo
explicar un poquito la idea de las rotaciones con quaterniones y la interpolaciones. Ademas, tengo algo de material sobre el tema.
Saludos
Elvio
Preguntá. Respondé. Descubrí. Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta). ¡Probalo ya!
Los "saltos", los observaste en la implementación de la pecera con Genesis3D ?
Hay no es tan notorio pues la velocidad de los objetos no es tan
grande.
You wrote:
Con ese mismo modelo e implementación, estas buscando que no se observe?
O lo estas buscando sobre otra implementación? (y/o sobre otro modelo 3D)
Ese mismo modelo lo porte a MT para no invertir mucho tiempo en ese punto y me di cuenta del problema de inmediato.
Como parte de mi aprendizaje sobre newton + genesis3D, estoy utilizando un modelo de vehiculo que provee NGD, es decir este provee lo que se llama un VehicleJoint.
Es te VehicleJoint es solo una interfase que simula el comportamiento de un vehiculo.
Como dijo julio jerez autor de NGD, elVehicleJoint no es una lámparamágica que se frote y tengo un vehiculo, pero si proporciona la parte mas difícil de hacer.
Ahora volviendo a la cámara, esta es la respuesta concreta en el foro de Vjuegos:
El problema se debe a que como vas calculando la posición de la cámara a cada ciclo con respecto a tu objeto, cualquier movimiento minimo influirá aun cuando sea algo muy rápido, no se en donde tienes la cámara en relación con tu objeto, pero por ejemplo si estuvieras orbitándola a cierta distancia de tu auto, cualquier mínima variación en el ángulo de este se traduciría en varias unidades de medida para la cámara.
Si el problema fuera este, lo mejor que se puede hacer es no mover la cámara inmediatamente, sino calcular cual sería ese punto final donde quieres que se coloque y mover la cámara con interpolación y aceleración no lineal, asi la cámara tendría un retrazo al moverse y tendrías un movimiento suave en todo momento.
Que por lo que entiendo es algo similar a lo que vos decís, sobre el resorte entre la cámara y el vehiculo.
El punto es que no entiendoen que parte de la implementación de OgreNewton que pegué esta la famosa interpolación y aceleración no lineal.
Debo decir que estoy un poco oxidado sobre los temas de calculo
Saludos kiko
"Alejandro F. Reimondo" <aleReimondo@...> escribió:
kiko,
Los "saltos", los observaste en la implementación de la pecera con Genesis3D ?
Con ese mismo modelo e implementación, estas buscando que no se observe?
O lo estas buscando sobre otra implementación? (y/o sobre otro modelo 3D)
Segun entiendo, si el objeto a seguir se mueve a saltos (en lineas rectas
y/o doblando bruscamente) esto se traducirá a la cámara que toma
su posición del objeto a seguir.
Si los objetos se te mueven bruscamente quizás deberás relajar la
aceleración de la cámara, es decir, pegar un resorte entre
la cámara y el objeto, para suavizar sus movimientos.
Así trataría de resolverlo yo, de todas formas, creo oportuno decirte que
sería recomendable revisar el modelo de los objetos que se están
moviendo para ver si tu modelo los mueve muy bruscamente y si es
Subject: [objetos] OFFTOPIC: Interpolacion de la Cámara
Hola Gente
Disculpen que pregunte por este tema que no esta relacionado directamente con ST, el punto es que no puedo entender donde esta el secreto para tener una cámara que siga a mi vehiculo de manera correcta.
Yo implemente la solución como la tiene Ale en Genesis3D, de primer momento encontré que el movimiento no era fluido, es decir la cámara va dando pequeños saltos
según aumenta la velocidad.
En aquel momento no quise invertir tiempo en este punto y lo deje como estaba.
Ahora quiero mejorar esto y no encuentro la manera de hacerlo.
Preguntando en el foro Vjuegos.org me comentaron que tenía que hacer interpolación para obtener un movimiento fluido.
Me puse a investigar de qué se trata la interpolación de la que hablaban, pero no encontré gran cosa.
Por lo que entiendo interpolar es encontrar un punto en un intervalo a partir de sus extremos, en mi caso la posición de la cámara y el vehiculo.
Luego encontré como lo hacen en la demo de NewtonOgre, pero sigo sin entender donde esta el secreto.
Se supone que el secreto esta en como calculo el punto a moverme, ya que se supone que eso es lo que provoca los pequeños saltos.
Lo que no entiendo es como funciona tu camara. Es decir, imaginate que tenes una nave que se mueve libremente en el espacio y tengo una camara enganchada a la cola. Cada vez que la nave rote o se desplase la camara deberia calcular el delta del desplazamiento y luego el delta (por decirlo de alguna manera) de la rotacion y actualizarlo en la camara.
Otra cosa seria que tu camara este enganchada a la nave pero que ademas de seguirla pueda rotar libremente alrededor de la nave. Ver por encima, por los costados, por debajo, etc. Te comento esto porque la implementacion que pegaste de Ogre utliza Quaternions y generalmente, estos, se usan para eso (tambien se pueden utilizar para otras cosas), para realizar rotaciones suaves.
Intuyo era esto a lo que se referian los del foro.
Para no abusar de la lista voy a cortar aca. Si interesa puedo explicar un poquito la idea de las rotaciones con quaterniones y la interpolaciones. Ademas, tengo algo de material sobre el tema.
Subject: [objetos] Opentalk en arquitectura cliente-servidor
Hola Lista, somos dos chicos que estan estudiando en la facultad de informática de la UNLP y decidimos hacer para una materia un juego y ahora lo queremos hacer andar en una red. Averiguando con gente que ha hecho programas de este estilo decidimos hacerlo usando opentalk. Pero tenemos unos problemillas.
Cuento más o menos para que se entienda: Tenemos un Servidor que está escuchando en el puerto 3000 y un cliente que está en el 5000. Levantamos un servidor y un cliente con sus vistas:
Se instancia correcto la ventana del servidor y la ventana del cliente. En la ventana del cliente, están los personajes que son traídos desde el servidor, y por lo tanto la conexión sabemos que se hizo con éxito. Por lo menos para mostrar los personajes del juego.
Una vez en el juego con cualquier personaje:
después de un tiempo (creemos que es cuando redibuja)
o cuando se mueve otro personaje. o cuando nos movemos nosotros ocurre que se rompe todo. El mensaje que nos da es: "Must be running to send remote messages!" Una suposicion es que se haya cerrado la conexión, pero nosotros no lo hicimos. Además leyendo "OpentalkDevGuide" leímos que por defecto la conexión se mantiene durante 20 minutos. Alguien sabe cual puede ser el problema?, espero que se haya entendido algo, cualquier cosa avisen y volvemos a explicar nuestro problema de otra forma.
Muchas gracias por todo. Nos vemos Santiago y Lautaro
Subject: [objetos] OFFTOPIC: Interpolacion de la Cámara
Hola Gente
Disculpen que pregunte por este tema que no esta relacionado directamente con ST, el punto es que no puedo entender donde esta el secreto para tener una cámara que siga a mi vehiculo de manera correcta.
Yo implemente la solución como la tiene Ale en Genesis3D, de primer momento encontré que el movimiento no era fluido, es decir la cámara va dando pequeños saltos según aumenta la velocidad.
En aquel momento no quise invertir tiempo en este punto y lo deje como estaba.
Ahora quiero mejorar esto y no encuentro la manera de hacerlo.
Preguntando en el foro Vjuegos.org me comentaron que tenía que hacer interpolación para obtener un movimiento fluido.
Me puse a investigar de qué se trata la interpolación de la que hablaban, pero no encontré gran cosa.
Por lo que entiendo interpolar es encontrar un punto en un intervalo a partir de sus extremos, en mi caso la posición de la cámara y el vehiculo.
Luego encontré como lo hacen en la demo de NewtonOgre, pero sigo sin entender donde esta el secreto.
Se supone que el secreto esta en como calculo el punto a moverme, ya que se supone que eso es lo que provoca los pequeños saltos.
Hola Lista, somos dos chicos que estan estudiando en la facultad de informática de la UNLP y decidimos hacer para una materia un juego y ahora lo queremos hacer andar en una red. Averiguando con gente que ha hecho programas de este estilo decidimos hacerlo usando opentalk. Pero tenemos unos problemillas.
Cuento más o menos para que se entienda: Tenemos un Servidor que está escuchando en el puerto 3000 y un cliente que está en el 5000.
Levantamos un servidor y un cliente con sus vistas:
Se instancia correcto la ventana del servidor y la ventana del cliente. En la ventana del cliente, están los personajes que son traídos desde el servidor, y por lo tanto la conexión sabemos que se hizo con éxito. Por lo menos para mostrar los personajes del juego.
Una vez en el juego con cualquier personaje:
después de un tiempo (creemos que es cuando redibuja)
o cuando se mueve otro personaje.
o cuando nos movemos nosotros ocurre que se rompe todo. El mensaje que nos da es: "Must be running to send remote messages!" Una suposicion es que se haya cerrado la conexión, pero nosotros no lo hicimos. Además leyendo "OpentalkDevGuide" leímos que por defecto la conexión se mantiene durante 20 minutos.
Alguien sabe cual puede ser el problema?, espero que se haya entendido algo, cualquier cosa avisen y volvemos a explicar nuestro problema de otra forma.
Muchas gracias por todo.
Nos vemos Santiago y Lautaro
Disculpen que pregunte por este tema que no esta relacionado directamente con ST, el punto es que no puedo entender donde esta el secreto para tener una cámara que siga a mi vehiculo de manera correcta.
Yo implemente la solución como la tiene Ale en Genesis3D, de primer momento encontré que el movimiento no era fluido, es decir la cámara va dando pequeños saltos según aumenta la velocidad.
En aquel momento no quise invertir tiempo en este punto y lo deje como estaba.
Ahora quiero mejorar esto y no encuentro la manera de hacerlo.
Preguntando en el foro Vjuegos.org me comentaron que tenía que hacer interpolación para obtener un movimiento fluido.
Me puse a investigar de qué se trata la interpolación de la que hablaban, pero no encontré gran cosa.
Por lo que entiendo interpolar es encontrar un punto en un intervalo a partir de sus
extremos, en mi caso la posición de la cámara y el vehiculo.
Luego encontré como lo hacen en la demo de NewtonOgre, pero sigo sin entender donde esta el secreto.
Se supone que el secreto esta en como calculo el punto a moverme, ya que se supone que eso es lo que provoca los pequeños saltos.
Gente, cuenta regresiva, estos ultimos
dias estuve a full, espero que funke todo asi les puedo mostrar el utra mini
ejemplo de seaside J
Saludos,
Leo
De:smalltalking@... [mailto:smalltalking@...] En nombre de Gastón Dall' Oglio Enviado el: Miércoles, 06 de Junio
de 2007 11:44 Para:smalltalking@... Asunto: Re: [objetos] Re: Reunion
smalltalking - Direccion, Mapa
Hola.
A mí tb me llegó el mapa. Si mirás en la lista no lo ves, solo ves que
había un adjunto, oprque para no oupar espacio en el grupo los adjuntos
no quedan (al menos eso tengo entendido), pero si son enviados a los
integragantes del grupo.
Por otro lado, buenísimo el mapa che, gracias. Una pregunta nomás, el
cole Capital-La Plata que tomamos para pasar por donde indicás es el que
va por Autopista o por Centenario?
Con respecto a los temas para la reunión, creo que los mas importantes
son los que se tiraron hace un tiempo, que nos dan una idea de que es
Smalltalking y su objeto, y los demás como digo alguien irán surgiendo
mientras se desarrolle la charla. En charlas posteriores se pueden
tratar de manera mas ordenada, con lecturas previas, materiales
preparados, etc. Si vamos con mucho equipaje ahora no vamos a poder
subir al cole :-P Es decir, creo que estaría buena una reunión mas
relajada, no tan técnica, para que quede espacio para charlar los temas
que surjan. Igual lo que sugirió Leo sobre Seaside me interesa
muchísimo, así que no estaría mal ver algo.
Saludos.
Sergio Fedi escribió:
>
> > Estuve chequeando en la lista en yahoo y veo que el mapa adjuntado
> no llego. Hay algun tipo de filtro?? Avisenme si uds lo pueden ver. Yo
> solo veo un recuadro debajo del cuerpo del mail que dice: Archivo
> adjunto(no guardado) plano.jpg
>
> A mi me llegó y lo pude ver.
>
>
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya! http://www.yahoo.com.ar/respuestas
__________ Información de NOD32, revisión 2314 (20070606) __________